It has already passed 3 weeks since the start of the project and 2 weeks since the start of development. What’s new with ZebNet? What can it do in it’s current state? Well the most new since last is better framework structure and connection management. I have started on packet handling and reliable data transfer and will also later this week implement a simple flow control. When this is done I can finally start with my real purpose which is lag management. Have also researched some more in the subject and found out more about game protocols and valves lag compensation and protocol. Some interesting links:
- Open Game Protocol
- Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization
Also I created a simple UDP chat (yes, with no reliability) to test the connection management in a simple and easy way. I will not publish anything runnable yet, since it’s not that interesting atm.
Now for something more interesting. Design decisions for ZebNet. Most of my decision has been made in inspiration of Glenn Fiedlers networking for game programmers. I really recommend to read his articles, they can be found here: http://gafferongames.com/. He is talking much about pros and cons with UDP vs TCP and so on. In an action game prespective, UDP is the way to go. At first I thought, why not a combination of UDP and TCP. This paper explains why this may not be the best approach http://www.isoc.org/INET97/proceedings/F3/F3_1.HTM. So I decided to use UDP and implement my own reliability and flow control that fits my needs. Since I’m not at the state where I’m implementing prediction and lag compensation yet, I will save that explanation for a later post. One more thing that isn’t really a design decision, but it was an important one, and that was the decision to use boost and asio. First of all, it’s cross platform. That’s nice. Not only that it gave me cross platform it probably saved me a lot of time too. It really gave me the boost I needed. I’ll explain more in a future post, now it’s time to go back to work.