Dev Log 4: Art style

Heyo, its been a while. I’ve been hard at work preparing the many aspects of my game to begin the journey onto Steam. So without further adu, We Are Live is now listed on Steam! Wishlist It Here!

With that out of the way its time to show you what I’ve been working on. I’m a programmer by trade so the tech side of things comes way more naturally to me then the art side. However I have been working with some fantastic artists to help bring the game to life!

Thanks to Bossbuzz I have been able to progress on the art front with the fantastic sprites, and illustrations they created for the game. They are able to cover for a lot of the artistic side of things that I’m not so great at.

Not only just the sprites were improved, many other things have been as well.

So is it time to talk about the combat system? Unfortunately not, but I will talk about the visual updates to the combat scene! The UI has been updated with a cleaner, less pixelated finish. As well as many small updates to the effects, the current turn indicator, and more! All of these tiny details are helping We Are Live to become the game I really want it to be! I hope you will join me for this adventure!

Game of the week

Another indie game developer I follow has been working extremely hard to prepare their game for a kickstarter this week, and I wish them the best of luck with Zapling Bygone. Please support them here! https://www.kickstarter.com/projects/9fingergames/zapling-bygone They also have an extremely fun demo on steam, so I suggest checking them out!

Until next time!

Ryan

Dev Log 3: Shaders

A couple weeks ago I started venturing into shaders in the unity engine. More specifically using the shader graph, and well I can safely say I learned a lot, and in the future I will make sure to start off my projects by updating the render pipeline to avoid problems like this.

Whoops I broke the render pipeline.

The reason I did all this was to try and capture some of the ascetics of the game Octopath Traveler. I needed to be able to use shaders to make that happen, for both spell and attack effects. I also inadvertently made the lighting look better in all my scenes.

The Unity shader graph is a monster to learn, and I have barely scratched the surface. But thanks to a couple YouTube channels I have been able to start delving deeper into this complicated system. I’m excited to be able to create even more cool effects with the shader graph in the future.

Overall the effects turned out well

Game of the Week: Skul: The hero slayer

So when I began working on updating the shaders I was playing a game that had just released at the time, Skul: The Hero Slayer. A wonderful platforming, reverse RPG where you play as a skeleton getting revenge on the heroes for capturing the demon king. It was a very enjoyable experience with a lot of very fun additions, such as fighting heroes that get stronger against you when you die to them. Lots of amazing pixel art, a very solid soundtrack, and an unexpectedly touching story. I’d highly recommend going to check it out, as it was an absolute joy to play through, and I will continue to play the game as they add more content in the future!

Thanks for reading! Follow me on twitter for more consistent updates.

o/ Ryan – Ventus Games Lead Programmer and Designer

Some Game Dev thoughts: Doom

As I continue my game dev journey I play many games, and see many many more. I try to learn something from every game I play, instead of just playing through the game. This week I spent some time playing the newest in the Doom series, Doom Eternal. It was an absolute joy to play though, as it has the most important aspect to creating a game, fun. I feel that if a game isn’t “Fun” why bother making it, and Doom Eternal really capitalizes on that fact. Dashing around a room and being forced to think on the fly about your actions really make doom an enjoyable experience, and also who doesn’t like killing demons?

a small history

The first Doom game came out in 1993 and was one of the first FPS games, and started the trend of people calling games “Doom clones”. Which was actually any term for First person shooter games. It was developed by Id software at the time, after Wolfenstein 3D which was also one of the first FPS games. What was interesting about these games is they looked 3D, however most of the sprites within were 2D which is a technique that I compare to my game as a 2.5D style. As the years pass more and more iterations of the game Doom continue to be made, showing how much a game can be changed throughout its life and still be fun to play almost 30 years later.

current doom

