In conclusion there are a few things I can take away from this project:
On the positive side, I managed to get a playable prototype which satisfies my original plan of creating a scrolling beat em up.
I feel like in the parts where I created the graphics myself, I nailed the aesthetics pretty closely and I feel they had consistent art direction.
I have a fully rigged and animated character from scratch implemented as the main character in the game. I feel this is a great achievement, as character modelling, rigging and animating are considered the most difficult aspects of game development on the art side.
On the negative side, I feel the project had a very challenging time frame of a few months, which limited what could be achieved.
I feel like, even when knowing this limited time frame, my plan has been over-ambitious in several areas, including attempting to implement more than one custom characters.
Being a solo developer on this project meant having to be a jack of all trades, for modelling, animating and programming. While I believe it is beneficial to have all of these skills, due to the time frame I think several developers with different skillsets concentrating on specific areas would have had more success.
For further development of the project, it would be beneficial to replace the asset store placeholders with custom assets in the correct art style. The implementation of the originally intended extra characters would certainly be nice to see, and character customisations would be a nice addition. Enemy characters would benefit from custom models, and more variety in enemy types with different skills. The levels the player plays on could benefit from being more structured, with a set layout or have more variety with extra platforms. The procedural version could be used as a survival infinite mode.
To market the game it would be worth considering social media to spread the word and create excitement. Steam could be used to sell the game, or create an early access beta version to get people interested. If there's enough interest, the game could be crowdfunded on Kickstarter or Indiegogo. To create more interest, demos or video trailers could be made, and preview versions given to games journalists.
Thursday, 14 June 2018
Wednesday, 13 June 2018
Final look of the game
Tuesday, 12 June 2018
Final look of the Main Menu
I am happy with how the main menu turned out in the end. There have been several iterations over time with some pretty crazy colour implementations and some over-saturated colour, but that has been solved for the final version.
I feel the colour scheme and overall aesthetic has been nailed and I am happy with the result.

I feel the colour scheme and overall aesthetic has been nailed and I am happy with the result.

Sunday, 10 June 2018
In-game and Menu Music
I researched for some time for some music that would fit with the aesthetic, theme and styling of the game, that could also loop indefinitely.
I searched for Cyberpunk and Synthwave type music and found this track: Arctic Moon - Cyberpunk
https://soundcloud.com/fsoe-recordings/arctic-moon-cyberpunk
I will be using this as placeholder music for educational purposes as I do not have permission to use the music commercially.
There are parts of the song which I don't think fit with my theme, but there are two particular parts of interest.
There is a fast drum section at the start, which I will create a loop out of and use as the in-game soundtrack.
There is also a slow floaty part near the middle which will serve as the main menu music.
I cut the loops using the free software Audacity and imported them into my game.
I searched for Cyberpunk and Synthwave type music and found this track: Arctic Moon - Cyberpunk
https://soundcloud.com/fsoe-recordings/arctic-moon-cyberpunk
I will be using this as placeholder music for educational purposes as I do not have permission to use the music commercially.
There are parts of the song which I don't think fit with my theme, but there are two particular parts of interest.
There is a fast drum section at the start, which I will create a loop out of and use as the in-game soundtrack.
There is also a slow floaty part near the middle which will serve as the main menu music.
I cut the loops using the free software Audacity and imported them into my game.
Friday, 8 June 2018
Scan-line effect Optimisation
Thursday, 7 June 2018
Wednesday, 30 May 2018
Wireframe Effect Optimisation
I have updated my wireframe effect to remove all of the crazy colour cycling, as while it is a cool effect, I feel the aesthetic of the scene was suffering.
This new version implements the colour scheme I have been using for my logo and should also be more efficient without all of the cycle processing.
This new version implements the colour scheme I have been using for my logo and should also be more efficient without all of the cycle processing.
Sunday, 27 May 2018
Menu Progress Update
Saturday, 26 May 2018
Enemy AI
I have implemented a simple enemy AI, based on what I learned last year with the enemy distance based attacks.
This implementation is much simpler, and uses a node which would have probably helped last year had I known about it. This node simply returns the distance between two actors as a float value, no messing about with vector distance checks.
http://api.unrealengine.com/INT/BlueprintAPI/Utilities/Transformation/GetDistanceTo/index.html
The AI chooses a target from available players (up to 4) then checks the distance.
If the distance is more than a certain value, they will simply move towards the target.
If the distance is below a certain value, they will begin playing their attack animations.
The enemy then checks it's own health before continuing or dying if it is zero.
I added a little flash on the corpse when they die to echo the Streets of Rage style game it is. I could probably do this more efficiently with a loop, but I'll leave it for now.
This implementation is much simpler, and uses a node which would have probably helped last year had I known about it. This node simply returns the distance between two actors as a float value, no messing about with vector distance checks.
http://api.unrealengine.com/INT/BlueprintAPI/Utilities/Transformation/GetDistanceTo/index.html
The AI chooses a target from available players (up to 4) then checks the distance.
If the distance is more than a certain value, they will simply move towards the target.
If the distance is below a certain value, they will begin playing their attack animations.
The enemy then checks it's own health before continuing or dying if it is zero.
I added a little flash on the corpse when they die to echo the Streets of Rage style game it is. I could probably do this more efficiently with a loop, but I'll leave it for now.
Friday, 25 May 2018
Enemy Animations
Before I can implement any AI or attacks for the enemies, I will need to have animations to work from.
As time is getting very short, I am not going to create my own, but do what indie developers usually do in this situation and turn to Mixamo.
https://www.mixamo.com/
I collected some walk, idle, punch, kick and flinch animations to work with and packaged them with the Mixamo 'Bot' character, so I could easily use them as placeholder robot enemies and change their colours.

