is basic server client multiplayer too hard to learn for someone who is a beginner to game development. Im looking to implement basic UDP multiplayer for a 2d game using winsock or enet. im fairly proficient with c and i have learnt c++ but havent made anything with c++.
multiplayer too hard for beginner
If you want to learn network programming, then start with bare-bones network programming. Make connections between two computers, then grow to sending simple text copied between two computers, then grow to a bigger protocol, and so on.
After you understand network programming a little bit, it won't be too hard to incorporate it into a simple game. Assuming you have experience already making simple games.
If you start out saying you want to make a game that includes 50 things you've never done, you are going to need to learn 50 things at once. If you learn how to do each of the 50 things separately, and then slowly learn how to combine them, it will just be a simple learning experience.
There are a few ways that you can implement a multiplayer game.
- You can learn networking first and then use that fresh when developing a game
- You can learn game design first and use that when developing networking
- You can do both simultaneously with some pointers.
If you're in a rush, then a hybrid between 1 and 2 (3) us possible. Essentially, I believe that networking is the most flexible; the underlying concepts can be applied to most games. Either way, you can write a network-friendly game without having to use networking at all. It's simply a case of understanding where data would need to be accessible, and where other players would need to interact with the game. By ensuring that those parts of the system are accessible so that you can override a single player mechanic later on with networked hooks you could "get away" with learning how to network in parallel.
I found it a bit overwhelming to learn both networking and game programming at the same time. So I did (using SDL and its networking library SDL_net):
1. Made a very very simple 2D game (Pong). It took me 1-2 days. Its all in one file so easy to copy/paste.
2. Started playing around with Networking tutorials to better understand how networking works.
2.5 After modifying tutorials and seeing how the library works, I started to experiment
3. Made a small "guess my number ?" game. Just in the console/terminal view. (tried to keep it simple and easy)
4. Lastly I copy/pasted my pong code with the server and client code.
4.5 After modifing the code to work properly, I had a working 2 player pong game.
I wouldnt say that networking is hard. But it does bring an additional layer of complexity to a game. Eg One player may see something totally different from another.