Making a game from scratch

Started by
9 comments, last by dsm1891 11 years, 1 month ago

Hi,

Firstly i would like to say hi to you all, i have been silently stalking this website for a while now, and found many interesting articles and topics.

I am a 2nd year Bsc Computer Game Development student (about to go into 3rd year come September), and for our dissertation we will be have to make a game (in a group), the scope is pretty open, we are able to use any engine, no theme, any genre. I got the go ahead from my lectures to create my own 2D game/game engine from scratch (although i will be using SOME middleware such as FMOD). I am really excited to do this project, but I am slightly worried, from what i have heard is that most, even 2D games, take about 2+ years to make. I understand the more complex the game, the longer the development. Am I right to be concerned with the amount of work?

Just a little information about the project and a small bio about myself, We will be starting it in June/early July leaving a year to complete it, I will be the main programmer of the project, although others in my group also have programming experience. The language of choice is C++ (although I am proficient in java too). We will be using DirectX9 (because that's all the books on 2D engines I could find did) but I would prefer to use openGL because of the cross-platform-ey-nuss (that’s not a word is it?) (can can't seem to find any good books on the subject, let alone, a good section on 2D graphics, if anyone knows any please can you leave a link? thanks). We also have access to quite a lot of industry standard software (thanks to the uni).

I have also seen a few posts on this forum saying "make a simple game such as pong first"; I have made a few of these simple games, including asteroids, pong, minesweeper and a nifty particle system.

We will be using Scrum (using Jira to track the sprints), visual studio 12 pro, and for a math's library, its looking like XNA MATH is the direction we are going in

We are only in concept stage at the moment, so many things can change.

Also does anyone advice towards what genre to stay away from, we have a concept (which we all REALLY like) for a RTS game but the IA of an RTS kind of scares me (although we do, do an advance AI module next year), but I'm sure we/i can work something out.

Also does anyone have any advice about the order of development of the game engine? I would assume, from the books i have read, it would go something like:

  1. Some Graphical output
  2. Input
  3. Level editor (i know there are some free ones online, which we might use)
  4. [Some awesome mechanic]
  5. More advance graphical (lighting, Fog of War etc)
  6. Polish input / mechanics

No doubt I am forgetting something, and will run into roadblocks, but would like to get them ironed out ASAP. Does anybody have any alterations to the order/ any advice?

Many thanks,

any answers will be appreciated.

TL;DR

Any advice on making a game engine?

Mobile Developer at PawPrint Games ltd.

(Not "mobile" as in I move around a lot, but as in phones, mobile phone developer)

(Although I am mobile. no, not as in a babies mobile, I move from place to place)

(Not "place" as in fish, but location.)

Advertisement

I have also seen a few posts on this forum saying "make a simple game such as pong first"; I have made a few of these simple games, including asteroids, pong, minesweeper and a nifty particle system.

If you've made some simple games already you should have enough of an idea of the kind of challenges and solutions you should be anticipating in order to make a generic engine. If you don't then I suggest you make some more 2D games of increasing complexity until you feel confident that you can tie the common threads of each game into something more generic and reusable.

I personally wouldn't do something like this for a dissertation project as there's easier projects that don't have as much uncertainty and potential to blow up in your face. From my experience (and I walked away with a 1st Class Hons), choosing something simpler with more "wow" factor that you know you could finish in time and to spec is a much safer bet than an ambiguous and more problematic project as a 2D engine.

I have also seen a few posts on this forum saying "make a simple game such as pong first"; I have made a few of these simple games, including asteroids, pong, minesweeper and a nifty particle system.

If you've made some simple games already you should have enough of an idea of the kind of challenges and solutions you should be anticipating in order to make a generic engine. If you don't then I suggest you make some more 2D games of increasing complexity until you feel confident that you can tie the common threads of each game into something more generic and reusable.

I personally wouldn't do something like this for a dissertation project as there's easier projects that don't have as much uncertainty and potential to blow up in your face. From my experience (and I walked away with a 1st Class Hons), choosing something simpler with more "wow" factor that you know you could finish in time and to spec is a much safer bet than an ambiguous and more problematic project as a 2D engine.

Hey,

Thanks for your reply. From what i have learnt from those simple games, i find i can easly transfair accross, i just wanted to step carefully :) just so the project didnt "blow up in our faces". I too am heading for a 1st, and i am confident i can do this project :). I appreciate your advice, but i have always been the ambisous sort, thus why i wanted to do this.

we are aware of the risk, but as i said, we really want to do this project

thanks :)

Mobile Developer at PawPrint Games ltd.

(Not "mobile" as in I move around a lot, but as in phones, mobile phone developer)

(Although I am mobile. no, not as in a babies mobile, I move from place to place)

(Not "place" as in fish, but location.)

