Sunday, January 9, 2011

When learning, nothing is better than practice

A little introduction:

I'm 25, and going to this private french school, CreaJeux, which begins in october. I will be learning mostly game programming, something I wanted to do a long time ago, since the day I wondered how were 3d graphics working on my playstation, when I was 14 or so.

I'm very eager and impatient to begin, and I can't think on anything else (I'm bored), I feel like I'm wasting my time doing nothing, and I wanted to just practice on something during my spare-time, whatever it is.

I'm not a beginner in C/C++, I know how to program, but I didn't make a lot of stuff excepy a little tetris-like with pygame: I just want to make something in 3D, even if it awful and plain ugly, non-accelerated or whatever.

Isn't there anything else than open source 3D engines like irrlicht, panda3d or ogre3d to start something ? Isn't there some game dedicated to modding or dedicated to educate begginners ? Or some projects or practices for begginners like me ? Even simple and ugly 3D seems hard to come by...

  • I recommend you grab Blender and the free version of Unity. Blender will let you make 3D models (ugly or pretty) and Unity is a great development environment for simple 3D. It isn't entirely beginner-friendly, but there are a bunch of great tutorials out there, and with some initiative you should be able to get started building stuff.

    Alternately, you could try making levels for a game like Half-Life 2, which has a well-developed modding community. If that seems too intimidating, you could start playing with a game like Minecraft, which is partly designed around building simple 3D environments.

    Ricket : Minecraft doesn't really teach you anything about 3D game development. But I agree, if you want to learn by modding, try the Source engine; if you want to start from scratch, stand on the shoulders of the Unity giant.
    jokoon : I prefer something more DIY, and about blender, why not, but I want to program something... I'm lazy, but I want to do it myself, somewhat I'm contradicting myself, but whatever I'm a stubborn mozfkr.
    Gregory Weir : Programming your own 3D modelling environment is reinventing the wheel. Use Blender or another modelling program to make your models, and save your programming hours for the actual game.
    jokoon : I didn't mean to invent my own 3d modeling environment, I just have to learn how an 3D model file is made... I just meant that I should make an application that doesn't use models at all, just plain stupid cubes or spheres instead of monster and characters. Since I'm learning, why bother ? I just want to jump to the essential, the look doesn't matter at all, since it's usable.
    Gregory Weir : Then Unity would be great, as it can do stupid cubes and spheres out of the box.
  • For modding: look up an editor and try out a few and see what they can do. Here is a good site to get you started, it has tutorials, editors list, a good community that would give you feedback on your work: http://www.moddb.com/

    For 3D programming: start with a graphics API (OpenGL or DirectX) whatever you fancy. Personally i recommend OpenGL along with this book that will take you through the basics to advance graphics.

    If you want to become a game programmer then you should reconsider your position on Ogre3D/Irrlicht or any other engines alike. Sure making a game is easier with some tools, however making good, original games comes from hard-work, strong organization skills and discipline. I'm not trying to pull you down or insinuate that game programming is a monstrous horrendous task that you can't master, just want to underline that it isn't the sum of a few clicks.

    From Cristina
  • I'm not quite sure what you're looking for. If you want to master the 3d aspect but are comfortable with C++ you could take any DirectX SDK sample and start modifying it until it becomes something game-like. Set targets and set out to implement them. Take a sample that loads and shows a model, take a sample that reads the joypad and combine them so you can move the model around. Add in animation, sound, see if you can come up with some challenge and you have a first game.
    If you want to delve more in the game-dev aspect and don't want to be bothered with 3D coding you could consider looking into Source engine mods.
    If you want to look into more isolated aspects of game dev, hmmm, then I guess you'd have to research subtopics and use an existing environment. Unity might work, it's not C++, but the concept translate well.

    jokoon : mmmrgbl I have a mac :/ Still can use windows but meh. I don't really know if the Source engine scales well to any game type, looking at alien swarm I would say yes, but I'm not really sure... About unity, the platform seems too directed, I don't like it :x I still wonder about a UDK vs OGRE3d vs irrlicht vs Unity vs panda3d...
    Kaj : Well, with UDK you won't be coding in C++, as far as I'm aware? As for Ogre vs Unity, it depends what you want to achieve. Unity will allow you to focus on game mechanics (but if you're so inclined you can still do low level things, you can render your models manually, create shaders, read models yourself) where as Ogre will need more work on support systems. So it depends, what do you want to learn/experiment with? In the end, programming is programming and the language is a mere detail, the mindset and knowledge are universal.
    Kaj : If you have a MAC then the same applies, just take any XCode sample and start modifying it. Also, in game dev, the right attitude is, "I'll crack it", and the 'meh I don't know.....' is where many people get stranded. I think you're kinda hitting this bump as we speak and I advise you to put doubts aside and just do something, *anything* is better than being indecisive. Even using the wrong engine will teach you something.
    From Kaj
  • I guess it really depends on what exactly your goal is. Are you trying to do a quick little game before you get to school? or are you interested in really learning how to make games and become a "game programmer"? If it's the former, then definitely check out some of the popular free/open source engines, but remember that some of them (like Ogre3d) are actually just rendering engines, and will help you get things on the screen, but won't help you do a whole lot else. These rendering engines provide a whole bunch of more advanced rendering features that a small "learning project" doesn't really need, but they add substantial complexity because of it.

    As an example, if you're just trying to learn the basics of 3d game programming you're probably going to be less interested in a having a robust material/shader system than you are having basic collision detection and response.

    If you are more interested in becoming a game programmer and becoming good at it, I would recommend not using any of the popular engines and instead start writing your own. It's going to be slow, ugly, and probably just plain bad (mine was), but you'll learn an immense amount. Go download some samples for your graphics API of choice, read some tutorials, and start with the basics. Get one object on screen, then multiple objects, then try and get them to collide with each other. Add layers of abstraction, add features, rinse and repeat. You'll learn something with every iteration and you'll accumulate far more knowledge than if you let someone else do the hard bits for you. You'll also get a ton of great code samples and demo pieces to show potential employers (if you choose to go that route).

    As the title of your question says, "nothing is better than practice".

    jokoon : Thanks, but what tuts ? I don't really know a tutorial about making an ugly 3d engine...
    RetMon : I hesitate to recommend a particular site or tutorial since I haven't really kept up with them recently. I notice http://gamedev.stackexchange.com/questions/1128/what-is-the-best-way-to-learn-open-gl was linked in your question, so I would recommend checking that out.
    From RetMon

0 comments:

Post a Comment