Introduction:
This project has one a one word project brief:
Home.
We have to create a game that reflects our thoughts and feelings associated to home.
Coming and Going Is about the excitement of coming home to people you love, the realisation that even though the company gives you joy it is physically and mentally straining, and the relief of finally leaving.
Game Content:
The game will comprise of third person movement plus 2D activities, ie. mini games.
Things we will need:
- Activities script:
- Changes mouse icon on hover
- Plays sound on click
- Starts a event (changes camera)
- Camera Manager
- Keeps track of activity cameras
- Keeps track of how many times they have been activated
- Transition between cameras
- Day/Night Manager
- Changes time of day
- Tracks day change
- Phone
- Keeps track of day and time
- Message alerts
Week 8:
So at the moment its just a case of writing documentation to make sure we are on the same page, however i have some goals for next week;
Week 9 Goals:
- Complete Activities script
- Complete Camera Manager
- Complete Day/Night Manager
- Complete Phone
Week 9:
This week has been a massive week for us as a team, with a mostly playable version already. We went way passed our goals and are refining mechanics and other designs while building the last main blocks.
Activities:
Activities are basically interactive objects within the main 3D world that lead to events or mini games. They are very simple and main job is change cursor and to pass an enum value to the camera manger to indicate which camera needs to be active.
I choose an enum as it was a easy thing for the designers to interact with, assuming they follow the correct formatting with the camera manger its pretty fool proof.
Activity code here
Camera Manager:
As mentioned above, the camera managers purpose is to take in values from the activities and activate the according camera for the event while tracking how many times the event has been played.
In my technical designs i tried to limit the amount that the designs would need to edit in code. To achieve this i tried making robust code that needed little input.
It also has a fade transition function that will hopefully make the experience less jarring (just for reference the above gif doesn’t currently have this active).
This was an error on my part i missed assigning a variable a float when trying to divide it. So until today wasn’t functioning properly.
Day/Night Manager:
This is subject to change atm, so currently its the day and night manager from creature feature with the added functionality of tracking days. However we are having issues with lighting in the game, more specifically with light going through walls. So our current fix is to remove the sun component of it and artificially create light features dependant on time of day.
I’m sure there was different things that could be done that could block light (which i think I’m going to research tomorrow and present my findings), however this was the designers first choice and i respect that.
Phone:
The phone serves two purposes, to give the player the ability to track time within the game and to provide the player with direction to what they should be doing at this moment.
It works out the time of day in either 24 hours or Am/pm time from the perceived time from the day and night manager. This gives the designers the ability to set the length of the day and have a accurate reading.
Direction are given to the player through the form of text messages that appear at certain intervals.
Once again i made use of scriptable objects for this function, this way the designers can create these messages easily and attach them to the phone and not have to worry.
The only possible issue i could see with this is how it detects time to activate (and i don’t mean on my part) because it detects and compares a string of the current time and the time that the designer wants it to active, they have to have the exact string.
Considering my active involvement in this project this shouldn’t be an issue but it would be worth thinking about other options for future projects.
Dishes Mini Game:
The Dishes mini game is an optional mini game based on if the player leaves in time. it started life as just a game in which you held down the mouse button to clean. However I’ve add the element of moving the mouse as well to get that scrubbing effect. A progress bar moves around the outside to let the player know when its finished.
Dinner Mini Game:
The Dinner mini game is one of the main events of the game. Its made to be repeatable and gets progressively less appealing each game (still some add functionality needed here). It has a few functions, player has an amount they can eat before leaving and All finished plates get added to the dishes mini game at the end.
We added a stomach meter today so the player couldn’t consume things continuously.
Once again this is pretty basic, its made up of a manager that tracks the food eaten and when the plate is cleaned of food and of the individual food components which just add food to the plate.
Week 10:
This week has mostly been focused on the improvement of design and functionality, almost all core mechanics are made and now its just polish and bug fixing. This was the goals i previously set last week (i realise this weeks goals for Home is pretty small but i was prioritising CIU work, this way i can finish my CIU projects early and devote more of my attention to the two home projects I’m working on)
Goals for Week 10:
- Aura completed
Aura:
The intended purpose of the aura manager was to be able to do a little bit of everything. It had to be able to change sounds, objects, lights and post profiling based on the day in game.
My first attempt at this i tried to be clever and look at simple solutions for the designers to interface with, that’s when i came across presets.
Presets is a unity feature that saves the current configuration of a component, this information can then be passed and applied to over components. This was great i thought, it gives designers the ability to modify and just save the information they want to use.
So i implemented that, it was only when i had errors when trying to build it that i was like “oh its only in editor”. So that was really disappointing, i hope i can make a system that straight forward (in terms of UX) in the future that can be used in future unity projects.
In the end i went a more bare bones approach, which every time a new day begins, the auras are update and index to the next days worth of information.
Album game:
The Album mini game is about placing photos into a album based on a description given to the player. There is no right or wrong answer, its simply down to the players preference.
There was three main components in designing this:
- Album Manager:
The Album manager has a few roles;- To spawn in the photos
- To spawn in the text comment below the photo (This is represented by numbers at the moment just to test the functionality)
- To update and turn to a new page each day
Code Here
- Photo:
The photos are just a click and drag-able object - Album:
The Album is the spaced in which the photos are placed, this tracks what photos are placed in the book and sets them up to be deleted when the page “turns” the next day.
Dinner Update:
As i mentioned before, we are in the process of refining things. so there was a lot of fixes that needed to be done. this included:
- Different background sprites dependant of day
- Dinner plates finished go towards washing up plates
- Dinner exit timer (after a time limit the player can choose to leave the mini game)
- Parenting spawned objects to the mini games (this was just a quality of life in the inspector)
- Limit on how many plates can be sent to the dishes mini game
There is more that needs working on but i will explain that later.
Dishes Update:
- Dishes now have harder plates that need a scrubbing brush
- scrubbing brush script
- exit button to leave
Future improvements:
Dinner:
The dinner system currently has a stomach meter that increase based on the food you eat, the intent here was to slow the player down and ultimately stop them from playing.
The rate at which these drop are way to high atm and need further slowing and also we are adding a water mechanic which will drop this value further.
Dishes:
Scrubbing brush will no longer be able to clean the cleaner plates and only filthy ones, forcing the player to swap between clean utensils.
Phone/Time:
So i found out today that this has been scrapped but a new method hasn’t been decided yet. So most likely this will change between now and next week
Week 11:
The further we get into this project the less i’m creating things and the more i’m just fixing things (read my reflections for more), that being said though this is what i added this week.
Goals for Week 11:
- New Coming and Going mini games drinking
- Fix Coming and Going issues
Drinking mini games:
With both of these mini games i wasn’t given much information on what the designers actually wanted (i think they are not entirely sure either) so i decided to make basic things to show them and get their input upon those.
This is what i came up with:
Cocoa mini game:
There isn’t a whole lot this game, in involves just looking at the fire enjoying a drink. Previous mini games being 2D didn’t really give me the opportunity to exploring using things in a 3D space. So i went with the player actually moving the mug to imitate sipping.
The experience is.. well kinda lack luster atm but i think with some sipping sound effects it could make the experience a bit different. As i mentioned before though, i will run this stuff by the designers to find out what they want.
Drinks mini game:
This is about half finished, as i mentioned before i left this open ended depending on designers recommendations.
The drinks mini game involves pouring a drink and then sipping from that drink.
This is my first attempt:
Moving the bottle came with some complications, i am currently dragging the bottle based on mouse position on the screen. This obviously doesn’t take into account physics. So you can drag the bottle through objects, which doesn’t look particularly great. So to fix this at the moment i just limit the positions it can read so the object cant be dragged past a certain point. This works but ends up looking a little janky and after talking to the designers i will probably end up changing this to just snapping to a fixed position.
Updates:
There has been a lot of little changes and bug fixing that has been required (read my reflections for more).
Aura Update:
This was changed for a couple of reasons, the designers ditched the variable time system and now just have a fixed time system based on activities completed. to accompany this they wanted the lights in the house to change depending on time of day and subsequently all objects to change based on time of day.
This controls everything from particle effects to lighting and sound. The systems are all in place but the designers have a lot of catch up to do with actually filling out this content.
Week 12:
This week has been a particularly hectic week with things needing to be updated and implemented at the last second. My goals for this week were.
Goals for Week 12:
- Edit Drinking mini game (Coming and Going)
- Make sure shit works (Home Projects)
Drinking mini Game:
As mentioned in the previous week i left this half finished as i wanted to discuss possibilities with the designers. They created a better cup i could use to show multiple levels of fluid.
I was going to update the with the new alterations but instead i just changed the whole game.
Why did i do that?
The previous method of interacting just felt.. wrong… janky and buggy, i guess are the words i should be using. Instead i decided to take away some of the agency from the player but making a smoother interaction.
Instead I used leanTweens in coroutines to simulate the feeling of the action, which i think came out looking and feeling a lot better then the previous method with strange clipping.
Cocoa mini Game:
Just the same as with the drinking game, i wasn’t happy with the outcome and experience of the game which lead me to just redoing the entire mini game.
Much like the drinking game i replaced the previous with leanTweens in coroutines to simulate the feeling of the action. I wanted both of them to feel similar in how the action is performed (just as if it was a real person) and felt (as this was essentially a one or the other mini game).
Activity Manager Update:
The activity manager needed a few fixes, mostly it was a this or the other that needed fixing. In this function if you did one activity you subsequently did the partner activity as well (so you could only do of the dualing activities a day).
Bug Fixes:
Oh so many bug fixes, considering we are at the end of the project now thats pretty much all that’s left, bug fixes and tweaks to the experience.
A couple of bugs i had to fix this week:
- Day 2 error:
This was particularly annoying, i was getting a null reference error to an object in the game. Here’s the real kicker i tried fixing it using a GameObject.find & GameObject.FindWithTag (bare in mind that this object was always on in the scene) and it still couldn’t find it either way. Strangely as well this worked for the previous 2 weeks. So i ended up just using a reference to the object. - Day 2 didn’t turn to night:
Coincidentally this was caused by the same thing above, it couldn’t find the one object anymore and grab the activity off of it. (Once again this hadn’t changed all project and i was using this method for 12 other object with no problems whatsoever) I just assumed unity was being silly. Once again fixed it with references.
End of the line:
Well this was the final week for the project, There will be some small updates this week just to improve the game feel but apart from that its completed.
We had our first full play through yesterday with no bugs just cosmetic issues. So overall a success. Our whole team was so exhausted by the end of the day and a bit emotional and that’s justified because i think we made something great.