Citizen
Citizen
Citizen is an idea I had been cooking in my head for a while. I don't want to say too much about it now and instead prefer to focus on bringing it to life in Unreal so it could be experienced rather than described. One of the best things about studying game development at somewhere like Abertay was the chance to find companions for such ambitious journeys and I have been lucky to find some. So, in late February 2025, I shared my idea and drive to bring it to life with Dom and we are now both working on bringing this story to life.
I am cherishing this as a great chance to learn more about blueprinting and gain more hands on experience with the real design challenges that you face when making games. Currently at a very early stage, we are working on prototyping the opening level of the game which acts as a kind of tutorial for the game too. Everything is rough and almost surely going to change or evolve as we iterate.
So far, I am more focused on implementing the functionalities, writing and developing the story, while Dom has been busy making levels. There is a lot of fun, and more to be had in the constant back and forth between in-engine prototyping and experimentation, and drafting up ideas on paper and in meetings.
While some practices may seem overkill in a two-man project, we are keen on maintaining professional habits and best practices. We're using Github for version control with LFS enabled to give us some more wiggle room, Our coms are all done in Slack and we use Miro for sharing and documenting ideas and we use good old sheets for keeping our design document up to date
I post the latest prototype here every week. Sometimes, a whole week's work has gone into it, and sometime much less, where there were other things I was working on.
Posted on Monday 14/03/2025
I have added a head bobbing effect to the movement (walk, run, crouch. Idle has no shaking as it was annoying to have it)
resolved bugs with item pick up, ensuring that items sit properly on surfaces and do not stick to vertical surfaces,
Pruned redundant nodes for picking up and dropping to keep it more efficient
Fixed some sneaky bugs with movement that caused the player to walk faster when it shouldn't have and stopped it from climbing the sofas
Laid the foundation for the inspection function which I am currently working on to allow the player to rotate and examine objects
Added a smooth zooming feature
Posted on Monday 07/03/2025
Adding widgets and context mappings for inputs at begin -play.
Sprinting is done by double tapping W. Shift will also be added to allow for preference.
Blueprints for movement. The character is a capsule with a camera on a spring at eye level as a component. A slight lag is added to the camera for smoother movement. Should swap the speed numbers with variables for better control
This is how I had set up the interaction prompt functionality at first. But this used event tick when I simply could have used another event that tracks mouse movement instead. Not that the operation above is intensive but I still thought it would be better to be more efficient.
Furthermore, this system made it difficult for me change the prompt based on the actor in the scene so I opted for another approach
While the previous version used interfaces too, I made better use of them here by creating a function that simply returns the variable (prompt) which is instance editable and can be assigned in the actor's detail panel. Furthermore, this method only updates when the mouse moves, removing the need to run the logic at every frame.
The prompt for every actor can be entered in the details panel as well as determining if it is pickable or not.
Simply used the built-in crouch functionality of the character movement component and used the enhanced input system to control it. Pressing C will crouch and un-crouch
Looking around with mouse. Pitch is inverted for a more natural feel. Some properties were changed in the character BP to make this work
We create branches for various tasks and make sure to merge branches every day to avoid piling up differences between versions. Individual branches will merge into the Development branch for the week and on every Monday, we merge the previous week's development branch with main and create a new development branch from the new main to work on.