Onerat Games
  • Home
  • Games
    • Elden: Path of the Forgotten
    • Outback
    • Itch.io
  • Asset Store

Transitioning Codebases

5/26/2017

0 Comments

 
Dealing with legacy software systems is simply a reality for most developers.

It is a rare occasion when a profit-centre project is rationally, completely and deliberately designed from scratch by someone who has experience in software architecture. The vast majority of the time, the core projects that make value in an organization grow organically - starting out as a quick hack to solve a problem and growing in scope and importance as it starts to save or bring in money.

This is true for game projects as much as any other software. And it applies to Elden.

The industry's response to this trend is to embrace change and agility -- using planning approaches that are lighter weight and iterate towards an efficient solution by doing evaluations at every stage. When these two approaches clash, however, things can get nasty.

​A common approach to having a large and old code base with lots of bugs and awkwardly written workarounds is to try and clear it and start from scratch. This is incredibly common, but among veteran developers it is a poorly regarded approach. It reliably results in regressions and in many cases perpetuates the very cycle it purports to solve.

The most effective way to handle this kind of transition that I've found does not use any gimmicks or fancy new organizational concepts. It is a simple and direct application of classic, old-fashioned object-oriented programming techniques. This is something that almost gets taken for granted nowadays -- OOP is such a given that very few people would profess to specialize in it. Yet this kind of transition seems to be virtually unheard of in most real-world environments.

The core concept here is to do incremental replacements of functionality using small, individual, well-thought-out modules. Rather than rewriting the codebase from scratch, you simply duplicate its functionality, a page of code at a time. Unity is fantastic for this, as it allows you to instantiate and duplicate modular components with very little effort.

In the case of game development, and Elden specifically, this means taking the large, ungainly components (primarily the player and enemy controllers) and incrementally replacing individual functions of them with smaller modules. It is 100% possible to replace the entire codebase with a faster, more stable, neater, tidier, better-factored and better-documented version -- without breaking intermediary builds or causing any other short-term pain.
0 Comments



Leave a Reply.

    Archives

    January 2018
    December 2017
    November 2017
    October 2017
    September 2017
    June 2017
    May 2017
    April 2017
    March 2017
    February 2017
    January 2017
    December 2016
    November 2016
    October 2016
    September 2016
    August 2016
    July 2016
    June 2016
    May 2016
    April 2016

    Categories

    All
    Gifs
    Screenshots

Home
Mailing List
Contact
© COPYRIGHT 2020. ALL RIGHTS RESERVED. by Onerat™ Pty Ltd
  • Home
  • Games
    • Elden: Path of the Forgotten
    • Outback
    • Itch.io
  • Asset Store