On Wed, May 9, 2012 at 4:07 PM, Ronaldo Nascimento <[email protected]> wrote: > Well played sir, yes I was a bit too hasty on the send button. > > I am specifically looking for resources to educate open source game > developers? > How to get started writing 2D graphics and such using open source > technologies.
I think you are going about this the wrong way. :) If you are really just looking for general information *about* graphics libraries you can just go to their website and read -- you know this, right? Sites like: http://qt-project.org/ http://www.gtk.org/ But the real question is, what is it that you want to ***do***? If your goal is something more than just acquiring knowledge for knowledge's own sake, then it stands to reason that you have some goal -- something you want to get out of your effort. Is it a game? Do you have a particular game in mind? What would the gameplay be like? What platforms (operating systems) would it run on? What kind of detail level are you looking for in the graphics -- something simple and retro, or top of the line? How many other people are you working with? All of these questions factor in. The other real question that is equally relevant is, what is your prior experience with programming and software engineering? If you have no experience there, then you shouldn't even be thinking about games at this point, you should first learn programming itself in a context-neutral sense. Pick up a language such as C++, Java or C#, master it, and then come back to gaming in a year or three. On the other hand, if you already have a lot of real programming experience, then you can start "technology shopping" (the decision-making process in which you determine what libraries and languages to use in your development) depending on what your goals are. I asked the goal-oriented questions in the previous paragraph. So if you're *not* technology shopping for some particular project, and just want general information, just google whatever it is you're interested in. If you *are* technology shopping for a particular project, then you need to start to think about how to match up your available resources, your pre-existing experience and your desired end product to existing libraries. Again, google can be extremely helpful there, but you need to consider *in context* what the specific technology will do for you, and what its limitations and benefits are. For example: Scenario 1: You are just one developer with no team, with prior experience in Java, and you want to start writing a state-of-the-art 3D massively multiplayer game in C, depending only on X11 and OpenGL. The technologies in this scenario do not match well at all with the resources available, because C, X11 and OpenGL are *extremely* low-level APIs that are hard to learn and require a large and experienced team to base a functional application off of them. Also, you are not leveraging existing open source engines or libraries in this scenario, which can make your development needlessly complicated. Scenario 2: You have assembled a small team of 5 full-time developer contributors, all whom have prior C++ experience. You want to write a game that will run on any computer whether it has working 3D hardware or not, so you choose to go with 2D-only APIs such as GTK without OpenGL. Furthermore, you discover a specific open source SDK for writing games using the Qt4 API, and your team decides to use that. In this scenario, the technologies you've chosen match well with your team's experiences (C++), and you are not choosing a very ambitious target of a graphics-intensive AAA title, which is a more reasonable goal for a small team. I am glossing over a tremendous amount of detail here and haven't even scratched the surface on issues such as licensing, version control, deployment, compatibility, portability, marketing, and on and on. Chances are that, if you are not interested in learning / tackling all of these issues, then either you are just looking for information to write a paper for a homework assignment for school, or else you are just setting up an project's effort for failure. So if you are undertaking a project (not a homework assignment) and you want to be successful, you should consider all of these issues at once when making decisions about which technologies to choose and how to evaluate them. And remember, there *is* a choice. In fact, for any particular piece of functionality, there are dozens of possible ways you could do it, and dozens of libraries that support something like what you want. If you were under the impression that there is just one standard way to do 2D graphics on the free desktop, you need to get that out of your head ASAP. From memory, I can list the following technologies, all of which allow some type of general purpose 2D graphics API: Clutter, GTK, wxWidgets, Qt, Juce, Motif, X11, Swing, SWT, Mono, OpenGL, OpenCL, SDL, Cairo, FLTK, EFL, Cocoa (Mac), Win32 (Windows), MFC (Windows), ATL (Windows), WinForms (.NET), *and the list goes on*. I'm sure I haven't even listed 20% of the possibilities. If this is overwhelming to you, that's because it *is* overwhelming. Managing complexity in large-scale software development (or even medium-scale) is something that not a great many people can really do well. That's not to say you can't learn, but based on the little you've written so far, it seems like you are not really there yet. You'll develop a knack for it over many years, and much of your experience can come from learning by example during jobs and by collaborating with others on open source projects. I would suggest that you start by trying to be an "individual contributor" (just putting in your own bit of code into a large project, allowing others to make the big architectural decisions) to either an open source project or a company project on the job. While you're an individual contributor, learn as much as you can about the decision-making processes of those at the top. This is a great way to start. If you had this type of wisdom coming into the present, your original question might've been formulated as something like, "How do I swap buffers in double-buffered mode when manually painting on a widget in Qt?" -- as you can see, this is a very specific technical question about a specific chosen technology. *This* is the kind of thing that mailing lists can help you with. That I'm helping you with a *much* more general question is, frankly, unusual and will probably not happen very often if you continue to ask general questions on MLs. If all of this is new to you, I would start with programming basics, then move on to contributing to large projects, and then maybe you can start to inquire about 2D graphics technologies and researching the pros and cons of each. And just in case I've totally misread you and you're already a highly skilled programmer and just looking to see a list of the options available on Linux, you could've easily found that on google too, but here you go: http://en.wikipedia.org/wiki/List_of_widget_toolkits All of the widget toolkits there should be able to do generic "2D graphics", almost without exception. HTH, Sean > Thanks > > > On Mon, May 7, 2012 at 6:14 PM, Sean McNamara <[email protected]> wrote: >> >> Hi, >> >> On Mon, May 7, 2012 at 10:32 AM, Ronaldo Nascimento <[email protected]> >> wrote: >> > the subject says it all >> >> Does it? I don't know what it says and I read it several times. Are you: >> >> *Inquiring about known resources to educate open source game developers? >> *Inquiring about known game engines that open source game developers can >> use? >> *Looking for people (sometimes called "resources" in a business sense) >> who can help you with an open source game development effort? >> *Offering to provide us some resources for open source game developers? >> *And on and on... >> >> We don't have an automated call screening solution here like Toll-Free >> tech support lines, so if you have a specific topic you'd like to >> discuss or a particular question you'd like to raise, please feel free >> to do so and those who are interested will chip in. The good news for >> you however is that, like Toll-Free phone lines, our advice and >> assistance is also, usually, free. So don't be shy; tell us what you >> really want! :) >> >> Best Regards, >> >> Sean >> >> > >> > >> > -- >> > Ronaldo Nascimento =][= >> > >> > _______________________________________________ >> > Mailing list: https://launchpad.net/~ubuntu-gaming >> > Post to : [email protected] >> > Unsubscribe : https://launchpad.net/~ubuntu-gaming >> > More help : https://help.launchpad.net/ListHelp >> > >> >> _______________________________________________ >> Mailing list: https://launchpad.net/~ubuntu-gaming >> Post to : [email protected] >> Unsubscribe : https://launchpad.net/~ubuntu-gaming >> More help : https://help.launchpad.net/ListHelp > > > > > -- > Ronaldo Nascimento =][= > > _______________________________________________ > Mailing list: https://launchpad.net/~ubuntu-gaming > Post to : [email protected] > Unsubscribe : https://launchpad.net/~ubuntu-gaming > More help : https://help.launchpad.net/ListHelp > _______________________________________________ Mailing list: https://launchpad.net/~ubuntu-gaming Post to : [email protected] Unsubscribe : https://launchpad.net/~ubuntu-gaming More help : https://help.launchpad.net/ListHelp