Also does anyone advice towards what genre to stay away from, we have a concept (which we all REALLY like) for a RTS game but the IA of an RTS kind of scares me (although we do, do an advance AI module next year), but I'm sure we/i can work something out.

Developing nice AI is a pretty big job and also puts time pressure on you to finalize game mechanics early so the AI tuning can begin. Either you lose a lot of design iteration opportunity, or you are likely to end up with a half-baked AI. That's why my gut feeling says to avoid that. But maybe your concept would be suitable for a multiplayer-only RTS? Coming up with a basic multiplayer engine design is also a bit of work, but it shouldn't be as big of a roadblock as AI in a single-player only game could be. And also unlike with the AI, you can choose to dodge most of that work and mitigate risk by using an existing engine that comes with network functionality.

Also does anyone advice towards what genre to stay away from, we have a concept (which we all REALLY like) for a RTS game but the IA of an RTS kind of scares me (although we do, do an advance AI module next year), but I'm sure we/i can work something out.

Developing nice AI is a pretty big job and also puts time pressure on you to finalize game mechanics early so the AI tuning can begin. Either you lose a lot of design iteration opportunity, or you are likely to end up with a half-baked AI. That's why my gut feeling says to avoid that. But maybe your concept would be suitable for a multiplayer-only RTS? Coming up with a basic multiplayer engine design is also a bit of work, but it shouldn't be as big of a roadblock as AI in a single-player only game could be. And also unlike with the AI, you can choose to dodge most of that work and mitigate risk by using an existing engine that comes with network functionality.

Hey thanks for the reply,

Yeah, i dont want to come up with some half backed AI. When we where coming up with the idea (of the RTS) we realised it was perfect for multiplayer, though we would like some story, designs are yet to be finalised. But having it multiplayer are a strong possibility.

Thanks again :)

Mobile Developer at PawPrint Games ltd.

(Not "mobile" as in I move around a lot, but as in phones, mobile phone developer)

(Although I am mobile. no, not as in a babies mobile, I move from place to place)

(Not "place" as in fish, but location.)

Also does anyone advice towards what genre to stay away from, we have a concept (which we all REALLY like) for a RTS game but the IA of an RTS kind of scares me (although we do, do an advance AI module next year), but I'm sure we/i can work something out.

Also does anyone have any advice about the order of development of the game engine? I would assume, from the books i have read, it would go something like:

  1. Some Graphical output
  2. Input
  3. Level editor (i know there are some free ones online, which we might use)
  4. [Some awesome mechanic]
  5. More advance graphical (lighting, Fog of War etc)
  6. Polish input / mechanics

The real question is "why from scratch"? There are a number of things in this list which can be described in two pieces: the low level and the high level. Take input for example, there is the low level bit of just detecting things like the mouse, keyboard, joysticks/gamepads and figuring out what buttons are available and all that. (I.e. does the mouse have 3 or more buttons, a scroll wheel, how many axis' does the joystick present, number of buttons, pov hat etc etc etc and a few more etc.) Then there is the high level of using the input, hooking it to your game, mapping controls to various bits of the game from the divergent set of input devices etc. Having done both levels a couple times, I can pretty much say that the low level nitpicks are something you should seriously consider avoiding by using an existing library such as OIS. This leaves you with plenty of discussion space in terms of how you map controls into the game and complexities of making input feel good for the user but free's you from the low level boring details which I seriously doubt you will be wanting to talk about. (Not to mention that OIS allows cross platform support which is an absolute nightmare for input devices sometimes.)

So, given this explanation of my thinking, let me break down your list a bit more:

  • Environment: VC, CodeBlocks, Eclipse, Cross platform, other?
  • Intended work flow: agile, tdd, freeform? This can modify your environment such as requiring work involving setting up for unit testing and such.
  • Math library. An overlooked item, math is the basis to any game and a good math library is critical from day one. Even with a 2D game you probably want a base minimum of Vector, Matrix and simple line, ray, circle/sphere, plane/halfspace concepts with some intercepts and containment functionality at least planned for. NOTE: I'm an absolute nitpicker about math libraries, I've worked with some which just added things as required and it almost always turns into a mess of massively monolithic hair brained inconsistent design with a mix of left and right handed concepts which end up causing all sorts of problems later on. I'm actually planning out a math library for the fourth part of the series about build environment and tdd. (Here)
  • Low level input. I.e. I suggest OIS or another open source library to avoid the details.
  • Low leve 'graphics' though I consider this just getting a window up on screen and the 'devices' attached properly. As with input, I would suggest a library such as Glfw or SlimDx and avoid the nit picks.
  • Integration with the sound library, you mentioned FMod.
  • At this point write something really simple to get a first pass test/integration. I.e. an asteroids style ship with borders such that you thrust around, it plays sound, hit a border it bounces and plays sound. You end up using all the above pieces for this and know if you have it setup.

I could keep breaking this up but getting this far is a very solid milestone. You are likely to find all sorts of difficulties getting to this point. Not to mention that a good solid and consistent math library should take at least a day or two, if not more if you consider potentially wanting SIMD support for extra speed. (Simd is not something you can easily bolt on later, make the decision up front.)

P.S. I reread this, guess I'm just a little bit negative about prior math libraries I've worked with, ya think? smile.png And of course the editor decided to add in a bunch of stuff.. Will try to fix it..

some really usful stuff

Hey thanks smile.png

Lots of those things have been decided (although bare in mind things can change),

We are using SCRUM (using JIRA to track our sprints, burndowns etc), most likley using Visual Studio 2012 Professional ( we get it free via our uni), I was planning on using XNA Math Library,

Thanks for your words, ill take it under my wing smile.png

Mobile Developer at PawPrint Games ltd.

(Not "mobile" as in I move around a lot, but as in phones, mobile phone developer)

(Although I am mobile. no, not as in a babies mobile, I move from place to place)

(Not "place" as in fish, but location.)

some really usful stuff

Hey thanks smile.png

Lots of those things have been decided (although bare in mind things can change),

We are using SCRUM (using JIRA to track our sprints, burndowns etc), most likley using Visual Studio 2012 Professional ( we get it free via our uni), I was planning on using XNA Math Library,

Thanks for your words, ill take it under my wing smile.png

Ah good, you have more of a plan than the outline suggested. :) You can never know for sure when folks post this sort of thing in the for beginners forum so I often get pedantic and beat on the initial bits that get glossed over so often. Sorry if it was a bit too simplistic for you, though I stand by avoiding the low level stuff if possible.

