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

Pages: 1-

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 17:45

Read SICP.

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!

Name: Anonymous 2013-07-18 18:40

>>3
C++
few tutorials

nice joke

what does the following C/C++ code do?
compM<ListM>()[ makePair[X,Y] | X<=list_with(1,2), guard[true],
          Y<=list_with(3,4), guard[ (Y %divides% X) %equal% 3 ] ] ]

Name: Anonymous 2013-07-18 18:49

Read OP please guys.

>>3
Nothing you wrote contributed to the thread's purpose.
1) I already know SDL.
2) I don't prefer to use a language other than C.
3) Setting up an IDE is irrelevant.
4) It's a 2D game.
5) Graphics and audio are irrelevant.

I hope the list format helps you from tl;dr'ing.

Name: Anonymous 2013-07-18 19:11

>>4
special keyword that halts the compilation and spits out a thousand errors

Name: Anonymous 2013-07-18 19:23


Anybody who plays videogames for the story should be given some books and a DVD player immediately. How subtle and complex can a narrative be when every plot point must be the protagonist shooting people? A videogame which is constantly and viscerally enjoyable and has literary merit is like a roller coaster which is exciting as it gets you to work on time. One of the few cinematic and literary qualities which videogames can lift is atmosphere. The best example of art in videogames is Shadow of the Colossus, which barely has a plot; you could probably write all of the dialogue on a beer mat. What it has is an immersive and unique atmosphere. Fallout 3 also has this, and New Vegas doesn't. The appeal of Fallout 3 was in running into the open wilderness to see what had become of Washington DC after the bombs fell : Tenpenny Tower, Paradise Falls, Republic of Dave, Little Lamplight. New Vegas on the other hand is deceptively linear. There are three vertical paths running from the bottom of the map to New Vegas, flanked by mountain ranges topped with invisible walls that prevent aimless wandering.

And your wandering has less reward. In Fallout 3 you could expect to run across mines, hotels and museums which had been turned into villages. In New Vegas you can expect to run across dull pre-war towns and villages, as according to Fallout lore this part of Nevada wasn't touched by the bombs. This means that New Vegas is a post-apocalyptic game set in the one part of the world that wasn't affected by the apocalypse. In Fallout 3 the vast majority of the former civilization has been over-run by mutants, in New Vegas it's mostly remained in human hands.

Name: Anonymous 2013-07-18 19:25

>>6
What doesn't do that in sepples?

Name: Anonymous 2013-07-18 19:31

This thread is now about rape.

Name: Anonymous 2013-07-18 19:48

Name: Designs are TODO.lists 2013-07-18 20:01

>>1,5
First read about Game Design, and design the game. It has nothing to do with programming, but writing the plan of what the game is, and what components you need to make it:
https://en.wikipedia.org/wiki/Game_design

Once you have mapped out what you need to accomplish, start making objectives, and how you can separate the work; i.e. while you work on the program code/engine, your artist draws the main worlds, the musician scores the main themes, your integrators make the demo for testing, etc..

Obviously I am implying that you make a repository for your work, for other to contribute if you want to get things done faster (unless you want to do it for yourself). Look at the Touhou projects as an example. They talk in IRC what they want to accomplish, the make a wiki page as a repository, and work on the game, from hundred of volunteers, you paid nothing for.

Above all, the game Design makes you focus on what needs to be accomplished, instead of looking at other details of some tool or library that might optimize your work, but ultimately distract you. Once you have a Beta product, then you can go back and fine tune your piece. Once you improve on your skill and knowledge, THEN make a newer update version, because it is optimized.

Name: Anonymous 2013-07-18 21:45

Your post is indeed TL;DR, usually that post length is reserved for the resident philosophers' shitposts.

1. A simple game will be anything but simple in the end.
2. Its an iterative process, you'll encounter flaws in the design and you'll just have to wing it. Nobody can be Will Wright on the first game.
3. C is relevant, but games are one of the few decent fits for the OO paradigm, plan in advance how you'll "do OO" in C. The Lua interpreter is in ANSI C, if you want to introduce scriptable objects down the road.