In 2016 the franchise was rebooted by Id software, and while I played the 2016 game, it just didn’t feel the same as Eternal. Showing simply how much they can improve on a formula. Eternal felt more like a platforming game with shooting mechanics then just a first person shooter, and as you progressed through the game the player’s skills had to increase with the increasingly difficult enemies you encountered. It was very well designed and had a very good difficulty curve. This is something that is extremely hard to pull off well, as many games are just known to be extremely difficult from the start, such as souls like games. Doom Eternal wasn’t necessarily the dark souls of first person shooters, as I played on the normal difficulty. This was a great choice for me because I died just often enough that I felt challenged, but not enough that I wanted to switch to an easier difficulty.

But why are you writing about doom here?

As I said above the design of games is very important, because they determine if the game is enjoyable to the player. People enjoy playing games with their friends, so multiplayer games tend to have a lot more playability because of this. Their friends make it enjoyable. However for a single player game, you can’t rely on a aspect like this, and have to create something that gets people talking about your game. Doom does this by being violent, and by being completely absurd. Then people also stay with the game because its fun, these combine to draw people in and create a unique memorable experience. Something that I hope to recreate in my games, but on a smaller scale. The goal would be to find something fun for the players, and give them something to talk about with their friends, that gives games staying power.

Music

The music in doom is very stylized and fits into the aesthetic extremely well, a mix of metal and EDM to create the perfect blend of music for slaying demons.

As always thanks for reading, and if you would like to see more game updates from me that aren’t just walls of text, please follow me on twitter!

Ryan o/

Ventus Games Lead Programmer and Designer

Overview of the Overworld

Greetings friends! Its time for dev log #2, this time with a focus on the non combat aspects of designing a RPG game. The combat system is still in the works, but there will be another dev log on that when it is ready to be shown off. For now, its time for overworld movement and interaction!

A little look into the overworld

There is a lot to unpack from that gif. First things first, the game is inspired by many other games. Most notably Paper Mario, Octopath traveler, and Tokyo mirage sessions. I will be talking about these games a lot over these dev logs and the connection will be made clear. An overworld in games typically serves as the place where the player navigates around the world, learns the story, and begins fights. They can also solve puzzles and interact with chests, doors, and save points. Essentially the overworld acts as the anchor point for everything else in the game, and ties it all together.

Next lets go over the player movement, Unity has a couple ways that you can control the player. Either by just changing the coordinates of the character game object around the scene. Or using unity’s built in character controller script. Both of these are great options, but I decided to make my own using the transform system. The position of the character is changed depending on which direction the player presses on the wasd or arrow keys, and then the animation reacts to it as well. Flipping the direction depending on the most recent direction the character is heading in. The animations were made by myself, with the Octopath traveler sprites as a reference. This allows the character to move freely about the 3D space and the animations match well with the character, creating a paper like effect, similar to those seen in Paper Mario. However with that I also decided to make some 3D objects in the world, creating an interesting clash in styles. This is my simple player movement script.

void Update()
 //update is called every frame
    {
        //this stops the player from moving
        if (!lockMovement)
        {
            vector3Move = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
            if (Input.GetAxis("Horizontal") < -.1)
            {
                sr.flipX = false;
                a.SetBool("Moving", true);
            }
            else if (Input.GetAxis("Horizontal") > .1)
            {
                sr.flipX = true;
                a.SetBool("Moving", true);
            }
            else
            {
                a.SetBool("Moving", false);
            }

            if (Input.GetAxis("Vertical") > .1)
            {
                a.SetBool("Moving back", true);

            }
            else
            {
                a.SetBool("Moving back", false);

            }

            if (Input.GetAxis("Vertical") < -.1)
            {
                a.SetBool("Moving f", true);

            }
            else
            {
                a.SetBool("Moving f", false);

            }


            transform.Translate(vector3Move * playerSpeed * Time.deltaTime, Space.World);
//this actually moves the object in the world
            if (rb)
            {
                rb.freezeRotation = true;
            }
        }
    }

