Developer diaries #9 - January 2023

Discussion dans 'Annonces' créé par Amras Anárion, 15 Janvier 2023.

  1. Amras Anárion

    Amras Anárion Roi Mythique Membre du personnel Team Phoenix

    Entry 9

    Three months have passed since the last entry. This is due to a slowing down of the development, itself due to several factors. But like the waves of the ocean, the progress is made in pulses: little progress until mid-December, but then it’s back to work with a great progress on the coding! This will be the theme of this ninth journal!


    Pharaonic coding ambitions

    Around mid-September, I started a huge project: redoing the database of all Pokémon moves from scratch. This step was necessary if I wanted to implement new data (the native PSDK one didn’t allow me to do so). It was also the perfect opportunity to add all the attacks added by Sacred Phoenix, never coded except for a handful of Shadow-type.

    Before any coding, I had to establish the game design around the Pokémon attacks and ask myself all the right questions:
    – How to define an attack and in what format?
    – What are the possible categories, types, and side effects?
    – Since I’ve divided the Status attacks into 3 subcategories (Buff, Debuff and Terrain), which ones will be in which subcategory?
    – How many methods will it take to define all the existing moves?
    – What are the possible attack ranges?
    – What tags will I use and what are their effects?
    – For the added data (Mana, Breath, elemental damage on the field...), what values should I assign?
    – And of course, what rebalancing and modifications to make to all this? ...something already started 3 years ago! A perfect opportunity to take a critical look at all the existing moves and revise the ones that need it, while establishing harmonized changes to my own mechanics.

    This will be done in Word format (not Excel), as it allows me a more advanced layout and the use of a color code to mark my changes compared to the vanilla mechanisms of Pokémon:
    – Red = dexited move
    – Dark red = nerfed element
    – Blue = modification without significant impact on power
    – Green = improved element
    That’s about half of all the moves that will be rebalanced. This can range from a minor change (like a very slightly adjusted power) to a more profound overhaul by integrating my Fields Effects for example (but that’s another topic!).

    The second major advantage of having such a list, sorted by type and then category, is that it gives me a clean and organized view of all existing moves. It’s a great help to me to establish the movepool of my Fakemons (or to revise those of the already existing creatures), because the official list established by date of addition (and thus by generation) has a clearly random arrangement ... not to mention that it doesn’t refer to my new attacks, nor exclude the ones I’ve decided to dexit (about 160 out of the 900 existing official ones).


    An excerpt of shadow-type attacks: some are new, others have been balanced​


    From Ideal to Truth

    Now I have to write down all these ideas. So, I start by writing the list of attacks and all the characteristics that will be called by the code (type, power, accuracy, list of tags...)
    I start at the beginning of October and I manage to maintain a cruising rhythm by referencing 40 new moves per day. But when I got to the 4th generation ones, my motivation started to wane. At the end of October, I was at 400 referenced attacks; then I stagnated around 500-600 until the beginning of December, adding only 10 or 20 on the rare days when I had courage.

    Around December 10th was a tipping point: Eysselia took the lead and decided to give me a deadline to finish this damn list of abilities. Even though the deadline itself was not met (I would have finished the game design document 3 days late), it allowed me to go full steam ahead and finish the 300 missing moves in 10 days, even allowing me the luxury of including the brand-new Gen 9’s attacks!

    But we still had to transform the game design into concrete code! Let’s go for a long copy-paste session from the Word to the Ruby script, abusing the [Ctrl] + [H] and regexes to semi-automate the formatting as much as possible! Don’t forget to create methods to extract the desired data and then test the code to hunt for bugs. (A Class migration is very delicate to manage!) This took me about ten more days.


    Putting it into practice in code. The majority of flags are managed by independent lists.​


    When the Field Effects invite themselves to the party ...

    Today, this key step is almost finished. I just have to check that the attack’s methods (the “FunctionCode” in Essentials jargon) – completely renamed – are all existing in the new code. And that’s when I realized that some vanilla mechanics have never been coded in the game, even though some of them date back to Gen 6.
    So, I went back to work on another important project that I had planned since the birth of the fangame: the Field Effects. Luckily, the game design on this feature was written in large part during the month of October, when my motivation was wavering for the referencing of moves. Thus, I wouldn’t have wasted my time and already have a base on which to start my coding!
    Estimated time to code this feature and reach this additional goal: 15 days.


    The other coding projects

    Once this major Ideal has become a Truth, I will have to resume my main objectives that I left in September, namely to code the crafting system (yes, more coding!) and to finish the scenario, the Event-Making and the mapping of the second town of the game.
    Don’t forget that I am the only person with coding skills in the team. All of these tasks rest solely on my shoulders, which undoubtedly makes programming the bottleneck of the project.
    At least, I tell myself that all the code is already ready and will significantly facilitate my migration to another game engine such as Godot or Essentials. The raw data is already formatted, I would only have to create the methods so that the game uses mine and not the ones native to the framework.


    A word about savegame compatibility

    Such a profound change in the data structure unfortunately makes old saves incompatible, as there are too many conflicts to solve. Furthermore, coding “compatibility patches” significantly impairs the readability of the code and the performance of the game (especially when they are routines called in combat).
    So, I took the opportunity of this reset to remove all the lines of code that are dedicated to old savegames compatibility. It’s also the perfect opportunity to modify the Pokémon data structure. As the data structure will be swollen with about a hundred of new data (I plan to manage a large history of actions and achievements of your magical creatures), it is important to cut the dead branches and to trim the thick ones. I’m just hoping to have time to restructure everything I want about Pokémon so that there is no future save incompatibilities (at least as long as I stay on PSDK).

    One thing is sure: we are officially leaving the “Roots of Yggdrasil” cycle to move towards “The Branches of Knowledge”, a cycle that is characterized by significant changes on the databases. The next update will be a 0.4!


    The sinking of Deviantart

    It’s impossible not to mention this in our diary as it has been one of the causes of demotivation in the last few weeks.
    Deviantart and its new “anti-NSFW” policy blindly assigned to an artificial intelligence has caused a significant loss of visibility to the project (from 40 to 80% of views drop!), and in turn a loss of morale on the team. Indeed, our Deviantart account alone represented more than 50% of the public visibility of Sacred Phoenix. It hurts my heart to see some of the images of our portfolio shadow-banned and crossed out with a big “mature content” for unregistered users (as much as 80% of our views), because a robot decided so, while our fangame has never published a mature artistic work.
    So, we went looking for alternatives and decided to promote Sacred Phoenix in English on two new social networks: Instagram and Tumblr (in addition to Twitter where the communication is done in French). This will avoid having all our eggs in one basket.

    It’s also an opportunity to improve our communication by doing more quality and less quantity, as I was already doing on PokéCommunity and Relic Castle. Before, raw images were published one by one on Deviantart. Now, our art is revealed with the colors of the project. It feels more professional.