Message from Matt
Hi all, I’d like to start by apologizing for my extended absence.
I had an opportunity a week ago to check in on the Little Orbit discord and say Hi. I gave a small update to those present on what is happening with APB (and some other projects). But I also promised a larger update for the community.
Running a studio is a little like being a duck. From the surface, it looks like you are just floating there, but under the water your feet are churning like mad. Little Orbit is currently wrapping up 2 different external projects, which I took on to position the company to support all the big plans we have for APB. I have been waiting for the perfect time to share more information with the community. But perfect always seems to be a week away, and you all have been waiting long enough.
Today, I would like to give a solid overview of what we have been working on while I have been navigating these waters.
We spent years chasing the APB 2.x work originally started by Reloaded Productions, mainly because we believed that, since they got a version of APB running for consoles, it would be easier to get a new version for PC than starting over. After a bunch of play testing, we realized that there were so many cut corners to the 2.x version that it was never going to perform well.
So we tried moving to a 3.x version where we pulled 3 major systems forward from APB 1.2x that were never ported. And after months of frustration, I realized a core flaw in my thinking.
All of our strategies relied on the idea that APB is based on Unreal, and that upgrading Unreal would lead to support on current devices and better performance.
But APB isn’t really based on Unreal. Not anymore. A team of nearly 100 people at Real Time Worlds got APB working by starting with Unreal 3.0, but then proceeded to modify it beyond recognition. Back in 2009, Unreal simply didn’t do many of the things it does now, and in order to implement the design goals of APB, they had to build entirely new systems that required core changes to Unreal.
So we took a step back for a bit and took on some other work for hire to gather up enough resources to take another crack at APB.
A couple of months ago, we began a manual upgrade process for APB: Reloaded's 64-bit upgrade, which is now known internally as "1.3x".
In comparison to the Engine Upgrade, this is a much smaller scope project with various individual tasks that we can complete in a shorter amount of time. The end goal of 1.3x is to deliver something that players can actually 'feel' in terms of performance, while not changing too many 'moving parts' of the original Unreal 3.0 Engine.
Narrowing the scope will allow subsequent updates in the 1.3x series range to be focused on individual 'engine upgrades', as opposed to one giant 'engine upgrade'.
The process above allows us, as developers, to iteratively make changes to the game while also being mindful of regressions.
Before I jump into the details, here are some of the improvements a native 64-bit code base will allow us to bring to APB:
- A higher memory ceiling than 4GB RAM. This will raise the bar for the out of memory crashes we currently encounter, as well as allow us to cache more information we would normally store on disk, but in memory instead.
- A 5-15% CPU instruction speedup in most cases on both the client and server. The Windows on Windows translation layer ("WOW64") which converts 32-bit instructions to 64-bit instructions is documented to be much slower than native 64-bit instructions.
- Direct hardware access. There are also instances where the above translation layer results in a slowdown when accessing hardware, such as the disk and GPU.
Finally, we have identified the infamous 'RTX crash' to be a bug related to how APB's managed textures are allocated. The bug can affect more than just RTX cards, but the upgrade should eliminate these issues.
ALL THAT SOUNDS GOOD, BUT WHERE EXACTLY ARE WE?
We’ve branched the APB 1.20 source code to APB 1.30, and we're in the process of upgrading each of the components individually.
We began by upgrading the Unreal Engine's 3.0 core components with 64-bit compatibility. But we also have to upgrade each individual library APB: Reloaded to use the 64-bit version. I did a countdown before each week when we had to covert the libraries in our APB 2.x work.
This is a painful and manual process. Thankfully, we have a frame of reference for most architecture incompatibilities. The Engine Upgrade process already resolved most of these problems, and in most cases, specific 64-bit code from 2.x was fine to backport to 1.3x.
As of yesterday, we've mostly completed the process for the core Unreal Engine components. We're spending time working backwards reviewing the changes implemented to ensure they do not result in any regressions.
WHERE WE'RE HEADED
There's a lot more to do still, however, none of it seems insurmountable. Hopefully, the precautions we’ve taken this time around will avoid APB's infamous 'rabbit holes'.
Some of our upcoming tasks include:
- Complete a code review of the core Unreal Engine components.
- Continue to upgrade the APB: Reloaded specific sections of code, which is a lot smaller in scope than the core engine components, as well as ensure that the 64-bit libraries have no conflicts with our codebase.
- Attempt to load a 64-bit 1.3x Unreal Engine Editor and get a test map loading (Praise the Sphere!). We anticipate having a lot of debugging to do in this step, even with as careful as we are being.
- Attempt to load the Social District. This is the same step as 2.x and 3.x, but with the scope being much smaller, and very little engine internals being changed. This should hopefully be a shorter endeavor with less shader gore and San Paro void men.
- Attempt to load the game in client and server mode. This will ensure our backend services and district servers still function under 64-bit and allow us to profile the new codebase versus 32-bit. The performance implications on the server are quite an exciting prospect.
- Quality Assurance will look at the build internally, and we will make a decision on any private (SPCT) or public testing.
Any form of public release is contingent on the above all working without issues.
Finally, I would like to close with a word on our Anticheat solutions.
As part of the 64-bit upgrade, we would like to reintroduce EasyAntiCheat. We feel that having EAC in our game would be a net benefit as a layer of defense. Both 1.2x and 2.x have had EAC integrated before, so we believe this is doable as part of the improvements we outlined above.
As always, I appreciate your support and patience. I look forward to posting more updates soon.
LATEST NEWS POSTS
V-Day 2023Feb 7, 2023 | PC
APB 1.30 Open Beta has begunFeb 1, 2023 | PC
2022 AMA RECAPDec 22, 2022 | PC
Holiday Event 2022Dec 14, 2022 | PC
Halloween Event 2022Oct 25, 2022 | PC
Message from MattAug 5, 2022 | PC
Easter 2022Apr 11, 2022 | PC
APB 2022 RoadmapJan 29, 2022 | PC
Holiday Event 2021Dec 20, 2021 | PC
Halloween Event 2021Oct 25, 2021 | PC
- December ( 2 )
- November ( 1 )
- October ( 2 )
- September ( 2 )
- July ( 1 )
- June ( 3 )
- May ( 1 )
- April ( 1 )
- March ( 3 )
- February ( 1 )
- January ( 1 )
- December ( 1 )
- August ( 1 )
- July ( 2 )
- June ( 2 )
- May ( 1 )
- April ( 4 )
- March ( 2 )
- February ( 1 )
- December ( 2 )
- November ( 2 )
- October ( 3 )
- September ( 1 )
- July ( 1 )
- June ( 2 )
- May ( 3 )