As part of the curriculum, it is stated that we need to pitch an idea for our synoptic project. The way it works is that we all pitch with people voting on the project they’d like to work on. The teachers then decide on the projects and the groups that work on them.
With that being said, this blog post will cover my pitch and my thoughts throughout the way. Download the file here:
My pitch is Random Racers. Random Racers is a project I was working on last year yet was never finished as I focused on other things. However, for the pitch, I decided that I would revive it.
I’ll now sum up the powerpoint to inlcude the important points:
Elevator Pitch – The best way to sum up Random Racers is by describing it as Wacky Races in game form with elements of Overwatch and MarioKart.
Idea/Product – The idea is of an engaging multiplayer party game where players race against each other. It is targeted at PC, PS4 & Xbox One.
Research – Reference includes Overwatch’s ability system, MarioKart’s racing and pickups and the unlockable system of the Lego franchise.
Style Guide – Heavily stylized with bright colours. Emission also used.
Target Audience – PEGI 3. Particularly appealing to kids yet fun for all of the family.
Role Breakdown – 1 Programmer, 2 Environmental Artists, 2 Character Artists
MVP – Consists of core racing game functionality.
Stretch Goals – Focuses on progression such as unlockables as well as unique abilities.
As you can see, I have everything in place to pitch on Wednesday. The project is one that has potential and could actually be really fun if done right. However, I’m going to be voting on Bailey’s pitch which would allow us to work on our BAFTA game for Synoptic thus killing two birds with one stone. As far as this game is concerned , it’s a win-win as it either gets chosen and I can see what the end product of my idea looks like or it will eventually get made by me and that would be another project under my belt.
Since the last update, heaps of progress have already been made with the game which will be detailed within this post. As always, lets begin by looking at the current state of the game:
I’ll begin by talking about the progress I have made. As I said at the end of the last blog post, I was going to begin working on an inventory system and I did just that. Thus far, I’ve successfully added the adding of an item to the storage inventory as well as the stacking of items and the usage of health items. I’ll cover these in more detail but I figure it’s best to start with what type of inventory we are aiming for.
For this inventory, I am taking inspiration from Minecraft. By that, I mean that all items will start off in a universal storage inventory and it will be up to the player to equip them and such which is the case with armour in Minecraft. Ours would work in a similar way yet would not limit the player to just equipping armour. Our game has magic at its heart so we aim to take inspiration from Fortnite in the sense that we’ll have a hot-bar of available weapons. The idea is that, from the inventory menu, you’ll be able to set your active weapon as well as the spells it can use. Although all spells will be universal, the damage they deal will depend on the quality of weapon. Additionally, I also want to make it so each weapon has its own special ability but that is a stretch goal for myself.
The first thing I needed to add was obviously adding an item to the storage inventory. I would call this in my already existing pickup method created for the quest system. It was pretty simplistic in nature where I used an Item array alongside an InventorySlot Array. It was then as simple as adding an item to that array and displaying it on the UI.
The second step was to add functionality for stacking items which is a crucial feature for any inventory. Of course, some items are stackable and some aren’t so there was functionality needed for both. Hence, I made it so some just add or subtract from an amount whereas others take up a whole new inventory slot regardless of if they are duplicates or not.
The final functionality I added was being able to use the items. I am still in the process of this because items are used in different ways dependent of the type of item. Thus far, it is possible to use health items which is what is shown in the video. The lantern is a quest item and therefore won’t be used persay. Regardless, the health item is consumed, a powerup animation plays and the appropriate amount of health is smoothly added on and displayed on screen and that is all that is needed. We will be adding a particle effect to reinforce this health boost but that will come with time.
I did encounter a few issues where an item would not be added to the inventory if it was stackable but I quickly identified that this was the result of an if statement that stated if(inventorySlot != null). This was all well and good until every inventory slot is equal to null which meant it would never run. Long story short, I did manage to source the problem and it was eventually fixed. I am proud of myself as my debugging skills are quickly improving which is a skill equally as important as the actual programming aspect.
Aside from the afore mentioned functionality, I switched up the UI so that you press E to open it rather than having to press escape before clicking on the quest log button; game feel is important and the prior system was sloppy on my part. I also made it so that quests, inventory and a soon-to come options menu will all we accessible from one menu which I changed thanks to feedback from Nath.
Make no mistake about it, the progress doesn’t stop at me. Bailey and Nath have also been working hard to make a vision of ours a reality.
As you can see, Bailey has now modeled the tile-set for the town and has done a fantastic job of it too. Nath gave Bailey the feedback of making it more stylized which he will act on. The next step for Bailey is texturing and UV unwrapping this piece.
On the other hand, Nath has been developing a camp asset pack consisting of rocks, mushrooms, a tree stump, a dragon egg/campfire, tent, axes and a signpost. As you can see in the video, these look stunning in-game and will play host to some pretty unique items. For example, you are going to be able to pick up the dragon egg as well as the axes. What I like even more about this is – like in games such as Red Dead Redemption 2 – these items are completely missable as they are not an integral part of the game’s main questline. The next thing Nath will be creating is another asset pack featuring more unique assets.
Overall, I am extremely satisfied with our progress as a team and our idea is coming to fruition rapidly as proven by how far ahead of schedule we are. I have no complaints with my team and any feedback we give each other is acted upon and taken into consideration. From the work ethic to the cooperation all the way to the acceptance of feedback, I couldn’t ask nor could I expect anything more from my team.
The BAFTA game has came a long way since I last gave an update on the product. With that being said, this blog post will summarize the past month of development. The main change comes in the form of a quest system that I designed to be modular and versatile. However, I will go over other changes along the way. I’ll begin by showing what the game currently looks like:
I designed the quest system to be modular in the sense that we could have the framework for a mission sequence; I would easily be able to add in quest specific features too. We agreed that three quests at a time is an ideal amount as it isn’t too overpowering yet it does allow you to focus on more than one quest when you get further on in the game. The system is divided into certain quest types:
The system is designed in such a way that new types of quest could easily be added. For example, I’ll most likely add a “Follow” type of quest that means that you’d follow a character to a destination. However, this could also just be made as an adjustment to the already existing location quest. Thus far, only the talk, tutorial and pickup have been added as the combat quest requires the yet to be implemented combat system to be in place.
Each quest is a scriptable object containing crucial data including the objectives, any dialogue and the quest name. These are separated into arrays for completed,active and incomplete which makes saving and loading quest progress much easier to implement. Whenever it is possible that an objective has been completed, I check the event against the conditions and a completion notice will appear on screen should the condition be true.
Rewards are issued upon entire quest completion. Although simple in logic, creating this system was an entirely new concept/experience to me and I thoroughly enjoyed powering through the process. As with most programming tasks, methodical logic prevails and I completed it via perseverance. A few minor additions I have included is the ability to lose and gain health which has no way of occurring right now; I ensured to make this a smooth process too as the bar slowly goes either down or up rather than jumping to its value. immediately.
A few bugs to note include the misplaced over shoulder camera of Wladmir that makes seeing the person he is talking to pretty impossible as well as the lantern clipping through his leg frequently but this was just a placeholder. I’m now going to detail the pre-production side of things and our performance as a team thus far.
Pre-Production + Team Performance
In terms of pre-production, I developed a schedule that – although not yet complete – will keep us on track and ensure that everything is completed in time for the BAFTA deadline.
In terms of our progress as a team, it can only be described in one way: phenomenal. The progress that we have made in only a month amazes me. I’ve got movement fully functional as well as quests whereas Nath has been powering through the assets needed to make the beginning section of the game feel alive. In addition to this, Nath also redesigned the character in such a way that he can have actual armour as opposed to the brown trench coat look. In the video, Wladmir is wearing his casual attire as we intend the player to begin with nothing. Nath has been doing brilliant in terms of work load as it seems like there are new models in the scene everyday.
Meanwhile, Bailey has been developing logos for the game as well as creating a promotional Twitter account which can be seen at @BottledUPGame .
Below is the logo he created:
The team are doing exceptionally well and, at this rate, I feel like we have full potential to be nominated for the YGD BAFTA. Currently, I am working on an inventory system as well as a combat system whilst Nath is putting the finishing touches on the afore mentioned house. Bailey is beginning to work on various pieces of art for the game. Our communication is top-notch too as we are constantly asking each other what we should do in order to improve our mechanics and models. Overall, I am incredibly proud of both our progress and product.
The time has come to conclude yet another project and this time it is none other than the creative and technical modelling project. In all honesty, I wasn’t too thrilled to be doing this project being a programmer which makes it even more confusing that I chose a rather complex thing to model. However, now that it is over with, I am happy with the end product and I feel like it was worth it. I’ll begin with the deliverables and then I will reflect on the project as a whole at the end of this post.
Before starting this project, I knew that I wanted it to be something somewhat complex; this is most likely my last modelling project I will do in my career if I can help it and thus I wanted it to be a good one to go out on. After thinking about what to model, I decided that I would attempt a cat which is easier said than done. I wouldn’t have been able to get this end product if it wasn’t for my friends as – if we’re being honest – I was maybe a little too ambitious with the task I set myself. Josh was a massive help in getting the shape of the cats muscles as the cat was looking rather blocky. Nath aided me massively in UV unwrapping and immensely in texturing so this is by no means a solo project. I did, however, manage to bake the cat and add detail to the high poly on my own which is an achievement for me.
The main thing I can take away from this project is that I fully understand the concept of normal map baking and I can carry it out. Not only that, I do understand a lot of modelling theory and the reasons behind workflows yet I struggle to carry them out myself. This all makes sense though as artistic things have never been my strong suite but I’ve always understood what should be done and how to do it: it just never works out for me in practice.
Overall, this project has been extremely beneficial for me as, although I most likely will never model again, I have newfound respect and appreciation for those who will. I respect and appreciate everyone who has the talent and passion to bring our favourite games to life with both 2D and 3D art as the amount of skill necessary is insane. I gave this project everything I had in terms of modeling and in the end I can safely say that I couldn’t have asked for or expected a better product and that was made possible via peer support.
Upon catching up on my blog post, I noticed that I have not posted about Imagined Worlds in a while. With that being said, rather than separating the updates into separate posts, I decided to just compile all changes into two blog posts: one detailing the demo scene and the other a game mode scene I began creating out of boredom. With that in mind, I’ll go through each major thing I have added and will conclude this post by saying overall how I think we’ve been functioning as a team.
I’ll begin by discussing a minor little detail I added into the game. Being a massive fan of Rockstar and their titles, I have a keen eye for minor details in games and thus I want to include them in my own. This minor addition sees the lights of houses and workplaces switch on when someone enter the building – switching off when they leave too. Furthermore, these switch on in a natural fashion in the sense that they switch on one at a time from downstairs to upstairs. This was a fun little addition and I very much so enjoy attention to detail. Even better, it is all done via two coroutines.
Inheritance – Revised Job System
Another thing I did was optimize my code. Originally, both the hunter and the miner had their own separate scripts. With the new system, they both still have their own scripts yet they function in a different way. What I now have is a base job class that holds three coroutines: Work, Rest and Leisure. Both the rest and leisure coroutines are completely filled in as these remain unchanged and are universal. However, the work coroutine is marked as virtual and has one line of code in it returning it null: marking it as virtual allows it to be overwritten in child classes which is how I want it. Now, I have job classes such as the miner deriving from said base class – overwriting the work method to suit their needs and yields. The parent class also holds the calling of these coroutines via an update function that also doesn’t need to be altered in child classes.
The final thing I am going to address in this blog post is the implementation of sounds which I started recently. I began by addressing the non-diagetic sound in the form of a soundtrack. I spent a good deal of time on this as I wrote up some calculations to figure out how to fade out or fade in tracks. In the end, I came up with the formula maxvolume/fadeTime = interval. This – however – didn’t get me as fluent of a fade as I wanted as you could hear jumps up in volume which didn’t sound good. I took the interval and divided it by 10. This would get me 1/10th of a second and would therefore give me a smoother fade as it is adding onto the volume more consistently.
Aside from that, I’ve been adding diagetic sounds such as waves and wind but I will address that in a later blog post.
Overall, our team has been working really well together despite issues that we discussed and addressed:
I didn’t like the fact that our character looked like realistic base meshes and thus I brought this up and Nath made some stylized models instead.
There was a bug where the editor would crash at a certain point each day which we talked about and Max fixed.
I kept nagging Max to add sound and eventually we agreed that me and Matty would take over the sound side of things.
I feel like Max and I had two different visions with how this game was going to go visually as we have had a few disagreements as I’ve mentioned above. Despite being ahead of our own production schedule and having an MVP at half-term, I couldn’t help but feel like this project didn’t fully pan out the way I would have liked and my efforts to raise these issues were successful but they did throw spanners in the works of things. What is even more frustrating is that these were all avoidable as we wasted a lot of time disagreeing on which models to use character-wise with Max even getting some himself which disrupted the progress as we were always back and forth with character changes as is the joy of style clashes. Like I said though, we are way ahead of our production schedule and our project does fully satisfy the brief providing I get the rest of the sounds in; the issues I raised above were more so mine and Nath’s personal vision for a stylised art style rather than actual problems that would drop our grade. The important thing to note is that we talked this issues out and now the characters are stylized.
Other than these issues, the project is going really well and we have been receiving really positive feedback from lecturers which has filled me with confidence heading into the submission. I’ll be posting more blog posts to do with Imagined Worlds in the coming days when I get specific videos prepared and such.
In terms of project management, we have been incredibly organised and, as you can see, the production schedule lets me know how many programming tasks I have left:
Additionally, I have been project managing myself too by ensuring I have a list of my individual contributions:
Overall, I believe I’ve managed myself really well and – as a result – I only have minor things left to do. Hence, I believe I have been a great teammate as my work ethic has been strong.
Lately, in conjunction with Imagined worlds, I’ve been working on a BAFTA project with Bailey and Nath. Thus far, my priority has been with the character controller as everything else will fall into place from there.
In my last post, I showed my prototype scene where I was experimenting with the actual movement of the character. I wasn’t fully happy with this, however, as it wasn’t as smooth as I would have liked. The animations often snapped into place and the movement felt like a placeholder and that’s because it was. However, since then, Nath and Bailey have been hacking away at the environment and I am currently refining the movement system. This is where we are at at the moment:
As you can see, Nath has done an incredible job at taking his and Bailey’s assets and assembling an environment. He even made his own material for Substance Painter which can be seen on the trees and on the floor with the grassy, pebble covered ground.
The first change I implemented was switching back from single state animations to a blend tree. Given that our game is aiming to have full controller functionality, this works perfectly with this as the amount you press on the analogue stick does matter. I did, however, make a change as it was previously the case that you could run simply by moving the analogue stick fully in one direction or pressing the key. I didn’t like this functionality so I made it so that the input is clamped to only be able to walk unless another button is pressed in which case they will speed up and start running. I preferred this way as there is a time and a place for running and ,in our game, I feel like that is whenever the user specifically wants to.
There are still some blending issues such as when you start running whilst already walking: this doesn’t occur when you go from idle to running as it blends in. I have identified the issue and am currently working on a way around it. Basically, the blend tree functions via a float value that is equal to Input.GetAxis which provides a 0 – 1 value. When walking, the Input.GetAxis is equal to 1 yet I have the float value clamped to 0.5 as that is the walk animation state threshold hence why it just jumps straight to 1 when that clamp is released as there is no damping applied because it is already equal to the max value – it just wasn’t allowed to reach it. This doesn’t occur from idle to run as it isn’t clamped and can smoothly move from 0 to 1.
Other than that, I added jumping which Gary helped me smoothly transition. It still has some issues I’d like to fix such as adding a run and jump and a walk and jump to make it feel more smooth. The final thing I changed was making it so the movement always goes along the transform.forward and transform.right defined by me. I originally set it equal to the camera’s transforms but that didn’t work as it was rotating the player due to the camera being at an angle. A workaround for this was creating an empty gameObject that isn’t rotated. The end result is the character always going in the direction of the camera which prevented any awkward movements.
Overall, I feel like we are making incredible progress both technically and visually. The next step for me is adding sword sheathing and just implementing sword animation in general. I’m really happy with how I am functioning within this BAFTA team. Being the main programmer, the team relies on me to provide gameplay and I think I’m faring quite well in that regard. Unlike the Imagined Worlds team, all 3 of us are on the same page and are working extremely effectively towards the same vision. If we keep this teamwork up, I have no doubt we will have an incredible game at the end of this. Not to mention, Nath has done an incredible job at assembling an environment that Wladmir can walk around and explore.
In this post, I shall be describing the elements of a story in relation to our upcoming BAFTA submission with Wladmir Halfstone. Nath,Bailey and I thought this up a week or so ago and thus I figured I might as well use it for this task.
Our game is set during the Medieval era, more specifically the Viking period of said era. It is set in a small fictional settlement complete with both village and forest areas. It is host to a tight knit community full of friendly people who help each other out whenever needed. Hence, if there was ever a perfect place for Wladmir to find his feet, it would be here.
Wladmir Halfstone and his viking squadron celebrate victory around a campfire having won a battle earlier in that day. They all go to sleep and, upon waking up, Wladmir is all alone. From that point forward, Wladmir is focused on finding out where his fellow Vikings have gone. He searches through the town and such – aiding villagers in order to gain respect and in order to get back on his feet. However, Wladmir has a progressive disease that only he knows in his gut is fatal. He attempts to open up to someone. He tells them how scared he is which is a big step for Wladmir as he has a tough image to maintain. However, he gets told to “man up” and that it is “just a cough”. From that point on, Wladmir continues his quest for vengeance – bottling up his illness whenever villagers ask him if he is okay. His sister asks him if he would come to her wedding to which Wladmir says yes despite knowing deep down that he might not make it there. At the end of each day, Wladmir writes down his feelings. He writes down every single thing he wished he had the courage to speak about again – putting it in a bottle with all of his notes. Eventually, he discovers that it was his brother who caused the disappearance of his squadron. When he tracks him down, they have a battle and wipe each other out with a final blow simultaneously. At this point, two bottles drop to the floor with each of their thoughts in. Wladmir’s sister discovers her two deceased brothers and catches sight of the two bottles. When she opens them, she is taken back by how much each man was bottling up rather than talking about. When the doctor catches wind of what has happened, he regretfully informs the sister that there was a cure for Wladmir’s ailment and that he could have been saved if he had actually opened up and told the doctor about it.
The theme of this story is just as much about friends and family as it is conflict. The internal conflict of Wladmir is heavily documented too. The message of the whole narrative is aimed at society’s opinion that men should “bottle things up” rather than talking about them. Suicide is one of the biggest killers of men and part of this is due to feeling like they cannot talk about it. This story aims to show that it is never the better option to bottle something up and that the phrase “man up” is just plain idiotic.
For the final part of this task, I drew up a piece of art of Wladmir based off of Nath’s 3D model of Wladmir.
This character meets the elements of the story as he is much more human than you would expect from a Viking. Hence, he is much more relatable and easier to sympathize with. Additionally, he does look tough so he is also a believable warrior. This is who our game’s story will focus on and therefore he will be the point of view of the game. Yet again, thanks to Nath and Bailey for teaming up with me – allowing us to come up with this design in the first place.