The crippled release of Cyberpunk 2077 is not a problem of bad software engineering
Some days ago while I was browsing Youtube this video from channel Continuous Delivery appeared in my recommendations feed
I think we all agree about how badly this particular game release was. A release that sure it is going to at least delay next CDPR projects and already is causing a big hit in CDPR stocks.
But I don’t agree this is necessarily a bad software engineering problem as this video claims. Let’s see why.
Waterfall vs Agile
Continuous delivery states that Waterfall methodologies are common in the industry and that there are better ways to do software. I love scorning Waterfall methodologies as much as everyone else but assuming Agile would have improved this release is an overstretch.
It is certain that Game development follows a more classical waterfall-ish approach to development. Usually the process of developing game goes as follows[1]:
- Concept
- Prototyping
- Preproduction
- Production
- Post-production
First we don’t really know how strictly isolated from each other are these stages in CDPR development process (maybe they have some agile-esque processes in between). Even if these stages are as Waterfall as the Niagara falls we need to understand why most big AAA game dev companies still work this way.
Game development is not pure software engineering. It also involves[2]:
- Game designers
- Artists
- Level designers
- Sound engineers
- Musicians
- Testers (As always unsung heroes of this time)
In fact this process looks like a lot like movie productions
This level of multidisciplinarity is uncommon in most software development projects that use agile techniques. Some of these roles work the most in the first parts of the development, other during the final steps. Agile shines in software projects that continuously deliver a product to the client in little steps. A web-service, mobile apps or your typical Something as-a-service thing. These domains look to me very different of a big AAA videogame.
In these big AAA projects this Waterfall-like approach have sense. Games of this size are not deliverable in little steps that can be isolated in two-week sprints. Granted that this process could be probably streamlined with more iterative techniques.
It is worth noting that with the rise of mobile gaming, games been published in Steam greenlight and the trend of making games a service, Agile should acquire a bigger importance in game development.
Testing vs Debugging
Continuous delivery shows two different CDPR ad jobs. He mentions that testing is not mentioned once and that debugging skills are more valuable to CDPR that software testing. In my opinion this makes lot of sense.
The issue of TDD, unit tests and software testing in the videogame industry is being discussed a lot. Here it is what Jonathan Blow, a famous videogame developer thinks about this:
Although I mostly agree on what he’s saying is worth to emphasize this part of the video.
Don’t take me out of context, testing is very important, right? If you don’t test your software, then your software doesn’t work. What I’m saying is, I don’t think that this obsessive unit testing that happens in many cases is the right way to test. I think there are more efficient, better ways to test that capture more bugs. And we want to do those things.
Back to Cyberpunk 2077. If we assume that testing would have result in a better product we need to know what problems our projects have and how testing could have been helpful.
Problems in Cyberpunk 2077 release can be summarized as follows:
- Terrible optimization in PS4/Xbox One.
- Bugs and glitches like(Clipping, Physics errors…)
- Terrible AI (Police behavior, NPC routines, NPC car driving…)
- Game mechanics that were expected are not in the game
Terrible optimization in PS4/Xbox One
Optimization problems in PS4 and Xbox one probably arise from the game being develop with a focus on PC (even if the game was announced originally for consoles back in 2012). Performance problems in particular hardware targets is something that is very difficult if not impossible to avoid through common testing techniques. These problems are usually solved with a trusted profiler and good understanding of the inner workings of the hardware you are targeting. In this category debugging wins over testing
Bugs and glitches
The game is full of hilarious bugs and glitches. I can’t resist to add a video that shows some of them
In my opinion this is related with the game needing more time to be properly finished. We already know that the game has been in preproduction phase for a very long time and that certainly has affected its development phase. I can see two culprits here:
- More time for developing -> QA -> Debugging and fixing was necessary
- The engine internals would have been better with more testing.
This category is a draw. Testing would have been beneficial here although at the end of the day more time for debugging would have fixed many errors before release.
Terrible AI
Some of you would say this should be in the previous category but I disagree. As far as I know the most flagrant AI problems are because the AI is too oversimplified to the point that pales in comparison to older open world games like Read Redemption 2 and various forms of GTAs. This is purely a problem of scope vs schedule (as continuous delivery points out in the video).
Game mechanics that were expected are not in the game
The game released with less content and mechanics that players expected. Sure the hype was on very high levels and expectations were pretty unreasonable but clearly the game launched with a lack of content and features. This is also a problem of scope vs schedule.
CD doesn’t stand for Continuous delivery
Clearly the CD part of CD Project Red doesn’t stand for continuous delivery.
Continuous Delivery talks about the probable absence of continuous integration and continuous delivery in Cyberpunk 2077 development. I think he is guessing too much there because we don’t currently know about the process they use. Even if they don’t use this processes I don’t think that’s a big deal taking into consideration the realm that we are talking about (video game development) and things discussed previously.
CI and CD are defined as follows:
Continuous integration (CI) is the practice of automating the integration of code changes from multiple contributors into a single software project. It’s a primary DevOps best practice, allowing developers to frequently merge code changes into a central repository where builds and tests then run. Automated tools are used to assert the new code’s correctness before integration. https://www.atlassian.com/continuous-delivery/continuous-integration
Continuous delivery (CD) is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time and, when releasing the software, doing so manually.[1][2] It aims at building, testing, and releasing software with greater speed and frequency. The approach helps reduce the cost, time, and risk of delivering changes by allowing for more incremental updates to applications in production. A straightforward and repeatable deployment process is important for continuous delivery. https://en.wikipedia.org/wiki/Continuous_delivery
If would have to choose one for my hypothetical videogame company I would choose CI. Testing in games is difficult because of the nature of the media and common techniques used in web dev projects are not that applicable but probably the game engine and core modules could be improved using CI. Still I don’t think that would have changed the overall quality of the game too much.
I can’t see the value of CD in a project of this kind. Games don’t need to be deliverable till the end. Obviously if we have a different kind of game managed using agile and with a more as a service approach CD could be a good technique in our project. But in the case of Cyberpunk 2077 and its traditional production process CD is not that necessary.
Management problems
Until this month CDPR has treasured a great reputation within gamers. The Witcher 3 is without a doubt one of the best games of the decade and its online store GOG been always considered very consumer friendly because the absence of DRM.
Besides, as Continous delivery states in the video, CDPR has been plagued with internal issues:
- CDPR loses key developers after The witcher 3
- Crunch time from at least 2019
- A seemingly little thing that could indicate a big change in the objectives and scope of the game too late in the development process
- A deal with Nvidia that sure didn’t move development resources to enabling Raytracing in the PC platform neglecting consoles
With the benefit of hindsight we can say that there were signs in the road indicating troubles.
A conclusion
I think that the failed release of Cyberpunk 2077 is more related with bad management of software projects, unreasonable expectations from the higher-ups and a very early release date (the game should have probably been moved to summer 2021 at best).
Sure the marketing plan didn’t help and the way of releasing the game was a mess knowing the state of the PS4 and Xbox versions of the game . Continuous delivery also shares a possible release plan that without a doubt would have been better than the actual that CDPR pulled off.
Blaming this failure on the absence of unit testing, TDD, CI/CD, Agile practices is shortsighted because techniques that can be very valid in some particular domain doesn’t have to translate to the videogame world, which is very different from your typical startup or a web developer boutique.
Bibliography
[1]Oskari.Alto MOBILE GAME PRODUCT DEVELOPMENT MODELS. P13(https://core.ac.uk/download/pdf/38131128.pdf)
[2]Different roles in Game development(https://www.oodlestechnologies.com/blogs/Different-Roles-In-Game-Development/)