>>5
You should be glad /prog/ responds with anything other than Brainfuck one liners and ANDRU transcripts at all.

Name: Anonymous 2013-07-18 21:45

nice thread op
might i ask, what were the design flaws so far?

Name: Anonymous 2013-07-18 21:50

>going on stage to receive indie dev of the year award
>"I'd like to thank everyone w-who played Sidney's Smackdown..."
>sweating profusely
>I can see Miyamoto in the audience
>"Thanks game make fun innovation classic"
>strands of spaghetti slip from my pockets
>a woman with a microphone asks me what I plan to do next
>"SEQUEL MAKE FUN JUMPY GAME"
>Miyamoto rubs his forehead and shakes his head in disappointment
>my stomach starts grumbling as I fidget on stage and fumble the award, dropping it on my foot
>someone yells "you're a faggot"
>spaghetti bursts from my pockets
>I cum and start farting and shitting everywhere
>the force of the spaghetti and shit spewing from me launches me into the conference hall's ceiling, I flail about as I coat the audience in spaghetti shit cum
>the rafters break my bones and I crash to the floor
>Miyamoto walks up to my tattered remains and spits on my face
>I am forever a /prog/ammaker

Name: Anonymous 2013-07-18 21:51

>ebin
>/g/uotes
>/g/uotation marks

Name: Anonymous 2013-07-18 22:04

>>14
this could be beneficial, just make the game feature all those elements..

Name: Anonymous 2013-07-18 22:31

preferably towards the end of the game... so it's like an inside joke that nobody gets yet ^^

Name: Anonymous 2013-07-19 0:08

Thanks for the serious replies.

>>11
Yeah, I figure coming up with a solid game design before programming would help make things move more smoothly. I dunno, but it seems easiest when I have some code looking back at me as I continue with what design aspects naturally follow. I also don't believe in the formal design spec crap, I have a few papers laying around that I sketched out some ideas/visualizations on.
Btw isn't Touhou made by 1 person? Or are you talking about translations/fangames?

>>12
I was in a talkative mood for some reason. I wasn't really asking anything in OP to be honest, just wanted to hear what other people had to say about game development I guess.
The flaws that I encounter are fundamental ones, and naturally I would just find a workaround/alter the design somehow. But at some point I thought someone else must have been faced with the same problem I'm facing, and it just seems redundant thinking it all out.
And yeah, I already have a lot of objecty constructs. Structs and procedures are somewhat clumsy, though I don't think it's worth the overkill switch to classes.

>>13
The flaws I encountered before posting this thread was that of thinking ahead of the game's network protocol and management of the game's "state". I'm definitely going to make it support players "joining" the game in the middle of it, rather than forcing everyone to join before and start the game synchronized (Counter-Strike 1.6 vs StarCraft 1). So somehow I have to make it so that the "objects" (basically rects with velocity/position/length information), and "event" procedures are able to be sent to a joining player. Though there are objects and events that don't need to be sent, so I had to classify the objects and events as being "local" or "global", after which I found it hard to put it into the big picture. Probably doesn't make sense, but I would have to explain the game's design in detail, which I don't think many people are interested in.

Name: Anonymous 2013-07-19 0:26

me me me.

me me me me me me me me me me me, me me me me. me me me me me me me "me me".

me me me, me me me me me me me me, me me me me me me/me me, me me me. me me me me me me me me me, me.me. me me me me me me me me me me me me.

me me me me me me me me me me me me me me me, me me me me me me me me me me me me me, me me me me me me me me me me me me me me me me me me me me me. me me me me me me me me me me me.

me me me me me me me me me 2me me me, me me me me me me me me me me me me me. me me me me me me me me, me, me, me me me. me me me me 2me me me me me-me me. me me me me me me me me me me me-me me, me me me me me. me, me me me me me me me me me 3me me me me (me, me, me me me). me me me, me me me me 2me me me. me me me me me me me me me me me. me me me me me me me me me me me me me me me me, me, me me me me me me me me.

