Skip to Content
 

How to DESIGN a Video Game

18 replies [Last post]
questccg
questccg's picture
Offline
Joined: 04/16/2011

Okay so by the title, you must be thinking that I will reveal detailed secrets as to HOW Video Games are designed, right?!

WRONG!

What I am looking for is a PERSON, could be a programmer, that might be able to help me "DOCUMENT" a Video Game.

Why "document"? Well I have a background in Software R&D and I know that when you write software, you have DESIGN artifacts that more or less describe the entities and their relationships WITHOUT any code...

Basically you create your entities and relationships to have a view of the objects that will be used in your video game. Afterwards comes the programming (and testing, etc.)

However I think in most instances if I had a DESIGN DOCUMENT, I would probably be able to pretty much code the video game myself. I have been researching the matter and I have found some good toolkits to help. It is a 2D game, so it will be much simpler to implement than an FPS (as an example).

So my question still stands: "Where do you find someone to help DESIGN (and document) a Video Game???"

larienna
larienna's picture
Offline
Joined: 07/28/2008
You want to know how you

You want to know how you could document the code of a game so that other programmers that has access to the code knows what it means?

Or you want to document the game so that the players knows how to play the game?

In the first situation, why would you want to do that. If's only for understanding your own code, inline comments in the code like javadoc are sufficient. Unless you are making some open source code for others to use, in that case you need some sort of tutorial or training.

If it is user documentation, it should look similar to a board game rule book. Some sections will slightly differ.

DifferentName
DifferentName's picture
Offline
Joined: 09/08/2013
We don't need no stinking documents

I'm finishing up a video game, and I never made a design document for it (I'll make a separate thread with details on my game soon). Sure, I scribbled tons of ideas and brainstorming in my sketchbook, so I guess you could call that a design document if you want? I imagine a more formal design document would be more important for a team, but not if you're programming it yourself.

Maybe my programming suffered a bit by the lack of organization, but I don't think I knew enough about the programming challenges I would encounter to have done much good with a more organized document. Sometimes you just gotta get in there and start coding and trying things out, to figure out what's fun, and adjust the game as you go. Being a designer + programmer gives you that kind of flexibility.

*Edit: What kind of game is it? I wonder if that makes a difference. Mine is fast paced about fast reaction time. I imagine a turn based and/or strategy game may need more organized planning?

TreffnonX
Offline
Joined: 02/28/2015
Software Engineering

What you are looking for is software engineering. It is a university subject i am currently studying.

The specific language you are looking for to 'describe' your class model is called UML (or similar language) which allows you to specify how your classes are going to:
- Be organized into packages.
- interact
- scope
- depend
- extend
- ...
You will find a multitude of tools to develop UML-documents, some of which are proprietary, some of which are not. Sadly most free to use tools are rather clumsy though.
However the usage of those tools is not as simple as it may seem. Large software corporations pay specialized people to design this stuff. Smaller companies have their developers do this, with mixed success though.

If you want to design a larger game, keeping your code tidy and commented (as suggested above) will not surfice. However if you are doing something small scale, it might be obstructive to describe a lot of stuff in advance, rather than come up with it on the spot.

What is usually enough for a smaller or medium project is to define proper responsibilities (for classes) such as which class (or package) is responsible for networking, which one is responsible for thread management, etc. Then when you come to modeling your game entities etc, you want to begin by modeling from the top down, top being your most generic classes (like a base class 'Entity' or something) and then going down from there into more specific classes.
Each attribute should be as closely defined as possible and as loosely as required.

There are books and books on this subject, so putting it all in one post seems impossible, You might want to google it yourself though.

questccg
questccg's picture
Offline
Joined: 04/16/2011
Yeah I know a lot about software

I realize that UML modeling might be a way to go... I am leaning towards an agile methodology. But I am thinking more about the HOW Java was designed. Namely if you look at Java Source, you will find that classes are properly de-coupled and loosely fit together in a very TIGHT API.

That's sort of what I want in terms of DESIGN documentation.

This is going to probably be sound *dumb* but my background is PROCEDURAL coding. I come from an era where C and Turbo Pascal were the languages of the day... It's not that I am not familiar with Object Oriented principles found in C++ or Java, quite the contrary I do have experience with both of those as well.

