Project 4K - Devlog #01
Project 4K, is a new active project I'll be working on and updating as development continues. The basic concept of this project stems from some insparation I had playting though Hi-Fi Rush; I wanted a project where I could capture the
feeling and flow of styalised game like Hi-Fi Rush, Jet Set Radio, and the newly announced GenoKids.
The brief for this project is to create an action freerunning game that capures the essence and flow of the games H-Fi- Rush and Jet Set Radio; the twist to this is that i will be restricting myself to using a single 4096 x 4096 pixel
texture for all of the in game assets. This should prove a fun little challenge and deep dive into optimisation within modern games; I should slowly be able to scope out how big I could make this project as prototyping and development
continues.
Character Creation & Prototyping
For this project, to keep in with the insparation of the brief, I know I want three things:- A Third person Character
- A unique gameplay mechanic
- Free flowing, player desired movement
So, as a starting point, I have created a third person character with a mesh and animations from Mixamo (as placeholder) with some basic script to be able to move the character and the camera:
Nothing special here with the movement so far, just something to get the character moving.
But this is where I've stated to develop the Unique gameplay mechanic. From the offset I want this to be a mix of Jet Set and Mirrors Edge; so, the initial idea is to have a rail gringing system, like in Jet Set, but have a dedicated button that will switch the player between "Grind Mode" and "Free Run Mode". My hopes is that this will allow the player a choice on how they would move though certain areas of the game; perhaps freerunning over the rooftops until they find a suitable rail to grind from, or the opposite of grinding the edges of the building only to jump down into a rolling sprint.
Whatever the case, my first objective was to create a competent rail grinding system that I could itteratively prototype and expand upon in future.
I did some reserach on how others have implements rail systems for things like cars/ carts and cam eup with this: https://blueprintue.com/blueprint/9trz39vp/
The way the system basically works is if a collision on the players foor comes into contact with a rail, it will send an event though to this system telling it to start updating it's Event Tick to update information like the players current distance and destination along the spline, until the point the player reaches the end or actively jumps off; in which it will stop ticking and the grind will end. The gif below shows what this looks like as current:
As for the rails themselves, these are spline mesh based actors I created using constrction script. You can see the full script here: https://blueprintue.com/blueprint/qjip0aa2/
It's set up with some public variables to set the Mesh to use as a rail, the forward axis of the rail, and if the rail is a closed loop as you would see in the gif above. This basically means any, as long as the mesh is set up to work along a spline, I can use any mesh I want to create grindable rails easily, in whatever direction.
In Theory... one small issue I have is when grinding down the diagonal grindable the character turns right back around and goes up the rail. My theory right now is to do with the direction getting passed though as the character hits the rail. But, I'm leaving this for another day.
Style and Post Processing
Keeping with being a solo project by a developer thats mostly in Technical Designs, I want the style of the game to reflect Jet Set and Hi-Fi Rush without being too overly complicated for me to produce good looking assets quickly with time to tweak and improve upon later. Therfore I'd start by making very basic, low-poly assets and creating the 4K texture sheet i meantioned earlier with some basic colours and patterns I was likely to use.The sheet itself is way beyond basic, and i realise I sould probably to a better job of unwrapping my models; but, the good thing is that the sheet is itterative meaning that if I need to add, change, or remove something I can just do it without haveing a massive effect on the content I've already created. But by itself it won't do a great job at standing out; which is why I've opted for creatin some prost processing materials.
I have two materials i'll use simutainously.
A Toon Shader: https://blueprintue.com/blueprint/847b9u1x/
and an Outliner: https://blueprintue.com/blueprint/c5sdgk81/
I ended up doing a lot of research on the outliner shader; opting to create it this way over having the outlines be part of the texture; just because it would be easier than trying to figure out how to do that and still have a master texture for everything. But the basic concept is that all meshes in world will have the cell shader post-process applied to them, while only the ones that use Custom Depth will recieve the outliner. This gives me finer control of the look of the environment; with the setback of the outlines will render though objects that don't use the custom depth. But again, problems for another day.
This all comes together to look like this:
That's where I'll leave this log for now, I'm excited to be working on this project and hope to get a design document fleshed out soon to help me focus on what would make this project into an enjoyable experience.