me me me me me; me me me me me me me me me me me me. me me me me me me me me me me me me me me me me me me me me86 me. me me me me me me me me-me me me me me.

me me me me me me me me me me-me me me me me me me me me me me me me me/me, me me me me me me me me me/me. me, me me me me me me me me me me, me me me me me me me me me me me me me me me. me me me me me me me me me.

me me me me me me, me me me me me me me me. me me me me me me me me me me me me. me me me me me me me me me me me me me me me. me me me me me me, me me me me me me me me me me-me me me? me me me me me me me me me me me me me me me me me me me. me me me me me me? me me me me me, me me me me me, me me me me me me me me. me me me me me me me me "me me me", me me me me "me" me me me me me me me "me me" me me me me. me me me me me me-me me me me me me me me? me me me me me me me me me me me me me, me me me me me me me me me me me me me me me me me me me me me. me me me me me me me me me me me me me me?

me. me me me me me me me me me me me, me me me me me me me me me me. me me me me me me me me me me me me me me me me. me me me me me/me me me me me me me, me me me me me me me.

Name: Anonymous 2013-07-19 0:34

>>19
Holy god damn nigger dicks floating across the sky, did you seriously just replace every fucking word of >>1 with the word `me'? On that fucking faggot YHWH's shitty name, this is comedy gold! If I had to guess how many times I read that shit it would definitely be over five! I mean, I'm going out of my fucking mind just thinking about the huge sweaty balls the size of a house belonging to the genius who could think something so fucking incredibly amazing! I'd blow my fucking grandpa to have a tenth of the awesome you just regaled us retarded faggots with, holy fuck! I fucking love you! I love your posts! Please, keep fucking posting!

Name: Anonymous 2013-07-19 0:41

>>20
I'm glad that you like it. I used perl in case you were wondering how it was done. I hope that you all follow and make funny things using textual substitution and copy paste.

Name: Anonymous 2013-07-19 0:49

>>20
Actually, OP already abuses MY and MYSELF a lot, as if anyone on anonymous board cares about him.

The general rule posting on teh internets: if you question concerns only yourself, then nobody cares.

Name: Anonymous 2013-07-19 1:16

>>22
Well I have a confession to make: I never actually read >>1. Never. I saw `making a game', then noticed how verbose it was, and skipped it, and went straight to shitposting in it. Even now I have absolutely no plan on reading it.

That in no way diminishes my privilege to post, understand?

Name: Anonymous 2013-07-19 1:34

>>23
I didn't read it either.

Name: Anonymous 2013-07-19 1:35

>>23
Yes onni-chan. I understand.

Name: Anonymous 2013-07-19 1:50

Only idiots read tl;dr posts.

Name: Anonymous 2013-07-19 5:59

Name: >>11 !8y25o1tqdI!Gzb/y9dMTJJSRtI 2013-07-19 9:03

>>18
Initially 1 person, then he got help. I believe on project 3 he got a buddy to help him, Project 7 he had lots of volunteers. But yeah I meant the fan made ones. Most things are never done alone. And if they leave, you can pick up their slack, and write your name to your commits.

But yeah, looking at code right now is a HUGE distraction. You need to concentrate on what you are trying to accomplish, the game. So once you have the design made (even if it is not the formal one you submit to companies), then you have clear objectives on what you should program for, and learn. Kinda like a craft or class project, the goal determines what tools and techniques you use. The network thing is a part of one of the objectives you need to include in the design, one you have to care after you have the engine made.

You are just feeling aimless because you have no clear goal outlined for one what the game is, which is why you need to write it down. Once you start learning how to discipline yourself with todo list and goals, you will feel more determined and focused. And when you finish an objective, you will feel actual accomplishment, maybe even fulfilment.

tl;dr Stop count the chickens before the eggs hatch, and start preparing the egg warmer and chicken coop.

PS
   If you want to continue talking, and ignore the haters, use a #hash#tag in the Name: field.

>>20,21
I know, isn't sed(1) awesome!

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