Interaction is also extremely easy to implement, using unity’s tag systems. You can make a unique interaction script that can be attached to any object allowing the player to interact with many objects in the world easily. Alternatively you can just add colliders around the object that the player should interact with. This would mean that you would have to create a new script for each object you want to be interactable, but it isn’t complex to do. You can use this for dialogue when a player is looking at something within the level, or to open up a chest and grant them an item. As well as interact with save points, and other related overworld systems. This is my simple chest script.

 void Update()
    {
        if(canOpen && Input.GetKeyDown(KeyCode.E) && !opened)
        {
            canOpen = false;
            a.SetBool("Open", true);
            switch(itemToAdd)
            {
                case 1:
                    IM.HPpotionCount++;
                    break;

                case 2:
                    IM.MPpotionCount++;
                    break;

            }


            
        }
    }

    public void spawnItemText()
//this spawns a text box that tells the player what item they obtained
    {
        GameObject temp = Instantiate(itemText, gameObject.transform.position, gameObject.transform.rotation);
        temp.GetComponent<UIFader>().text.text = text;
    }


    public void OnTriggerEnter(Collider other)
//unity collision detection
    {
        if(other.CompareTag("Player"))
        {
            canOpen = true;
        }
    }

    public void OnTriggerExit(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            canOpen = false;
        }
    }

Game of the week

With the massive fiesta that is Cyberpunk 2077 happening right now, because the game got removed from the PlayStation store. I’d like to talk about a game I enjoyed from earlier this year, No Straight Roads. This game was an action RPG rhythm game with a focus on fighting different EDM artists to take control of a musical themed city. The game itself wasn’t anything extravagant, and I had some texture issues when playing it on switch. The combat also was a little rough around the edges in the final portions of the game. Each fight they just continued to increase the damage attacks did when they hit you, and it felt that they were no longer tied to the music so they were extremely hard to dodge. More damage != more challenging, this was a problem I had with the final boss because there was no good way to increase your health pool in a relevant enough way to stop yourself from getting 3 shot by the boss. However the soundtrack itself was outstanding, every fight had a unique track to go with it, themed to the person you were fighting against. They also released a free Christmas update with Christmas themed versions of the songs recently, that I can’t wait to check out.

Until next time,

Ryan o/

Turn Based Shenanigans

Hello, and welcome to what will hopefully be the first of many dev logs I make for my solo developed, currently untitled turn based RPG game. I am currently developing the game using Unity and C#, and hope to release it to the world sometime soon. These dev logs are going to be where I talk about what I have been working on this week, and offer some insight into the game creation process. This first blog is about the turn based combat system in games, and a look into the thought process that went into it.

(This is the current look of the game, but it will most likely change as I continue to work on it.)

At first glance turn based games are a simple concept. A character, either player controlled or an enemy gets to preform an action, and then the system moves down a list and lets the next character gets to preform an action until every character gets a turn. From there enemies and players have different moves, strengths, weaknesses, and other stats to allow variation throughout the game. This allows for strategy, power levels and other interesting mechanics to be added into a simple system. When programming a system like this it is all just numbers flying back and forth, until animations get added it doesn’t feel much like a game. As well as it mostly feels like players will just be clicking the attack button each time it is their turn without any added mechanics. This is where the struggle of creating a turn based game comes in, as the concept of the game itself might be simple, the interesting part comes from the mechanics.

Simple Right?

The code to build a turn based game starts off simple, something like checking the characters in combat and setting them to an order based off whatever stat you would like.

 for (int i = 0; i<players.Count; i++)
        {
            //this allows me to activate and deactivate combatants before the combat order is decided
            if (players[i].activeInCombat)
            {
                Combatant item = new Combatant(players[i].Cname, players[i].speed, players[i].combatIcon);
                combatants.Add(item);
                Debug.Log("Added: " + item.CName);
            }
            else
            {
                players[i].gameObject.transform.localScale = new Vector3(0, 0, 0);
            }
        }

        for (int i = 0; i < enemies.Count; i++)
        {
            //this allows me to activate and deactivate combatants before the combat order is decided
            if (enemies[i].activeInCombat)
            {
                Combatant item = new Combatant(enemies[i].Ename, enemies[i].speed, enemies[i].CombatIcon);
                combatants.Add(item);
                Debug.Log("Added: " + item.CName);
            }
            else
            {
                enemies[i].gameObject.transform.localScale = new Vector3(0, 0, 0);
            }
        }

        //this is the combat order list
        combatants = combatants.OrderByDescending(o=>o.speed).ToList();

        for(int i = 0; i < combatants.Count; i++)
        {
            Debug.Log("Combat order: " + i + ". " + combatants[i].CName);
        }

        

        nextTurn();
}

