Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Making a Game

Name: Anonymous 2013-07-18 17:41

Srs thread plz.

I've been meaning to make a game for a while now, tentatively as a hobby. For convenience it will be on the "PC platform".

Although of course, technically game development is only half about programming, the other half being the design/creative aspect, which I understand. Naturally I care about creating the underlying program first, e.g. with moving rectangles that I can later put graphics on top of.

My experience with programming and learning about computers in general has been one of solitude, and I can hardly see myself working with another person on a game, but at the same time I feel like there's too much reinvention of the wheel going on by doing everything myself. Therefore I'm making this post as a somewhat general advice thread.

For now I plan for it to be a 2D platformer game, as it seems to be simple yet not boringly simple to expand upon. Inspiration comes from games such as Cave Story, MapleStory, IWBTG, Super Smash Brothers. There's something about the 2D platformer that fits real-time simulation. The birds eye view style seems to be best for story-based games, which I'm not much into. Although, I don't dislike the thoroughness of simulation that a 3D game can provide (RuneScape, OoT, First Person Shooters). But for now, the relative simplicity of 2D will do. The game also must have a networking feature for interpersonal gameplay. It seems that nowadays it's simply a feature that can't be ignored in terms of availability, relativity, and the amount it adds to gameplay variation.

I'm not a complete noob; it's been somewhat of an aspiration of mine for several years now. I'm fluent in C and have a basic understanding of the compilation process and a general understanding of the x86 architecture. I also have some experience with the UNIX-like environment if that matters.

The reason why I don't like Java or other high-level languages is that C seems to have the most native support for APIs/libraries, and I feel that it gives the most flexibility/control. That, and language constructs above C seem to be somewhat extraneous, though I do admit things like lambda expressions work really well where they work best. C seems to be the best language for practicality.

I have some code written already, and some tentative thoughts on the underlying engine. But I find myself starting over and over from some design flaw. At some point I thought that I'm simply doing it wrong for starting from scratch. To those experienced in the field, do you think it's worth coding a game in low-level C nowadays? I know there are libraries such as Allegro and SDL that take care of the implementation side of things. But perhaps my thinking is old? Being such a broad topic, and of somewhat universal interest, there's alot out there and I acknowledge that. By now there's a myriad of ways to "make a game", ranging from using an "engine" or some other high level environment to "writing code" of a particular language. Should things be done through high-level game engines or is C still relevant? Because it's an unavoidable fact that not everything goes on in the CPU, in particular things like graphics is done on the graphics chip which we don't necessarily program except in cases like OpenGL. Perhaps it's better in the long run to use some established game development package?

Anyway. Not even sure if I'll get any meaningful responses on here, probably because I don't know exactly what I'm asking for. At the very least I'd appreciate some pointers to people who know what they're talking about. The typical google for forums/IRC shit isn't quite what I want, but maybe I wish for too much.

Name: Anonymous 2013-07-18 18:09

Use SDL and C++. It's dead simple with the tools they have nowadays -- practically anyone can do it! If you can't figure it out by reading a few tutorials, then game design isn't in your blood.

 I recommend starting off by downloaded the DirectX SDK, the Windows' SDK, and Microsoft's free Visual Studios Express (but if you have a school email account, you can get VS Pro for free from dreamspark). Next, download SDL and set up the library directories in VS (there are plenty of tutorials on this). Start a blank solution and then add several C++ DLL projects. You'll need one for things like AI, one for your graphics engine, one for the audio engine, one for the physics engine, one for input, one for file interactions (not necessary to be seperate, but good for abstraction), one for interface, one for internet interactions, one for dynamic world generation, etc....

 After that, you need to add a plain Win32 project that will link all the there libraries that you just made together. Be sure to put the build order in proper order, or you will have circular dependencies! Microsoft puts handy comments in the code that it generates along the lines of ``Add your code here'' that are pretty hard to miss. This is where you need to add your code.

 But before you do that, you need to include a bunch of files from the standard library. For starters, you'll need to be sure that Windows.h is always in your precompiled header file (named Stdafx.h) -- it's a rather long file, so you should just include it there, then include Stdafx.h from everything else. Boost and the standard template library are great ways to minimize the time you waste in tedious function about memory management, so be sure to include those in Stdafx.h and use their functionality at every opportunity as well. Be sure to look for online tutorials if you run into any trouble for this!

 The next thing you need to do is to add classes to your projects. For instance, your AI project will need many different classes to manage all the different NPCs. Every NPC will have it's own object (which is a what a class is called when the program is running), which means that every NPC can be unique. You use the Add class tool in VS to add classes to projects. Your AI projects like NPC_Manager, NPC, Enemy, etc.... Within each class you add variables that the class can access. You will add numbers in the classes for things like health and text for things like names. Although you only have one class, each NPC will have it's own little copy of that class, called an object, when running. This subject is a little tricky and you will probably need help from the good people at StackOverflow to debug this.

 But enough program for now -- let's talk about graphics! You can either pay several hundred dollars for a copy of PhotoShop, or you can use free programs like GIMP. The problem with GIMP is that, because it is licensed under the GPL, everything made with it is licensed under the GPL as well, which means that the image legally belongs to the GIMP project and you can never sell it. For this reason, I find it best to just buy PhotoShop. You can find plenty online about how to make images with PhotoShop.

 For 3D Models, the absolute best program to use for this is Maya. It cost several thousand dollars, but it well worth it. The free alternative, Blender, not only suffers from the same licensing problem as the GIMP, but has a keyboard-only interface, making it hard to use.

 It is very difficult to make proper sounds without a large sound studio. For this reason, it is probably just easier to take parts of the sound from other projects and use them. This is called `sampling' and the right to do it is protected by law. You must, however, edit it a little, or it isn't sampling, it's just copying.

 I wish you luck on your journey to becoming a game designer!

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List