
I haven’t really said anything in a week or two. I’ve been staying off/accidentally forgetting all about Twitter to avoid distractions as I’ve been working trying to get the PS4 version of Duck Game working correctly. A massive update is planned for the Steam version of Duck Game, and the plan is to release it at the same time as the PS4 (XBONE too I guess) version. There was a semi-open beta for the update content a few weeks ago, which was supposed to last only a week but I ended up leaving it open due to the code base and my attention basically being in limbo.
This post will hopefully clear up some questions about that, and help explain why this Duck Game update/port has been taking so long.
The PS4 and PC versions of Duck Game are pretty closely tied together. I originally wrote the update content for the Steam XNA version of the game, and had the porting company convert the changes over to the Unity based PS4 and XBONE versions of the game. The plan was to fix a bunch of stuff that bothered me in the original release (random levels, mostly, they are completely rewritten and much better and look like pyramids now), while also adding a new online leveling and room customization system that I wanted to have in the first place. The update content was basically all implemented in June of last year, with the plan being for the PS4 version and update content to come out in August. That never ended up happening due to serious online performance related delays with the port, and I instead ported over a few smaller changes into a Halloween themed patch last October. So the plan was for the big update and console port to come out in November instead. Then February, then April, etc. etc.
It wasn’t until January of this year that I started helping the porting company directly, with hopes of getting the problems sorted out quickly so we could get this update out. I flew out to London for a week to work with the porting team directly, then flew to Atlanta for another week to work with Adult Swim directly, then finally they sent me some PS4 dev consoles and I’ve been working on the port from home since the end of February. Nobody expected it to take this long, and I never would have guessed how much work still needed to be done to do to get everything working. I’m still working on the port right now.
So what exactly happened that could cause the port to take so long, and how could the port keep the update from coming out? Adult Swim wanted me to time the release of the console version with the release of the big update, the idea was that it would be cool for everyone on every platform to be excited for the new content all at once. As the port got pushed further and further, keeping that promise got more and more awkward as people kept asking what was up. I was under the assumption that the port would be finished soon, so every month I’d say “It’s coming soon, should only be a few months till the update!”. I really believed it.

The game was running at 60FPS with regular massive lag spikes with 2 players in an online match. With 4, though, the game was running at around 15FPS, with constant packet loss and network dropouts, along with an endless list of strange synchronization bugs that didn’t make sense. Then in January, when Adult Swim got me involved in the porting process, I realized what the problem was. The netcode for Duck Game is bad, and it was way CPU intensive and took way too much network bandwidth to possibly work on console.
“The netcode for Duck Game is bad”
Duck Game’s netcode originally took me about a year to write, and when I talk to people about it I get emotional and vent about how it was a terrible year and I’d never want to do it again. I’d never coded a real time network game before and the weird combinations of shit that can happen in Duck Game posed a serious challenge when it came to coming up with a system that would work for everything. The netcode is a total mess, that I was able to get everything working in the first place is nothing short of a miracle. At the beginning of January I realized that I had to re-write most of that awful net stuff that took so many endless nights of debugging and uncertainty. I had to re-write it and I had to know exactly what I was doing and why, because the PS4 couldn’t take running a bunch of unnecessary code and sending a bunch of redundant data.
So I’ve been re-living that whole process, building the online code from the ground up all over again. It’s kept the Steam update in an awkward state, too, since the Steam version needs to share a lot of code with the PS4 version. After I opened up the PC beta, I tore down a bunch of systems and got to work putting them back together. The beta was going to last a week, and I had a number of patches ready but then things got out of hand and I decided I couldn’t release any of the new net code yet with any amount of confidence. So the Beta is left open with a strange buggy half ported build that’s likely to stay the way it is a bit longer yet.
It’s only now, coming up on June, that an end is in sight. The PS4 version is running at 60FPS with minimal packet loss. I just finished re-writing the object interpolation and state synchronization code, since it’s a complete re-write there are a number of new gameplay bugs caused by it. Overall though the net synchronization is much more accurate and efficient, and as soon as the bugs are moved outside then the PS4 version is essentially ready minus some certification stuff that I’m told the porting company will deal with. Along with it comes the update for the Steam version. As soon as the PS4 codebase is back in the porting company’s hands, there’s still some new stuff I wanna get in there in the month or so I’ll have before release.

So the quick version is that the major code changes required to make the PS4 version functional are finished, and release is only now on the horizon of the near future with any level of confidence. I’d love to see it come out by the end of June, I’ll definitely have the PC Beta updated with the new online code before then.
I’m sorry to everyone who’s been waiting longer and longer and longer, and I’m extra especially sorry to anyone who’s tried to talk with me in the last couple of months. My mind has been either 100% in this port, or freaking out about how I broke the net code again and it’s “definitely broken forever this time”. It’s not broken anymore, but it’s gonna be a few months before me and Duck Game are back to normal.
Thanks for sticking around.