After creating the list you then send it to the next characters turn, and give them an action list. Where the player can pick their action, or the enemies select their action and target a player.

 public void nextTurn()
    {
        actionWindow.SetActive(false);
        actionWindow.GetComponentInChildren<TMP_Text>().text = "";
        Debug.Log("Going to next combatants turn!");

        string temp;
       if(orderInTurns < combatants.Count)
        temp = combatants[orderInTurns].CName;
       else
        {
            orderInTurns = 0;
            temp = combatants[orderInTurns].CName;
            Debug.Log("Reset combat order");
        }

        CL.rotateOrder(this);

        if (combatants[orderInTurns].isActiveInCombat == false)
        {
            Debug.Log("That character is dead, going to next");
            playerTurn = false;
            enemyTurn = false;
            orderInTurns++;
            nextTurn();
            return;
        }

        orderInTurns++;

        if (players.Find(i =>i.Cname == temp) != null)
        {
            CactiveTurn = players.Find(i => i.Cname == temp).Cname;
            playerTurn = true;
        }
        else
        {
            CactiveTurn = enemies.Find(i => i.Ename == temp).Ename;
            enemyTurn = true;
        }

       

        Debug.Log("It is " + CactiveTurn + "'s turn!");

        if (playerTurn)
            playerActions(CactiveTurn);

        if (enemyTurn)
            enemyActions(CactiveTurn);

        
    }

That is the simple basis for a turn based combat system, however like I said above this mostly results in the player just clicking the attack button to deal damage and nothing else, which isn’t very interesting. This is where game design begins to shine, and one of the harder portions of creating a turn based game. I’m not going to get in depth to the systems of my game yet, but I will take a look at some other ones. Pokémon is a simple version of turn based games. It features strengths, weaknesses, and neutral damage numbers when an attack hits, as well as character/Pokémon buffs and debuffs allowing for more interesting strategies. This design is so good that its become the most popular turn based game in the world. Expanding on the simple turn based system games like Final Fantasy 7 and 13 take the system and add a time mechanic to it. Making both players and enemies wait till a gauge fills up before the characters are allowed to attack, or do certain actions. There are many ways to create new and unique systems for turn based games, but it requires good design space, and fresh ideas to make something completely unique.

But why turn based?

So in the time that I have spent developing my game I thought about making it a real time combat system as well, similar to how many of my favorite action RPG’s do (Kingdom Hearts, Nier: Automata). This system at first glance may seem harder to create, however I would argue that it is simpler. The mechanics like strengths and weaknesses still come into play, however they aren’t as pivotal to the success and fun of the game as they are in a turn based system. In a turn based game, that is all you have to make it interesting and unique. In real time you can make different weapons, combat styles, enemy movement patterns, attacks, and more. Its a lot easier to visualize what the strategy is for those games, then it is to create a turn based strategy system. Taking all of this into account, I’m sure real time games have their own share of difficulties to tackle when creating them.

Game of the week

At the end of each of these posts I would like to highlight a game I am currently playing/ am interested in/am excited for, as well as a clip of music from games that I feel should be appreciated. With the Last of Us: Part 2 winning game of the year, I would like to highlight one of the other games nominated, Hades. It is an action roguelike game made by the fantastic indie team Supergiant games. I love all of their games and can’t recommend them enough, so if you get the chance to play any of their games do so. My favorite is Transistor because of the Sci-fi theming, as well as the vocal tracks within the game. It also creates a unique spin on the turn based system, allowing players to pause time and plan out very quick actions to be preformed in succession, where all the other enemies act in a typical action RPG style. It is fantastic game design, and I hope supergiant continues to make fantastic games!

Until next time,

Ryan o/