The XNA math library is a good start but it still leaves some items to add. Last I looked it didn't include a lot of intersection/containment functionality for instance so having a plan on how to integrate expansions is a good idea to consider. Of course, being the xplat person that I am, just want to point out the obvious, you are stuck on WIndows/Xbox with that unless you eventually wrap and replace it on other platforms.

So moving into real game related, assuming the RTS basis. What will the map representation be? Even with a 2D engine you can do things like Total Annihilation with the 3D map simply represented as 2D. Then there is the underlying tile versus pathing versus collision detection etc which is often multiresolution. What I mean by multiresolution is that you can place buildings on the map at a finer grain than the "tiles" which the map is made up of and those finer 'wixels' as we called them on an RTS I worked on (wide pixels) formed the basis of path finding with passable/impassible. Then you have unit collisions and the possibility that a big unit can't move through areas that smaller units can so you need 'wide' path detection. (I found a neat and easy cheat for that one.)

I bring up the map bit since folks I know that worked on TA mentioned the entire game started with the map and multiple iterations of working almost purely with it work before the "game" was really put on top of it. Of course they were fighting bigger issues at the time such as trying to keep memory down to a minimum, dealing with pallets and older issues you can mostly ignore.

Figured I'd point this out since in an RTS, the map is a bit more complicated than it may appear. :)

words

yeah sorry, i meant to put that in the italic bit but forgot, ill update now. I didnt really see anyother forum that this could go in, but hey-ho.

Being limited to xbox/windows doesnt end at XML Math, in my orignal post, i am (most likely) using direct x 9. Not because i hate openGL but because there seems to be a lack of books that cover 2D graphics (well, ive glanced at some that skimmed it, pretty much just "this is how you put a triangle on the screen").

We where going for Age of empires 1 look (but not the same theme, art style, etc). I was just planning on cheating a bit, just polling if the tile was populated with a building (i.e. impassible). I also thought about something like what you described, but never really explored it, I'll give it a thought :)

Thanks

Mobile Developer at PawPrint Games ltd.

(Not "mobile" as in I move around a lot, but as in phones, mobile phone developer)

(Although I am mobile. no, not as in a babies mobile, I move from place to place)

(Not "place" as in fish, but location.)

i have heard is that most, even 2D games, take about 2+ years to make. I understand the more complex the game, the longer the development. Am I right to be concerned with the amount of work?

This really depends on how many hours per day you will work and how many problems you run into.

You will save a lot of time sitting in front of the computer by spending a decent amount of time with a pen and notebook planning everything thoroughly. If you can target possible bugs and solutions before development begins you will have a better time programming and some good feeling "aha!" moments.

I have read that people say they can complete the bulk of their code in a few months and then spend almost a year or two afterwards tweaking everything to be perfect. A good planning stage will help. Try to tackle everything you can think of.

How many people are in your group? Splitting up coding/artwork effectively can really help. A big group can be both a blessing but also a headache when disagreements arise.

Stay gold, Pony Boy.

This topic is closed to new replies.

Advertisement