What should I learn and what shouldnt I learn to start making multiplayer games?

Started by
15 comments, last by M6dEEp 11 years, 10 months ago
I have studied c++ before a few years back but it's useless to know c++ on its own unless you only want to make singleplayer console text games.

And I didn't really learn the advanced stuff like multithreading.

I also did a little bit of WinAPI learning.. But I didn't want to learn about the draw stuff in WinAPI because I think you will use OpenGL or Direct3D for that (I didn't ever get into learning either of those two) or some game engine maybe.

I also looked into networking with telnet or something i can't remember anymore. or maybe it was called socket or something.
That was super complicated stuff and it's then that I gave up on learning game programming. Because learning multithreading + networking at same time is nightmare it's already nightmare both on its own.

I am assuming that you need to know how to use c++ advanced stuff like multithreading etc and networking BEFORE you start using a game engine?

I just am having a hard time puzzling together what I need to know and what I don't need to know..

So if you can tell me what I should do and maybe give links as well that would be awesome =)
The more detailed help you can give such as just for example what networking language I should learn and which ones I have available to chose from and advantages between them etc.
Advertisement

I am assuming that you need to know how to use c++ advanced stuff like multithreading etc and networking BEFORE you start using a game engine?

Not necessarily; that would depend on the engine in question as well as how you're going to use it for a particular project. Some engines provide a fairly basic framework and require extensive programming to produce a game, but it's increasingly common for them to either need only a simpler level of C++ programming, or even to provide bindings to simpler languages. When using Unity3d for example, you can code in C#, Boo (similar to Python), or UnityScript (very similar to JavaScript). Unreal can be programmed using C++ or UnrealScript.

So, the question therefore becomes "what features do you need for your game?" If you have a clear idea of your game's requirements you can pick an engine that meets those requirements, and you can then learn what you actually need to use that particular engine rather than learning things that might or might not be useful in the end.


So -- what sort of games are you actually aiming to create? What features do you need, and what platforms are you planning to target. From there we can recommend specific engines and give you an idea of what might be useful to learn in order to use them.

- Jason Astle-Adams


[quote name='glhf' timestamp='1338718673' post='4945767']
I am assuming that you need to know how to use c++ advanced stuff like multithreading etc and networking BEFORE you start using a game engine?

Not necessarily; that would depend on the engine in question as well as how you're going to use it for a particular project. Some engines provide a fairly basic framework and require extensive programming to produce a game, but it's increasingly common for them to either need only a simpler level of C++ programming, or even to provide bindings to simpler languages. When using Unity3d for example, you can code in C#, Boo (similar to Python), or UnityScript (very similar to JavaScript). Unreal can be programmed using C++ or UnrealScript.

So, the question therefore becomes "what features do you need for your game?" If you have a clear idea of your game's requirements you can pick an engine that meets those requirements, and you can then learn what you actually need to use that particular engine rather than learning things that might or might not be useful in the end.


So -- what sort of games are you actually aiming to create? What features do you need, and what platforms are you planning to target. From there we can recommend specific engines and give you an idea of what might be useful to learn in order to use them.
[/quote]

Thanks for the answer..

I will list a few game examples to get an idea what I need to create those different games..

Minecraft?
Counterstrike?
Ultima Online?
Magic the Gathering?
How much c++ do you actually know? Have you made any games before?

How much c++ do you actually know? Have you made any games before?


I made a super tiny console text game singleplayer.
Where it reads info from a few notepad files.. for the map.... monsters... stats..
Kinda like

"You're standing on a dirt road, There's a few scattered dead trees in this area and you can hear the owls.
It's getting near midnight, The road goes north to south direction. Do you want to:
1. Go north.
2. Go south."

You get the idea.. the game had basic fighting system too where you just auto attack each other and lose health.
That's really not too bad so far. What sort of code did you use? All If/Else statements? Switch? Classes? Because really what you've described could be made really easily, or made with more advanced options. (for the purposes of knowing where you're at knowledge wise)

That's really not too bad so far. What sort of code did you use? All If/Else statements? Switch? Classes? Because really what you've described could be made really easily, or made with more advanced options. (for the purposes of knowing where you're at knowledge wise)


Yep I used all of that you mentioned..
Remember it's been a few years since I did this so I can't remember too many details but I could "easily" refresh what I knew if I decide to give it another try.
Used loops as well.

Edit: I also remember that I felt pretty confident about pointers towards the end before I gave up.
And I was still slightly foggy about allocating new memory with the "someting = NEW something" or something like that lol

[quote name='Inuyashakagome16' timestamp='1338728967' post='4945790']
That's really not too bad so far. What sort of code did you use? All If/Else statements? Switch? Classes? Because really what you've described could be made really easily, or made with more advanced options. (for the purposes of knowing where you're at knowledge wise)


Yep I used all of that you mentioned..
Remember it's been a few years since I did this so I can't remember too many details but I could "easily" refresh what I knew if I decide to give it another try.
Used loops as well.

Edit: I also remember that I felt pretty confident about pointers towards the end before I gave up.
And I was still slightly foggy about allocating new memory with the "someting = NEW something" or something like that lol
[/quote]
lmao well it sounds like you've got a decent understanding of all that so far. :P
Ok, so those are four reasonably different games. There's not just one correct approach, but I'll give you a few thoughts about potential approaches to each game:

Minecraft?

Minecraft is written in Java, and it's a custom engine. The majority of it isn't really all that complex (relatively), but it was reasonably novel and took off.

If I were approaching the task of producing a minecraft clone, I would probably bind PolyVox to PyOGRE and write my clone in Python. Those who prefer C++ to Python might consider the same approach using the main version of OGRE and programming in C++ rather than Python. If you preferred Java you might consider jMonkeyEngine.

Given that my selected approach involves binding together different libraries, you'd need intermediate to good programming skills, and probably a reasonable amount of experience.

Counterstrike?[/quote]
To clone Counterstrike, I would most likely choose to use the Unreal Development Kit. Given Counterstrike is a relatively straight-forward FPS (i.e. there isn't much that's really different to any other shooter) most of the work would be done in the provided editor, with the required scripting being done in UnrealScript. The majority of the difficulty with this sort of project would actually be in producing the quality assets (models, textures, etc.) for such a game.

I wouldn't really recommend a standard FPS as an indie project if you're planning to make money -- if you've got something quirky like Portal you may be able to stand out, but the AAA studios produce plenty of hugely popular standard shooters already.

Ultima Online?[/quote]
Hero Engine. Again, most of the work could actually be done directly from the provided editors, with small amounts of code for any custom functionality being written in HeroScript. Again, the major difficulty with such a project would actually be asset production.

Magic the Gathering?[/quote]
I haven't played this one, and I'm actually in a bit of a rush right now... so I'll be back tomorrow -- I do have some additional thoughts to offer, and I'll see if I can find a video of this game to see what it's like -- assuming it's a reasonably direct translation of the card game it should be a fairly simple one though.

- Jason Astle-Adams


Ultima Online?

Hero Engine. Again, most of the work could actually be done directly from the provided editors, with small amounts of code for any custom functionality being written in HeroScript. Again, the major difficulty with such a project would actually be asset production.
[/quote]

Hero Engine looks amazing!
Just too bad you need 3ds max or maya to work with HE.. I've only got blender.

This topic is closed to new replies.

Advertisement