Making a 3D action-adventure, need advice

Started by
6 comments, last by Serapth 12 years, 5 months ago
I made a topic previously about developing a 2D Zelda-style game, but since then, I've decided to go 3D. Choosing the right software to use for this is where I run into problems.

I've had two university courses of experience in C#, and one course that combined C and C++. Perhaps needless to say, but I much prefer working with C#. I'm feeling a bit lost right now, and am not sure if I need to learn more C++, learn an entirely different language like OpenGL, or what.

What kinds of software do I need in order to make this game? What already exists that would be great for this? I keep hearing about Unity, so I installed it and started to read the documentation. I got Blender for the graphics. Are there freeware programs that would be superior to these for my purposes? What about freeware programs that would cover other aspects of game creation? Are there any languages I really need to learn? And finally, what are the major steps that creating a game requires?
Advertisement
Disclaimer - I'm totally the wrong guy to help you out. I'm still extremely bad at these things. I might even get many of the terms wrong.

OpenGL isn't a language. I heard someone say it's a "specification" or something like that. I heard it's made for C++, but you can get "bindings" (i think) for other languages. The game "MineCraft" was made in Java and OpenGL. So it can be used with any language that has these bindings or whatever for it.

C++ is notoriously hard. It doesn't garbage collect, for example. You have to free up memory yourself.
One guy just told me that C++ isn't really worth getting into unless you need it, which you very well may, but you probably don't just yet. He said it's pretty much still in use simply as a habit - there weren't any realistic alternatives something like 20 years ago - but that's changed now with better computers. It's still good for really intensive programs like Operating Systems, and probably leading edge graphics, because doing your own memory management maximizes the speed of your programs. He said just stick with higher level languages, like C#. C# can be used on the XBox, so it's not terribly limited in graphics capabilities. You can dig down later, because it's nice to get into the base mechanics. Assembly is even harder than C++ but it'll teach you at the very lowest level so it's kind of cool to at least get how it works in theory.

Anyway, just work with what you have until you have it pretty well, then try something new until you have that pretty well too. It's not how I've been learning, but then again I'm still terrible at programming!


If your looking for software to help you make a 3d game, you need a 3d game Engine. That's like middleware that allows you to skip coding how triangles render on the screen.
Engine wise, Unity is pretty popular, powerful, and free. But it'll be rather confusing from the get go. You can use C++ for it.
Alternatively, check out XNA. That's the one you use with C#.

Personally, I'd want to learn by making my own engine one piece at a time, so I can figure out what each piece does. I've yet to get anywhere with this method however, so it's probably a terrible idea.
You would use OpenGL for this, or if your aiming for windows only, DirectX and C# will probably be easier for you.

If your looking for something easier, try Flixel in ActionScript3. That's the language that makes flash games. You can quickly make 2d games with it, and it's totally programming. No magic buttons. That Zelda game would be no problem in Flixel, once you know a little about AS3. ActionScript3 should be similar enough to C# to get you on track relatively quickly, but give you a little more insight into how things can be done differently. Might be enlightening to you as a programmer.


There are a lot of different kinds of programming languages, a lot are Object Oriented, but some aren't (like C). You should probably just stick with C# if you can use it at all. It's better to keep learning than to start over, but learning a new language will help you get things a bit quicker.


Anyway, I probably don't know what I'm talking about, but you can't say I didn't try my best to help! ;)
Ah, yes, thank you for correcting me about OpenGL. I'd just read that it wasn't a language, but managed to forget by the time I wrote the post.

I'm... aware of how difficult C++ is. In college, going from a nice, memory-managed language like C# to its similarly-named predecessors, which don't have garbage collection for non-standard types, was something of a pain, albeit genuinely interesting, as it actually makes one think more about how code interacts with RAM. Memory management was probably the least-vexing of the things I learned about C++ at school. The declaration and first implementation line of methods (and operators) is also a pain, whether or not anything is virtual or abstract (or overloaded). I have no qualms with learning more C++ if I need to, but C# is much easier to work with, and I'd rather stick with it if it would still suit my project well enough. I was also getting the impression that C++ is mainly used for historical purposes -- so thanks for reinforcing that impression. I suppose that speed and possibly portability would be reasons to choose it over C#, though. At the moment, however, I'm only concerned with the PC version of Windows, so I don't care about portability.

Assembly? I've dealt with it, and I think one of my courses could have been clearer about how it works. Still, it is easy enough to understand in theory -- you're right about that.

