The Beginnings (July - November, 2017)

Hello, my name is Angelo P. 

I am a software developer and video game architect. I started developing The Tarnishing Of Juxtia two years ago. Although long overdue, I have finally decided to start a development blog. I would like to discuss development from the beginning. Since there is two years worth of material to catch up on, I will be summarizing everything in a series of blog posts.

Untitled And Inspired

In July 2017, I started working on a yet untitled video game. I wanted to create something that combined my interest in video game development and games like the Dark Souls series. Building a 3D game was out of the question; I thought it was too large of a project to work on alone. Instead I had the idea to translate the gameplay mechanics from the 3D world of Dark Souls to a 2D platformer.

I am not the only one who has been inspired by Dark Souls. A whole genre, called Soulsborne, has sprung up that refers to games that have similar gameplay mechanics and systems as developer FromSoftware's Demon Souls, Dark Souls, and Bloodborne franchises.

Keeping this in mind, the way I would construct my game was to figure out what elements gave Dark Souls its essence. I would need to recreate them, with my own spin, in a 2D world. I applied this methodology to the conception of many core elements of my game. However, as the game evolved overtime, many of these systems were eventually reworked in such a way where they only bared a minor resemblance to how they started.

At the time, I considered the most important concepts to be:
  • Combat
  • World physics
  • Item scaling
  • UI design
  • Character leveling
  • Use of light
  • Save mechanics
  • Boss importance
  • Storytelling methodologies
  • AI complexity
I had to create all of these components from scratch. My platform of choice for doing this was GameMaker. I had experience with it in the past and I enjoyed programming in its native language, GML. And, until I could find a professional artist, I decided to handle the artwork myself. I would either find free assets from various online communities or create the pieces.

Now it's time to start explaining the details from the beginning.

The Story

The very first part of the game I wanted to tackle was the title screen. I had an idea of scrolling text cycling through the screen with summaries of the main story as dramatic music played. In order to do this, I would need to write the important parts of the story.

I came up with something that reminded me of a mythological tale. 
Here is the original script:

The Gods in their fortresses of power, who rule over the world, often squabble with another. Through pity, jealousy, and desire – wars have been waged. 

The feud between Juxtia and Drelium is one that spanned an unknown time. Its cause, almost lost to the ages, has been located in the wastelands between their two domains. 

Juxtia wished to create a beautiful race of mortals, one that mirrors the many races created by her kin. Juxtia wove a song, a never-ending tune, made entirely of her heart and soul – ultimate beauty.

And from her song she sought to establish a foundation of creation. Her mortals would forever be created in sync to the fabric of song. 

Drelium, ever jealous, seized the early mortals of Juxtia, corrupting them into ugliness. 

Drelium went to his kin, the other Gods, and presented his corrupted mortals. He argued, that for all of their intended beauty, the mortals of Juxtia would always grow into indescribable ugliness. 

The other Gods, many in jealous disdain of Juxtia, blindly accepted these explanations. 

Darkness had always been the only trait never used by Juxtia in her creations. 

With the betrayal of her kin and the smearing of herself, she looked to the curious powers of darkness. 

She crafted a warrior, whose sole purpose was to exterminate the fortresses of Drelium and injure the God himself. 

This warrior would only be known as the beautiful darkness.

Once the story was complete I still had a few more things to do before I could finish the title screen. It needed elements from the engine that were not yet built. So, I created the processes that would handle generating UI elements and taking in button inputs. Finally the title screen became a reality and I had the beginnings of a game.

November 3rd, 2017

The Foundations

The next part that seemed logical to me, was to start developing a character, with a sprite, that could respond to player input. Sprite animation is done by rapidly changing frames. A more traditional way of doing sprite animations is to draw each frame by hand, which can actually mean that every frame is a new drawing. For example, in the first frame, a character will be standing still. In each proceeding frame, the character moves a little bit more than the last. Until it reaches a point where the last frame can tie seamlessly into the first frame. If these frames play in a loop, it creates a repeating animation.

Instead of traditional sprite animation, I chose to use Spine 2D, a bones based software that integrates into Gamemaker. In Spine 2D, sprites are tied to bones, which are then connected to each other. The bones are moved around to create keyframes which the software then connects by generating in between frames. This produces a smoother animation and saves time as only one drawing is required and there is no need to hand create every single transitional frame. Additionally, animations could always be modified.

The first attempts were not visually pleasing, but they were promising. I had created a basic model and bone mappings. It proved to me that my ideas could become a reality.

November 3rd, 2017
I expanded on this concept and created some animations for attacking, blocking, dodging, and jumping. Now, greatsword in hand and purple shield in the other, my character was ready for battle. Or they would be if there was anything to fight. But, development of an enemy and AI would have to wait. There were other matters that needed to be addressed first.

I wanted to design combat in a way that would scale well. In order to make this possible, I needed a common ancestor that both the player's character and enemy NPCs could inherit from. To explain it simply, I designed the player and NPCs so that code could interact with one or the other in the same exact way. The name I gave to these things (both player and NPCs), was lifeform.

For combat to work in the way I wanted it, lifeforms needed stats and levels. I created a set of each. These would allow for the calculation of things such as, health, stamina, and weapon damage. 

Levels:
  • Strength
  • Dexterity
  • Vitality
  • Endurance
  • Wisdom
  • Intelligence
Defensive Stats:
  • Slash
  • Thrust
  • Strike
  • Magic
  • Stability
  • Poise
The levels would play a role in everything a lifeform can do and the defensive stats would be used when receiving damage, helping mitigate the total destructiveness of incoming harm. The player would be able to adjust levels using experience points gained from combat.

In addition to these levels and stats, lifeforms would have pools of health and stamina. Health would be how much damage a lifeform could take before dying. No regeneration on its own. Vitality drives this stat.

Stamina would be used for actions. Regeneration was necessary here. Stamina is tied to physical actions. That includes things such as: attacking, sprinting, jumping, and dodging. No regeneration would make playing impossible. Stamina regeneration would rely on the Endurance level. The greater the lifeform's Endurance, the faster their stamina regenerates.

Weapon damage would be calculated in a variety of ways, using every possible stat and level. I plan to create a separate blog post where I can go into more detail about weapon damage calculation.

Enemies And AI

Once the data handling of the player's stats was finished, it was time to develop the first interactive part of combat: enemies and artificial intelligence. 

In the next blog post, I will discuss the conception and implementation of these two concepts. 

Thank you for reading.


    

Comments

Popular posts from this blog

Creating Enemies And Their AI (November 2017)

Looking for an artist to join our team!