I then did the usual setting up of blendspaces and animation graphs/state machine on this new model ready for the implementation step.
As time is getting very short, I am not going to create my own, but do what indie developers usually do in this situation and turn to Mixamo.
https://www.mixamo.com/
I collected some walk, idle, punch, kick and flinch animations to work with and packaged them with the Mixamo 'Bot' character, so I could easily use them as placeholder robot enemies and change their colours.

I then did the usual setting up of blendspaces and animation graphs/state machine on this new model ready for the implementation step.
Thursday, 24 May 2018
Tuesday, 22 May 2018
Screen material
I've created a screen material from the render target created previously to appear on the arcade screen.
This implements a scan-line material to simulate an old CRT screen and a black border edge based on the Wireframe material created earlier.
These effects are both created procedurally, meaning they do not need any textures of their own, which reduces memory and loading overheads. The only texture required in this implementation is from the render target as the basis for the effect to go over.
I am pretty proud of this effect I've created. I was originally going to use something similar to this implementation on the Unreal website, but I worked out a way to do it without needing textures for the scan-line.
https://wiki.unrealengine.com/Video_Scanline_Post_Process_Effects_%28Tutorial%29
I feel like I have improved on their implementation.
This implements a scan-line material to simulate an old CRT screen and a black border edge based on the Wireframe material created earlier.
These effects are both created procedurally, meaning they do not need any textures of their own, which reduces memory and loading overheads. The only texture required in this implementation is from the render target as the basis for the effect to go over.
I am pretty proud of this effect I've created. I was originally going to use something similar to this implementation on the Unreal website, but I worked out a way to do it without needing textures for the scan-line.
https://wiki.unrealengine.com/Video_Scanline_Post_Process_Effects_%28Tutorial%29
I feel like I have improved on their implementation.
Sunday, 20 May 2018
Main menu prototyping
I want a menu which appears like it is on the screen of the arcade machine which I built.
To get this effect, I need to create a Scene Capture material and apply it to the screen.
To start I want a scrolling wireframe grid, so I created an inverted cylinder in Maya with unitised UVs to get the desired effect with the Wireframe material created earlier.
I then created the blueprint which would house the menu and the camera for the Scene Capture.
This setup can be seen below, along with the attach points for the menu items like the floppy disk.
First experiment with the Scene Capture is below, before the menu items were implemented. Success.
And with the menu items added:
A bit dark, so I added a light:
Saturday, 19 May 2018
Wireframe material
As the theme for my game is Cyberpunk, I felt it was required that a flowing wireframe type material should feature somewhere.
After some research I came across this tutorial for just this type of effect.
https://www.youtube.com/watch?v=KHiZfy5OlO8
After watching the tutorial, I created my own interpretation of it, which can be seen below.
I will continue to experiment and see if i can optimise or create some interesting effects based on it.


After some research I came across this tutorial for just this type of effect.
https://www.youtube.com/watch?v=KHiZfy5OlO8
After watching the tutorial, I created my own interpretation of it, which can be seen below.
I will continue to experiment and see if i can optimise or create some interesting effects based on it.