I've seen it emphasized in a few places on this board that if what I'm wanting to do is to get a game out, there's no shame in using pre-built engines. Well, getting a game out is what I'm looking to do. I guess I don't care about what all is involved in making a game "from scratch" -- not unless I can't find an appropriate engine for my game, that is. Until I hear of something better, I'll see if Unity suits my needs. It seems pretty cool, and the scripts can be written in C#, which is fine by me as long as I have some documentation for the included library files. I've read on here that it's better for 3D than XNA is -- complexity doesn't figure into it for me if that's the case.

Now, since I'd be using Unity and a program like Blender for the graphical assets, would I need to even touch OpenGL or DirectX (I'm making them sound like languages again...)?

As far as pre-built programs go, do I ultimately need anything more than Unity and Blender to put together a game? Someone else would take care of sound/music production, so I'd just be tying them (the audio) to in-game events -- I'm not seeing any reason why I would need to mess with independent audio programs. Not sure about programs that would do other things (whatever those things would be).

Thank you for the reply!

I made a topic previously about developing a 2D Zelda-style game, but since then, I've decided to go 3D. Choosing the right software to use for this is where I run into problems.

I've had two university courses of experience in C#, and one course that combined C and C++. Perhaps needless to say, but I much prefer working with C#. I'm feeling a bit lost right now, and am not sure if I need to learn more C++, learn an entirely different language like OpenGL, or what.

What kinds of software do I need in order to make this game? What already exists that would be great for this? I keep hearing about Unity, so I installed it and started to read the documentation. I got Blender for the graphics. Are there freeware programs that would be superior to these for my purposes? What about freeware programs that would cover other aspects of game creation? Are there any languages I really need to learn? And finally, what are the major steps that creating a game requires?


Read this for your programming questions and this for your 3D applications questions.


To directly address your questions, as was said in the other post, OpenGL is not a language and I personally wouldn't start with it. Blender is fine, a bit of a learning curve, but it will get you there. Combined with The GIMP, you can basically make art rivaling the big boys on a zero dollar budget.
Thanks, Seraph!

I guess I'll be going with GIMP, Wings3D, and Blender for graphics, and Unity for the multi-purpose engine. I'll be doing the actual coding/scripting with C# in the Visual C# Express IDE, and with XNA libraries. According to the site you linked me to, it sounds like these will be sufficient for non-mobile Windows development.

EDIT: So... I guess I can't use both Unity and XNA, is that right? While I've used the VCS Express IDE quite a bit, I guess I'll go with Mono so that Unity can compile all my C# code.
Just a quick edit to what was said in this thread.

I do not believe that Unity3d supports C++. It allows you to use a semi limited version of C# inside. Though C# still works inside, you have to talk to its engine langauge by passing scripts. Javascript | Boo (I think its called) is also useful inside there. Don't qoute me on it, but I have not really seen anyone using C++ inside of the Unity3D engine. You can however have C++ application interface with Unity3D and toolsets interact with Unity3D which are programmed in any language, just as long as it sends the right information to the engine.

http://unity3d.com/support/documentation/ScriptReference/index.html

Here is a quick overview to get you started.
I usually just give my 2 cents, but since most of the people I meet are stubborn I give a 1$ so my advice isn't lost via exchange rate.

Yea basically no matter how much C# or C++ you know, those have nothing to do with graphics. You have to go either DirectX, OpenGL, or use one of those other engines. I advise you learn DX/GL as using those other engines will get you a 3D game quicker, but will not get you to learn much about 3D graphics or how graphics cards are programmed and how they work. If your goal is to just push a game out then those engines will get you there faster. There is still a learning curve in trying to code a game in another engine.

NBA2K, Madden, Maneater, Killing Floor, Sims http://www.pawlowskipinball.com/pinballeternal


Thanks, Seraph!

I guess I'll be going with GIMP, Wings3D, and Blender for graphics, and Unity for the multi-purpose engine. I'll be doing the actual coding/scripting with C# in the Visual C# Express IDE, and with XNA libraries. According to the site you linked me to, it sounds like these will be sufficient for non-mobile Windows development.

EDIT: So... I guess I can't use both Unity and XNA, is that right? While I've used the VCS Express IDE quite a bit, I guess I'll go with Mono so that Unity can compile all my C# code.


Hi Spoothead,

Part of this is a bit off. XNA and Unity aren't really complementary technologies, they fullfill somewhat of the same task ( differently though ). Unity makes choosing which implementation of C# ( Mono and Microsoft's are the two versions of C# available ) moot, as it internally uses Mono. This is completely transparent to you as a developer though. Unfortunately, Unity does not allow you to use Visual Studio Express as an editor, you need the full version ( of Visual Studio ) for that. However, you really don't even need VS when working with Unity as it will provide it's own editor if you don't have VS.

Blender + Unity is a very good match for what you are trying to create.

This topic is closed to new replies.

Advertisement