Gamasutra: Svyatoslav Cherkasov’s Weblog – Porting Graveyard Keeper to consoles and mobiles

[ad_1]


The next weblog submit, until in any other case famous, was written by a member of Gamasutra’s neighborhood.
The ideas and opinions expressed are these of the author and never Gamasutra or its mother or father firm.


 

On this article, I wish to discuss our expertise of porting our recreation “Graveyard Keeper” to mobiles and consoles.

Some fundamental info: Graveyard Keeper was developed by our workforce (Lazy Bear Video games) in Unity after which ported to XBox One / PS4 / Nintendo Change by our writer, tinyBuild. The cellular ports (iOS and Android) had been made in-house, by us. Additionally, just a few months after the preliminary recreation launch, we made a DLC “Breaking Useless” which was additionally ported to all platforms. Along with this, the sport was consistently being patched and improved.

As you’ll be able to see, the setup containing two dev groups will not be a straightforward one. Combine it up with the venture within the part of dynamic growth that must be deeply optimized for some platforms and also you’ll get a fairly difficult course of.

 

Time to get technical.

our recreation you’ll be able to most likely suppose that it’s a easy recreation to port, as it’s 2D with pixel artwork. And if consoles are highly effective sufficient to course of 4K/60fps, the pixel 2D graphics wouldn’t be an issue. Theoretically, that’s true. However virtually we used loads of very complicated options that weren’t optimized for consoles and completely unoptimized for mobiles.

Consider HDD velocity.

You most likely heard that the present gen consoles structure is similar to the PC. That’s true, however technically the {hardware} differs from the PC. Initially, Xbox One and PS4 use onerous disk drives whereas most of contemporary PCs use SSD or hybrid drives. So, you’ve got to remember the loading instances.

Think about our shock, when the primary construct was loading for throughout virtually 5 minutes.

So, we needed to rethink the entire loading and asset storage programs. For instance, we started storing not the entire recreation objects on the scene, however solely the details about them in easy (pretend) objects. And after the loading is full we began changing these pretend objects with the actual ones on the fly.

Consider multi-core.

Additionally, in our expertise writing for the consoles requires utilizing all CPU cores at most making the code to work in parallel. By default, Unity video games are very depending on a single core efficiency. And operating the sport “as is” might offer you very delicate efficiency bottleneck when all different cores are idle whereas the one single core is underneath load.

 

 

We needed to transfer totally different math and calculations to a unique thread operating in a parallel to free as a lot core-#1 energy as we will. Principally, that’s a superb level to remember for those who’re not planning to port to consoles additionally because it provides you with a greater efficiency anyway.

So, subsequent time we’ll plan every part we will to run in a separate thread/job. Fortunately, Unity had improved multi-threading lots over the last 12 months implementing job system and ECS.

Consider graphics optimization (even for 2D video games!).

One other heavy challenge for us was the graphics. We had no earlier expertise optimizing something for consoles or mobiles. Subsequently we had been OK to make a tree mixed of 20 separate sprites simply to make it simpler to design. There was no want for such quantity of sprites for a single tree within the recreation itself.

 

After all, we wanted to merge sprites to cut back the quantity of layers. You’ll be able to see the quantity of preliminary geometry on the scene right here:

The rightmost image exhibits the “overdraw quantity”. Which means every time one sprite is drawn over one other, the colour on that image turns into brighter. So, you’ll be able to see that regardless of the simplicity of the look, there are actually loads of polygons drawn over one another.

Additionally, all sprites of the sport are lit by a fancy shader that not solely makes use of the normal-maps, however calculates the pseudo 3D-depth of the image.

We needed to make totally different variations of visible optimization for various platforms. For instance, we needed to fully change the lighting shader and its habits for mobiles.

Consider platform-specific points.

Additionally, there’s loads of platform-specific work (particularly for consoles). For instance, you not solely have to assist the gamepad, however have to take care of totally different unusual conditions like when a consumer performs the sport, the gamepad turns off, consumer connects one other controller and logs in to a unique profile. And that’s in the course of the sport. There are totally different massive lists of such circumstances that your recreation must take care of.

One other challenge you must take into consideration is the saving system. Your recreation needed to work with asynchronous saving routines and deal with any file corruption might occur.

Patches and DLCs.

As talked about above, we labored with an exterior porting workforce on the facet of our writer and pushing all new content material, fixes and patches grew to become a tough process. You must plan every part forward. You’ll be able to’t simply inform the fellows to push your final repair to Xbox if they’re making a Change port and everyone is busy with that. 

And holding in thoughts that we’re a small workforce that likes to develop video games with a excessive ardour, that doesn’t go properly with planning forward. That’s the explanation we couldn’t simply port the primary “Breaking Useless” DLC to the Xbox. We didn’t plan it very properly. At some point we simply awakened and determined to make zombies and put them within the first DLC. However guys at tinyBuild had been busy deeply optimizing and porting the sport to Nintendo Change. They couldn’t drop that course of and start to port this DLC straight away. They wanted to complete their port first.

That was the draw back of the thought of creating a simultaneous launch on PC and Xbox. Ideally we must always launch a PC construct, repair all bugs had been discovered and solely then begin porting it to consoles — or spend months in remoted QA beforehand, with out actual participant suggestions. And solely after the port is finished, begin making a DLC. However we couldn’t afford spending a lot time on that. We needed to do every part straight away.

 

 

That’s the explanation we couldn’t launch the primary Breaking Useless DLC free of charge on different platforms (because it was on the PC). Whenever you develop on a number of platforms, the prices and timelines ramp up fairly rapidly. Even porting and releasing a patch eats up loads of sources.

Releasing titles, DLCs and updates all the time require passing platform compliance necessities, which implies certification by platform holders. The extra sophisticated your recreation mechanics and the larger the quantity of the APIs you’re utilizing the extra necessities you will have to surpass. Which means that you could take a look at your content material towards these necessities earlier than submitting it for certification to ensure that the probabilities of passing it are good. In any other case chances are you’ll encounter a giant record of points to repair and won’t go it (most likely you simply gained’t) inside first submission. Extra submissions may also result in further prices. However probably the most dangerous factor about not passing the certification in time is delaying the introduced launch dates. 

That is extraordinarily tough with quick iteration cycles we had on PC. It will be unattainable to real-time merge new content material into the console builds, as proven within the diagram to start with of the article. Having in-house sources would require at the very least one programmer devoted to every platform and a proficient QA workforce that’s consistently testing the title being ported and report the problems that fail the necessities so the porting builders can repair them earlier than being discovered by the certification workforce on the platform holder facet. It requires constructing the entire porting construction throughout the studio. And this isn’t solely the sources, however the particular information and talent set concerned in it.

Lengthy story quick it’s very simple to launch DLC on PC and carry on iterating on it in actual time, whereas launching the identical content material on consoles provides loads of overhead prices and complexity to the entire course of. 

Sviatoslav Cherkasov

lead programmer

at Lazy Bear Video games

[ad_2]

Latest posts