Where to start in terms of programming?

Where would one start if they were designing a game from the ground up? I’m just trying to get a small kick-start for something that could possibly turn into a very large project. For example if I’m working on a small scale 2D MMORPG such as the Diablo series, would one start with the environment first, then work their way up to the items, and individual players? Could I design what i need to make single player work, and focus on the network connectivity aspect later?

~Best

I’m going to assume you have intermediate knowledge of a programming language since you didn’t state if you had previous knowledge. Also, your topic doesn’t mention anything about Java, and this is a forum for general Java gaming things. But I’ll answer your question anyway.

It really depends how you would like to start. If you’re doing multiplayer, I (from experience) suggest you start on that after doing basic framework because you don’t want to have to integrate an entire game’s worth of content into multiplayer. Either way, singleplayer is just multiplayer but with a local server and client so it doesn’t hurt to do that.

I started my current project by stealing all the important data from my previous game (entity data, world data) and immediately converting it to multiplayer. That way I could at least play in the game, while it still being multiplayer. Then I just started implementing things all in multiplayer.

I would do whatever you want first, but focus on adding the framework first rather than features. It will be easier to add as many features as you want with a solid framework.

Yes, you could do networking later.

First design the structure of everything.
Have a decent layer of abstraction so that once your ready you can mold it any way you need it.

For example:

  • Entities/components system.
  • Game map structure
  • Input handling
  • GUI
  • Sound
  • Physics
  • Lighting
  • etc…

Don’t focus on little details until down the line.
Everything will be ugly at first, but once you get a solid core perfected you can start adding in things to prettify it all up.

It will take a VERY long time. So don’t rush it.
Take regular breaks to clear you mind, else you will grow to hate your project.

It’s not quite that simple, and it depends on the person. Honestly what will (and should) happen is you’ll start with a server/all the networking if it’s multiplayer, if not you’ll start with getting a rendering system up. This means 2D, 3D, loading/parsing models, animation, texturing, etc. Only after you have all this done will you truely get into other aspects of the game itself. After I get rendering set up, I typically create a simple GUI for navigation between menus and some other stuff. I then create a player and start to build the environment around the player based on what has the most priority (starting with a floor). Once I have the basic environment, I move straight into physics like collision detection, gravity, etc. You really build a game in layers of importance. Before I get into rendering at all, for example, I make a console (server and client) for debugging purposes. This is just what I do, though, its all up to you.

Here’s my recommendation:
All networking (if multiplayer)
Console
All rendering you can possibly think of that you’ll need (excluding lighting, shading, sprucee stuff)
GUI for navigation (is the game loading, at the main menu, etc)
Player
Build basic environment around player (terrain, for example)
Physics
Then advance everything previously stated
Then get into details like inventory, health, monsters, etc

It would be impossible to do all the networking if you don’t have a game to test it.

This. This is the cause of all my my projects being abandoned after a few months because I constantly worked on it and I grew so sick of it that I just stopped.

I should re-word what I stated, I was going off based on what my current project is :persecutioncomplex:

I meant that once you implement the basic stuff and get at least something on screen you should try to get it ready for multiplayer.

Thank you for the answer! I forgot to mention that I’m pretty good with Java – have used it for a while but I just simply have no knowledge of game development now that I’m out of college. Trying to become well read while also soaking in all the info I can from anyone on how it all generally works.

Those are really good point. It makes sense to get the mechanics out of the way before you start polishing the smaller details such as art. Thanks for the reply!

Thanks for the post! Sorry if this seems silly, since I’m very new to game dev – Alternatively how do you feel about designing tools in the process for things related to graphical design. Is that something that you would consider along the way or is that too time consuming of a process? I imagine that it would help to create the environment and allow for finer tuning of graphical background displays, for example different types of ground textures.

I’m open for any and all advice – I’m just trying to soak in as much as I can.

I work on my graphics when I’m sick of coding.

With time it becomes so easy you will be popping out all your game assets.

At first I sucked. But I didn’t give up and now I feel very confident with the art I produce.

Just watch videos when you need a break from coding, or have free time.

I would even join https://cgcookie.com/ for a month. That helped me out immensely.

Fantastic, I’ll be sure to sign up for the trial and look into that. Graphics are not my forte, but since it’s my vision I definitely want to be the person to produce them.

You should have the entire structure coded. For example, in my project (an MORPG) I started with networking. I designed the entire system first, from packet queues to handling/management, stuff like that. Now, since I’m on rendering, all i have to do if I need to create a new packet is make a class extending an abstract Packet class, create the instance and send it off. Makes it much easier in the long run.

From the earliest moments on, a catchy title and an escalator pitch (demonstrating a viable concept that distinguishes itself from the pack), may do more for you than this or that aspect of the coding. Maybe a good guideline as to what to code first: what coding does the best job of giving the title/pitch credibility?

Sometimes when making something new, there is a “creative” bottleneck. I seem to be running into people these days that have a great but somewhat nebulous idea, and are spinning in place trying to get support. Often the devil is in the details of making a “great idea” real. Once this or that creative/conceptual premise is shown to be solvable, almost everything else flows from that solution. Design decisions, programming decisions–these are much easier to solve (and solve creatively) when the requirements are clear.