Zico's development blog 4
#1
Hey folks,

due to what happened over the past months - heck - for the most part of this whole year, I have decided to open up a new development blog.

And to get the most important out of the way: DXX-Rebirth changed it's license. Part of it, to be precise. To GPLv3!
Those of you, who read the copyright know, that the original code is protected by the custom license written by PARALLAX, while all additional work was covered by the D1X license. And the latter we changed to GPLv3. The reason for this change is pretty simple: More freedom to the work of the community, while also properly protecting it. The GPL is still one of the best ways to archive that.

It took me a long time to talk with a lot of poeple, getting the paperwork done and to make sure both licenses (GPLv3 and PARALLAX) are living safe under one umbrella. I spare you the endless and boring details. But once more, an endless amount of thanks go to kp, who helped me with this left and right, wrote texts for me, validated mine - as I am - as you know - not a native English speaker.

Also a big shoutout to many, many folks out there who cheered me up during this nervegrinding and demotivational process. Especially A Future Pilot, Blarget2, Matt1360 and Trent Hawkins (if I forgot *you*, I am sorry). It was not easy, I can tell you. There were days, where I was on the fringe of meltdown.

But was it worth it? Fuck yes!

Like I said, it brings DXX-Rebirth a step closer of being real free software. And most importantly, the contributions of the community is much better protected at the same time. It was worth the process and the months I could not do anything but see how things develop.

Now it's back to the usual program!

Stay tuned for that!
- zico
The greatest pleasure in life is to do what people say you cannot do.
Uhm... Honey, there's a head in the toilet!
Reply
#2
That's awesome zico!! I'm so glad it worked out! Big Grin I'm looking forward to where Rebirth is headed in the future Smile
Reply
#3
(06-12-2014, 09:11 AM)zico link Wrote:Stay tuned for that!
- zico
Yes we are, 24/7, lol. Just bring something in  ;D
Reply
#4
Hey folks,

As promised, I continued my work. Took a bit longer than expected to get back into the coding game but I made my first piece today.

Now as many of you know, DXX-Rebirth has a function that prevents important packets from getting lost. This is in the game for a longer period of time already but it always had it's shortcomings. While it can prevent the loss of an important packet to keep the game in sync, it does not really make sure that the packets arrive in the correct order. As a result, this can also lead to new problems. Maybe you have seen the effect of ghost ships, where a player is invisible as the game got the "explode" and "respawn" packets confused. This is a good example. My current change is supposed to fix this.

Now you may wanna ask: If packet loss is such a big deal, why not use TCP?
That's a good question. While TCP does all of what I do manually, it comes with certain disadvantages. TCP would protect all packets. This is actually not necessary. Especially with positional updates, it's much more efficient to just drop a packet and properly update your position with the next than the add yet another delay or freeze on your whole communication.
By sheer numbers, the amount of packets that need this protection is tiny, compared to the overall traffic - even tho these few packets may be the most important ones.

Since this whole code base works much more sorted now, this means that technically, the whole thing eats away less of your CPU. I doubt this is noticeable, but nonetheless, it's there.

The initial runs with this code look very promising but I aim to make a few more tests before I push the change to GITHub. Still I think the largest testing ground will be the BETA stage as I can only cause packet loss in artificial ways which may not perfectly prove how sound my implementation is.

Of course this sounds like a new feature, I'll write that off as a bugfix as it will greatly improve the sync of the games and remove a few very odd glitches you may have noticed.
The greatest pleasure in life is to do what people say you cannot do.
Uhm... Honey, there's a head in the toilet!
Reply
#5
Finally finished the implementation of packet ordering. I ran into some funny results during my first tests which uncovered some minor mistakes in my initial concept of packet loss prevention. I factually caused a few issues, which compromised the reliability of the whole system but of course never showed up in my tests since it needs some excessive playing with as many players as possible and would maybe just end up in a few packets not being really protected against loss. Now with my further work, these little mistakes showed up immediately. It's now all sorted and tested as much as I can by myself.
And I must say I am really, really happy with how it turned out. If I may say so, in hindsight, this is how I should have done it in the first place. When I initially wrote it, I wanted to improve on the engine so that packet order would not matter and status updates would eventually even make packet protection itself largely unnecessary. But that turned out to be much more of a hassle than anticipated and now the whole construct seems like it was always supposed to be like that and many small little annoyances just got eradicated in the process.
I am really, really happy with it.

NEXT: Why isn't that Vulcan hurting me so much anymore?
The greatest pleasure in life is to do what people say you cannot do.
Uhm... Honey, there's a head in the toilet!
Reply
#6
Woot woot! I'm glad things are going so well! Smile When can we expect the next version? Any ETA yet? (Not to rush you, I'm just wondering Smile )
Reply
#7
I wish I could give an ETA. I really do. But there are still quite a few tasks open I have to get sorted out before pushing out a BETA. Maybe I can get kp involved fixing up a few bugs from my list. Smile
I must say that the huge delay I had when changing the D1X license was a big throwback. The whole thing took almost half a year and things that came up in that time were just piling up. Additionally the source unification also came up with it's own traps but just continuing to work on the 0.58.1 code base, eventually maintaining three source trees - D1X-R & D2X-R in their stable tree and the unification branch (where D1X and D2X exist in one single code tree) - became increasingly difficult due to the fact that unification underwent so many internal changes. Granted, the jump to unification at this point might cause a few more issues but eventually we *have* to tackle them one day or another and transferring patches to the stable branches might have caused even more terrible effects - not to mention the additional work.
So we ended up in a spot where I think the only logical step was to move to unification, making a clean cut.

I will move all "not absolutely necessary"-tasks to another version, only working on the most crucial tasks before pushing out the first BETA. And I hope all involved coders will help me with their patches so I can get this list done.
The greatest pleasure in life is to do what people say you cannot do.
Uhm... Honey, there's a head in the toilet!
Reply
#8
I hope that unification BETA will be possible to make with some easy to go setup like minidev, or someone could post instruction how to make old minidev to compile it. I'm willing to test it but I'm not any eager to (buy)/install/configure full programming environment of some kind in order to just compile rebirth one or few times.
Reply
#9
I can try to help with some bugs, but I have my own plans that I am trying to race to completion before we call beta, too.

aqqman: we only support free compilers at the moment.  I looked recently at adding MSVC back into the mix, but their C++0x support is so far behind that it's not worth it right now.  I think the first MSVC that can handle the unification branch is Visual Studio 2013.  I test gcc 4.5 and above.  Mac users will probably use clang, which should work - but clang's C++0x support is broken on Linux, so I don't test it.
Reply
#10
Stating the obvious:
Visual Studio 2013 isn't free but mingw is.
Quote: we only support free compilers at the moment
You meant that you support free LINUX compiler at this time to be more specific.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)