Thursday, 17 May 2018
Wednesday, 16 May 2018
Multiplayer
One of the goals for my project was to have local multiplayer working.
There were a few issues along the way, but I mainly used these tips (up until the point of using C++, I wasn't prepared to use the time that way).
https://wiki.unrealengine.com/Local_Multiplayer_Tips
The main problem I had were I just had to control how the default player pawns were spawning, and take control away from them by making them possess a new pawn as soon as I could.
Here is my code for how I spawn multiple players, and to get them all on one screen, I had to turn off 'splitscreen' in the project settings. It looks simple, but it took a lot of work to get it down to that.

And here's my players all in the same game, differentiated by colours on their character and the marker above their head.
There were a few issues along the way, but I mainly used these tips (up until the point of using C++, I wasn't prepared to use the time that way).
https://wiki.unrealengine.com/Local_Multiplayer_Tips
The main problem I had were I just had to control how the default player pawns were spawning, and take control away from them by making them possess a new pawn as soon as I could.
Here is my code for how I spawn multiple players, and to get them all on one screen, I had to turn off 'splitscreen' in the project settings. It looks simple, but it took a lot of work to get it down to that.
And here's my players all in the same game, differentiated by colours on their character and the marker above their head.
Monday, 14 May 2018
Procedural Level Generation
As time is running short and I need a working prototype, I have decided to forgo the traditional level building for a procedural approach.
I have created a procedural level section which takes from array lists of modular level parts and creates unique level pieces.

Although the asset pack it too realistic for my game style, it gives the effect that I desire, which could be improved at a later date by creating my own assets in the correct art style.


I have created a procedural level section which takes from array lists of modular level parts and creates unique level pieces.

Although the asset pack it too realistic for my game style, it gives the effect that I desire, which could be improved at a later date by creating my own assets in the correct art style.


Sunday, 13 May 2018
Punching and kicking gameplay
For my punching and kicking game mechanics, I used the input mapping to designate buttons (or keys) to punching and kicking.
These buttons fire off the animations for punching and kicking, but also I use a sub blueprint actor to handle damaging the enemies.

Here is the blueprint for the hitbox that generates the damage.

Here is a shot of the player character damaging the placeholder enemies I implemented health on earlier.
These buttons fire off the animations for punching and kicking, but also I use a sub blueprint actor to handle damaging the enemies.

Here is the blueprint for the hitbox that generates the damage.

Here is a shot of the player character damaging the placeholder enemies I implemented health on earlier.
Friday, 11 May 2018
Enemy Health Implementation
To create an enemy with a floating health bar, I first had to create a UI Widget with a progress bar in it to represent the health.

Then in the enemy blueprint, I added a Widget element above the head for the health bar widget to go into.

And here is the code inside the enemy which updates the widget and checks if they are dead.

Then in the enemy blueprint, I added a Widget element above the head for the health bar widget to go into.

And here is the code inside the enemy which updates the widget and checks if they are dead.
Thursday, 10 May 2018
Wednesday, 9 May 2018
Logo creation
When creating the logo for the game, I wanted a very typical 80's retro neon style for it.
I had seen that people had been creating custom text in this style and investigated if there was a simple way to create these graphics myself.
There is an online generator with various options to create a logo in the exact style I desire.
https://m.photofunia.com/effects/retro-wave
And here is the result. I am extremely happy with this.
I had seen that people had been creating custom text in this style and investigated if there was a simple way to create these graphics myself.
There is an online generator with various options to create a logo in the exact style I desire.
https://m.photofunia.com/effects/retro-wave
And here is the result. I am extremely happy with this.
Sunday, 6 May 2018
Chroma Animation
Thursday, 3 May 2018
Monday, 30 April 2018
Chroma character rigging
To rig this character I will be using Epic's own rigging plugin for Maya called ARTv1.
https://www.unrealengine.com/marketplace/maya-tools
It could be risky learning a new set of tools on a tight time constraint, but I feel it will be worth it.
Epic games have provided a video series to help get to grips with it, which is what I will be using on this project.
https://www.youtube.com/playlist?list=PLZlv_N0_O1gb2ZoKzTApbv3LvhaXJ9elg
First you set the parameters for the skeleton, then set up the proxy bones to fit your model.

Then you generate the skeleton and rig and paint weights onto the character to assign the bone influences.

Then you can generate the Bind/T-pose for the model.

And then it's ready for animating, with handles and IK/FK joints already set up.

https://www.unrealengine.com/marketplace/maya-tools
It could be risky learning a new set of tools on a tight time constraint, but I feel it will be worth it.
Epic games have provided a video series to help get to grips with it, which is what I will be using on this project.
https://www.youtube.com/playlist?list=PLZlv_N0_O1gb2ZoKzTApbv3LvhaXJ9elg
First you set the parameters for the skeleton, then set up the proxy bones to fit your model.

Then you generate the skeleton and rig and paint weights onto the character to assign the bone influences.

Then you can generate the Bind/T-pose for the model.

And then it's ready for animating, with handles and IK/FK joints already set up.

Thursday, 26 April 2018
Subscribe to:
Comments (Atom)



