But to sit down a MODEL/DESIGN a object hierarchy and say this game will require 50 objects and this is how each object will be designed and this is what relationships will exist between those objects is something that I am probably not accustomed or familiar with.

To be frank, I could probably CODE the entire application if GIVEN the design documentation. But to be the one who DEFINES the object-model-relationships is something that I have not much experience with. UML might be the language used to model the DESIGN - but still it doesn't explain HOW you should divide your objects and what entities you will require for the game...

I've read many books - the problem is that the DESIGN aspect is different to every problem/software. There is no ONE format that works. It's design so maybe I would have to refine the approach and use a methodology like Extreme Programming or Agile Development - sure. But it's saying these are the objects-models-relationships that are required for the game that is something VERY influential in terms of development...

I know I'm an IT Consultant with over 15 years of experience. I code for a living. But DESIGNING an application from scratch is something that I have never done MYSELF. Sure I have worked with Functional Analysts that do need-based analysis and produce documents that developers use to write software, it's still NOT the type of DESIGN documentation I am looking to produce.

Probably looking at something between UML and ORM (Object-Relational Mapping) used for database objects... I figure I will probably need both to have data used along with my classes and then have mapping between objects and database data...

questccg
questccg's picture
Offline
Joined: 04/16/2011
DESIGN documentation

larienna wrote:
You want to know how you could document the code of a game so that other programmers that has access to the code knows what it means?

Or you want to document the game so that the players knows how to play the game?

Neither. I want to have a DESIGN document that tells me HOW I should program the game...

I have never worked with Agile Methodology even if we write all kinds of software that is SOA (Service Oriented Architecture). Most projects that I have worked use a Waterfall model with gathering of needs, programming and then testing and the cycle repeats for different features.

Having a DESIGN document would allow me to have a very clear picture of what the game is going to require and how to model the database so that the game has all the relational relationships also.

If you want to code a Video Game - having a CLEAR DESIGN document is like having GPS if you are a Taxi driver: it gives you clear instructions about WHAT you NEED to code to make everything work together.

questccg
questccg's picture
Offline
Joined: 04/16/2011
Yup - turn-based strategy...

DifferentName wrote:
...*Edit: What kind of game is it? I wonder if that makes a difference. Mine is fast paced about fast reaction time. I imagine a turn based and/or strategy game may need more organized planning?

Yes the game is a turn-based strategy game... It has limited amount of animation and uses 2D sprites for the game. It isn't even a scroller game... It's simpler than all of that - BUT I want to program it for the Android Cellular phone market...

I've looked into the Cellular aspect and have a pretty good toolkit that describes how to code with the toolkit. My problem is NOT with coding, it's with DESIGNING.

Personally I would strongly suggest NOT to write a Video Game without a DESIGN document because you will probably be writing very SPAGHETTI code... That's what happens when you DON'T design FIRST.

questccg
questccg's picture
Offline
Joined: 04/16/2011
Not design patterns either...!

questccg wrote:
I realize that UML modeling might be a way to go... I am leaning towards an agile methodology. But I am thinking more about the HOW Java was designed. Namely if you look at Java Source, you will find that classes are properly de-coupled and loosely fit together in a very TIGHT API.

Also please don't reply use Software Development Patterns... Yes patterns go in the way of having a TIGHTER design. But you still need to have the design FIRST before you can say this is a Simpleton or that is MVC pattern or a Factory, etc.

questccg
questccg's picture
Offline
Joined: 04/16/2011
I guess I need another programmer

From the discussion, I probably gather that I need another programmer who is more experienced with Agile Development Methodologies to help produce the game design documentation.

That's my conclusion since I believe this is all Software Engineering and would therefore require someone more qualified to produce the documentation.

DifferentName
DifferentName's picture
Offline
Joined: 09/08/2013
questccg wrote:SPAGHETTI

questccg wrote:
SPAGHETTI code

I know it's high in carbs, but it tastes so good!

questccg wrote:
From the discussion, I probably gather that I need another programmer who is more experienced with Agile Development Methodologies to help produce the game design documentation.

