This last week seemed to just blaze by. I started this week by finalizing the look of my game. I added a cel-shader to the post processing volume that gave the world an almost "wind waker " feeling to it. Because of this, i decided to update the water material to fit the new style (opting to go for a mid ground between the cartoon-y Zelda: Wind Waker style and the realistic look i had before). Once that shader was cleaned up, I went back to the sky sphere I had set up a few weeks ago. I liked the day-night system that was already in place but i found the clouds to be a bit off...so.... i changed the sky sphere to a sky cone. This, as well as playing around with the cloud material, gave the illusion that the clouds were getting far away when approaching the horizon. I also brightened the clouds so to match the new, toon style of the world. Once the sky was set, I added another shader that created cartoon lines around objects (as well as around extreme normal change situations) to give the already toon-y look a...more toon-y look.
I then shifted gears and, finally, cleaned up all the sprites i had drawn from the weeks before. I used these sprites to create animations that will drive the combat system. One by one, i had to set the collisions to be exactly where they were needed (so to avoid situations where the characters may be across the screen from each other but still able to hit their short-range attacks). This was VERY time consuming and, for a lack of a better word, BORING. But, i got through it and now i can finally say that you can actully fight in my fighting game. Huzzah!
After that it was time to face the music. I had to finish the materials. Spending a good two days, I went through every object i had on the overworld and added the materials i was lacking (as well as tweaked the older materials to mach the new style).
In class, a peer of mine shared a video that showed how to sharpen the look of a game using post processing materials so, once again, i dove into the post processing and was surprised to see that this sharpening worked great with the cartoon lines that i had already added to the game.
Adding signs and redoing the entrance to the first dungeon marked the end of everything i had put off.
I decided to end the week with expanding the landscape and sculpting a bit more distant mountains. It seems like all that's left (when it comes to critical functionality) is to draw the remaining animations, which, if we're being honest, might be a bit more tedious that i originally expected.
With last week being reading week, as well as how hard I've been pushing myself the days before, I decided not to write an entry last week as well as go easy with the workload this week. While I'm not saying I sat in bed all day doing nothing, I did enjoy myself and took things pretty easy.
Last entry had finished The AI. So what came after was the clean up. I've spend several days cleaning up the code and finishing simple stuff that I has just put aside and never really got to. I started with Over-world chests. While i had drawn the images before, I not finished the functionality for them. That, as you'll soon read, seemed to be the theme for the past few days. I re-did some of the materials for props that were sitting around as well as added materials to the building tool i made a while ago. I added a shader to the game itself (something to not change the materials but just give everything a cell-shaded look). I finished a story player that now allows me to simply add entries for the game to play out whenever needed. I finished the bit of code that was tasked with inflicting status effects onto units in battle as well as created a system to trigger and play custom battles that relate to stories (these come with custom game-boards that can be fitted to feel properly laid out for the terrain around it). And lastly, I did do alittle more drawing for sprites and battle animations.
While none of these tasks were difficult or all that groundbreaking, I am glad I took the time to finish these smaller tasks. This week, while not all games and fun, was needed. My mind was stressed and i was starting to feel burned out. Now that I've rested, I'm all ready to really get back into working on this game.
This entry is late due to the fact that I kind of already did it? This week I had to complete what my Profs liked to call a "Vertical Slice"- where I take on aspect of the project and complete it to the end. In my case, the Vertical Slice was my AI. The following is the write up i did on it. Cheers :)
As a Game Designer, I was unsure at first as to what would count for my vertical slice. Would going over a single game mechanic be too little? Would drawing all the sprites be too much? For a good two or three days I was at a lost and couldn’t exactly pinpoint what I wanted to call my vertical slice. In the end, it took a friend looking over my shoulder to tell me “Just do that.” And so, I did.
For my Vertical Slice, I decided to finish creating the AI for my game…as in, all of it: what it does in a duel, on the game board, what cards to pick and when to use them, the whole 9-yards.
The following is detailed documentation on my workflow and any problems that came up:
I started by thinking about what I needed it to do. Looking up games like Hearthstone, Smash bros, and the like made me realize that a simple list of what to do and not do wasn’t going to be enough. And so…I hijacked the white-boards in the lab.
The hardest part about planning out behaviour trees like this is boiling down everything into very simple, yes or no questions. I was joking while doing the but the statement I made-I think- I still agree with. “Computers are ridiculously…. Dumb.”
Once everything was out for the world to see, I combed through every branch, thinking of any way an infinite loop or dumb result could occur and rewriting the trees several times, before I was finally happy with what I had. Then It was time to translate that into code (Or blueprints in this case):
And so I finished with this, Enjoy :)
While it has been a while, I'm not back and ready to work. Over the last month, School's been chugging along and I've been hard at work. Here are the weekly log entries I've written but not had the chance to post until now (Enjoy ;) ):
Glori: Development Journal
Week 1 (Jan 11 2019):
And Thus, I begin…
This week I started work on the necessities. I already had created my “Map Pawn” last semester while working on my proof of tech, and so I worked around it. I created a landscape based on the map I made during preprod and imported a water material that I created dur a different assignment (also last semester).
After that, I realised that with the day-night gameplay I had in mind, the default sky wouldn’t suffice and so I created an in-game “Time Manager” that changed the in-game time while the player is in the overworld and a custom sky sphere. This sky sphere has a sun, moon and two layers of clouds. The Light being cast from the moon has its light and colour based on how far up it is in the sky (I love the colour and the lighting at around sunrise 😊). Every in-game hour (about a minute of real time), the clouds will shift in density and size as well as direction.
After that, I started work on the encounter system. For now, I’ll create it like the rest of the world, a separate level that gets called in if the map pawn triggers an RNG check. It works but it’s choppy and doesn’t carry over information as smoothly as I’d like it too (also sometimes it just forgets to unload the overworld once the battle level is loaded. The tiles are simple, I placed 19 of them in a hexagonal pattern in the battle level. I’m thinking of modeling different backgrounds based on when the battle level is called but I understand that that’ll be a lot of work. These hexes tiles should know what is on them and react to the player’s mouse.
Lastly, I started white-boxing the area that’ll be present in the demo. It’s not much as of yet (just some cubes scattered around) but it’s getting there.
Week 2 (Jan 18 2019):
I’ve changed my mind (on a few things). Instead of modeling all the buildings (or modular pieces for the buildings), I’ve created a blueprint that is similar to a “SIMs” house builder. With this, I can set up every house or building everywhere and I’ll just have to come back and swap out textures later. I’ve also created trigger boxes That’ll determine if the area the player is in is safe or what enemies they could randomly encounter.
The biggest change I’ve made this week was the choice to change how the battle field is spawned in. Last week, I thought to just load in a different level entirely (think in the style of “Pokémon”, or the older “Final Fantasy” games) but after getting that working (and yes, I did fix those bugs I mentioned last week), I found it too…disconnected from the rest of the world. I changed the hexes to spawn onto the overworld in a cascading matter before the pieces spawn from where the map pawn is (The map pawn hiding at this point) before walking into position. Doing this opens me up to having different board types and giving the player the option to position their units before the battle. Currently, I’ve made 5, pre-set board types: The Hexagon, The Huge-Hexagon, The Doughnut, The Wide Hexagon, and The Tall Board. I finished up the material for the hexagon tiles and used the “Niagara” plugin to add a nice after-image effect to the tiles as they cascade onto the overworld.
I finished white boxing the village and went into “Substance Designer” and started making materials. I also created a 2D-ish tree actor and was point to place down a forest before realizing how long it would have taken me. So… I created another tool (Much like Unreal’s built-in foliage volume tool) and I had my forest in a few minutes. I ended the week by placing in the invisible walls around the world.
Week 3 (Jan 25 2019):
Under the hood.
This week was a bit less flashy than the past 2. No fancy materials made, no giant new game-mechanic added. I was focused purely on optimizing what I did have and cleaning up whatever blueprints I had….and I sure needed it. While in the moment, with my mind racing and the music going in the background, I tend to be messy with my blueprints, naming conventions and file placements. The start of this week was used up going back and fixing everything that seemed messy. Game actors were renamed. Unused code was cleaned up or erased, Materials were simplified, and settings were tweaked.
On Wednesday, I decided to hunt down the new professor for the second years and ask him for any tips or tricks he had that would or could help me. I’m happy to say that instead of a few words, I got a crash course in optimization, pointed towards several videos and online documents, and a nifty little cheat sheet that I’ve been reading and re-reading all week. For the blueprints, I’ve been going through every line and chain of nodes and removing redundancies as well as just plain replacing certain chains of nodes with single nodes that pretty much had the same functionality, for example, instead of having a foreach loop that compared indexes of entire lists before picking out the index I wanted, I just used a “Get at index” node (and felt silly for not doing so earlier).
Once all the cleanup was completed (Thursday evening), I began working on the combat UI for the player. Surprisingly, (and happily) I found myself ahead of schedule this week.
Week 4 (Feb 1 2019):
I started this week by finishing up the encounter system. Now, each section of the overworld contains a few possible encounters with each encounter randomly picking through this list. I set up a system for managing the player’s actions deck and formations as well as added visuals to the encounters. After that I dove straight into working on the combat system. First, I created a system to keep track of not only who’s turn it is but also what phase of the turn is currently being played out. Battles are split into 5 phases; beginning, Prebattle, Duel, Post battle, and Ending. With these defined, I created a blueprint for the action cards as well as added a physical model to the game so that the player can see their deck sitting on the field. As their field spawns in, one of these card models would spawn in for each card in the player’s action deck and stack onto each other.
Next, I created a movement system that allowed the player to move characters they own at the beginning of their “Beginning” phase or at the end of their turn if they choose. After that, more visuals were added to the combat screen as well as a new, “pre-combat” screen that show’s the player’s chances of landing and/or getting a critical hit of their “first hit” of any duel that they initiate. This screen flips sides and colours depending on there the Player’s unit is compared to the AI’s unit.
Then I added a nice visual for the ending and starting of turns before finally, ending work for this week by creating the “draw a card” function for the player where the model for the next card slides off and de-spawns from the deck stack and a UI widget slides onto the combat screen’s “Hand”. As of this point, all of the Player’s combat options are working. Next week will have the AI’s options and the actual Fight mechanics be the focus of development. Once all that is complete, I’ll shift focus to artwork and making the materials more appealing to look at.
Once again, Tuesday has come around and I have another week of progress to record. While I'm planning on starting the tutorial video next week, I can safely say everything is going surprisingly well and while there was one or two revisions I needed to make, for the most part I stuck to the plan I set up last week.
Over the past week, I've been playing around with small tasks for Glori-trying to figure out a smooth and repeatable process that'll make it easy for me to tackle large pieces of the game . So far, I've realized that blueprinting (Unreal's visual based coding) is more-or-less always going to be the thing that takes me the longest to finish.
All that being said, I think I've come up with a process that'll help me cut away any time killing tendency I have.
The process is as following:
Step 1: Get it on paper.
Getting an idea out with pencil and paper, in either a clearly written paragraph or pseudo code seems to help keep the task I'm going to do in line and create a clear guide for me. It doesn't have to be an extremely detailed document but i should be able to take the words and replace them with unreal nodes easily.
Step 2: Break Down what's needed.
After i have the idea clearly stated in what's happening or what i'm doing with something, making a simple list of everything that needs to be done or made is the next task. These items are then sorted by difficulty (easiest first).
Step 3: Assets
After the list is made, any and all assets will be prioritized first (Again in order of difficulty). This way Photoshop, Maya, and whatever other programs that are not unreal can be done with and turned off. This'll also free up all my remaining time for unreal blueprinting and bug testing.
Step 4: Functionality
Once all the Assets are imported, they are sidelined and all functionality is created. This is when everything shifts to make sure everything works and does what it's suppose to do. Placeholders will take the place of the assets to avoid losing time tweaking things to look perfect.
Step 5: Finishing
After the functionality is complete, NOW I add in the assets and tweak (Who would have guessed?).
Step 6: Bug fixing
As the title says, this last step is all trial and error, making sure there isn't anything wrong.
For the Proof of Tech I'm planning on making a simple transition from the over-world map into the game board mode.
The main character will roam around the over-world map with each step causing the system to run an RNG check. If one of these checks come back positive, a battle will be triggered and the battle board level will be streamed in while the over-world map level will be hidden away. The User's partly will be placed into position while a region
With reading week slowly ticking by, this is a great time to start work on Glori. Here i'll be writing out a sort of log as I go, documenting what worked what didn't as well as general updates and progress and plans.
The "Demos" page has been added to the website with a bit of information on the games i've been working on. Demos for each of these games are on their way but they might take a while. :)