But you're here on a game design forum, clearly interested in design. If you understand design, and you understand programming, the only other thing you need is perseverance. Design your game, and write it. I just start with something I can see and interact with, to make me excited to keep adding onto it.

larienna
larienna's picture
Offline
Joined: 07/28/2008
I also mostly coded in C/C++

I also mostly coded in C/C++ at school. Java was appearing near the end of my studies. I always used object orient programming in my own way. Now that I have just jumped into Java, I need to redo my thinking and do it in the right way. I think Java force the OO model much better asking you to think out of the box, while C++ could make you keep your old habbits.

If you know object oriented programming, it should not be that hard to model something. Do not do the whole application at once, do it part by part. I am currently working on a major project and that is what I am doing so. That might forces me to do some changes later, but at least I get to see if it works. And that is something important in computer technology, because in theory it always work but in practice it never does.

Quote:
You will find a multitude of tools to develop UML-documents, some of which are proprietary, some of which are not.

Library technician plug here: get an online account at the Quebec national library. They can give you access to most IT books online for free through books 24x7 or safari books. This is how I learned libGDX. You just need to prove that you live in quebec.

Of course, if you are designing alone, your design document is your notes or your head. Design documents are generally produced when working with large team.

questccg
questccg's picture
Offline
Joined: 04/16/2011
Knowing is half the battle...

larienna wrote:
...If you know object oriented programming, it should not be that hard to model something. Do not do the whole application at once, do it part by part...

Well the thing is if you have a "base" object like a "Card", you want to know what that object will contain. So do you go with methods that are like "draw" to complement the object? What about the actions you can do with it?

I find this to be very *technical* and not obvious in how you would define a basic object such as a "Card" (Obviously assume that I am writing a Card Game...)

Quote:
Library technician plug here: get an online account at the Quebec national library. They can give you access to most IT books online for free through books 24x7 or safari books. This is how I learned libGDX. You just need to prove that you live in quebec.

Good to know!

DifferentName
DifferentName's picture
Offline
Joined: 09/08/2013
Starting point

I always just start small and build from there. So, maybe first you want to display cards in a hand. The card needs an image or color, a position in your hand (or in the deck), and a coordinate on the screen. Then maybe you want to be able to remove cards from your hand, so you make it that a player can click and drag on a card to remove it, and other cards fill that space. Now you want to draw cards from the deck. The deck could be an array of cards, so you remove the top one and add it to the last position in your hand.

Once you have that kind of stuff, you can start giving the cards abilities, like becoming a permanent thing on the board with health and a damage rating, or having a one time effect and going away. If you want to do this in the form of a document before coding it, I imagine it would be a similar process of just finding a starting point, and adding from there.

larienna
larienna's picture
Offline
Joined: 07/28/2008
Some quick comments from

Some quick comments from ideas I already though about because the structure I will be using for my master project will be much more complex.

One of the key feature of board games is that any game piece and contain game pieces. For example: the table is holding stack of cards which is holding cards which is holding tokens.

So In my design all object (cards, tokens, etc) will inherit from some GameObject super class and they will each have a list of GameObjects that they could contain.

Then it will create some sort of tree structure where at the top you have the table that contains various game pieces which each contains in return additional components. There will be "abstract" game pieces like stack of cards which is only a container to hold all cards in one place, it's not a component by itself.

And for the component interaction, I am not there yet in my design. I want to use lua script to hook up on various event. But mostly you need to use even based programming: what happens when I click on the top of the deck, what happen when I drag a card in a specific area.

Dagar
Offline
Joined: 01/23/2015
I am IT student as well. If I

I am IT student as well. If I was as lost as you are, I'd do a little role-playing - figure you are a company that wants a product (programme) from you as a programmer. First you would have some conversations in which you would make a requirement analysis. You surely know what that is or you can read about it. Then you can formalize it into e.g. a UML model. The written text makes it easier to find substructures that form semantic sets that you then can either present graphically or in written form. These subparts should then be easier implementable.

Divide and conquer...

questccg
questccg's picture
Offline
Joined: 04/16/2011
OOP/OOD

Dagar wrote:
...I was as lost as you are, I'd do a little role-playing - figure you are a company that wants a product (programme) from you as a programmer. First you would have some conversations in which you would make a requirement analysis...

Requirement gathering is not my problem. My problem is with OOP/OOD. Larienna has made a good point about starting with a Super Class called "GameObject". Now how to create a tree structure from this - is still well a challenge.

Take for example that my game has the following "objects"/"events":

  • Game Table.
  • Two player areas.
  • Each player area has place for cards.
  • Each player has a Deck.
  • A subset of the Deck can be a hand.
  • Each card can be viewed.
  • You should have a way to dismiss a card (zoom/un-zoom).
  • Each player can play a subset of cards onto the player area.
  • Each player can exchange cards from his hand with those in the player area.
  • Player areas can vary according to the round.
  • The game is comprised of several rounds.

As you can see, even with a SIMPLE card-based, turn-based game, there are a lot of things that can be going on... I'm not sure how to model all the objects AND their relationships with each other.

Again maybe an OOP/OOD programmer might have an easier time. I know one such individual and maybe he might be interested in the job. Maybe.

Input would be much appreciated...

TreffnonX
Offline
Joined: 02/28/2015
questccg wrote:Dagar

questccg wrote:
Dagar wrote:
...I was as lost as you are, I'd do a little role-playing - figure you are a company that wants a product (programme) from you as a programmer. First you would have some conversations in which you would make a requirement analysis...

Requirement gathering is not my problem. My problem is with OOP/OOD. Larienna has made a good point about starting with a Super Class called "GameObject". Now how to create a tree structure from this - is still well a challenge.

Take for example that my game has the following "objects"/"events":

  • Game Table.
  • Two player areas.
  • Each player area has place for cards.
  • Each player has a Deck.
  • A subset of the Deck can be a hand.
  • Each card can be viewed.
  • You should have a way to dismiss a card (zoom/un-zoom).
  • Each player can play a subset of cards onto the player area.
  • Each player can exchange cards from his hand with those in the player area.
  • Player areas can vary according to the round.
  • The game is comprised of several rounds.

As you can see, even with a SIMPLE card-based, turn-based game, there are a lot of things that can be going on... I'm not sure how to model all the objects AND their relationships with each other.

Again maybe an OOP/OOD programmer might have an easier time. I know one such individual and maybe he might be interested in the job. Maybe.

Input would be much appreciated...

I only realize NOW that you actually wrote this last comment that what you mean when you say 'video game' is actually a virtual board game.

For that there are existing APIs and you should consider using them, as they make a lot of things easier. Otherwise consider writing an API yourself before actually coding 'a' game.

Then writing any other game will be simnple as hell...
just a suggestion.

questccg
questccg's picture
Offline
Joined: 04/16/2011
Virtual = YES!

TreffnonX wrote:
...I only realize NOW that you actually wrote this last comment that what you mean when you say 'video game' is actually a virtual board game.

Of course it's a virtual board game! :D Why else would I post a topic on a Board Game Design website?!?!

My problem is that I want to (now) design the game for Android cellular phones. The DSi market is dead and iPhone is a smaller market. Android seems like the best bet - because the game is probably too simple compared to things like Blizzard's HearthStone... Or Heroes of Might & Magic Online.

So the Android market is best and has the widest possible audience.

larienna
larienna's picture
Offline
Joined: 07/28/2008
Quote:Again maybe an OOP/OOD

Quote:
Again maybe an OOP/OOD programmer might have an easier time.

It's all a matter of practice. It's like relational database design, even if you know how it works, you need to do modeling exercise first. There is probably online some object modeling exercise. (no coding, only on paper)

In modeling, there is no absolute good or bad answer. Some models will have more or less features than other but can perfectly do the job.

Quote:
Android seems like the best bet - because the game is probably too simple compared to things like Blizzard's HearthStone... Or Heroes of Might & Magic Online.

Yes and no, on the Iphoe market people are more likely to pay for a software than on the adroid market. But you need a monotouch licence (approx 100$) and you need an apple computer to make the application (apple's restriction).

I am using LibGDX because you code your game once, and you can deploy on Desktop, Android, IOS, BlackBerry and WebGL, all at once.

Syndicate content


forum | by Dr. Radut