Description: Asylum of the Dead(Previous name: Apocalypse) is a first person zombie shooting survival game.
Developer: Zhihao(Michael) Wang.
Contact: wildpepsi0808@gmail.com
Steam Page: https://store.steampowered.com/app/1139790/Asylum_of_the_Dead/
Gameplay Video: https://www.youtube.com/watch?v=FpNbPPAykgA
The game logo.
DEV log #18 --- 2021/12/12 Dev log
THE GAME LAUNCHED!!!!
Added steam achievements.
Added diaries UI when reading them
Fixed the boss flying issue when it died ( nav agent issue)
More bug fixes on steam patch notes.
DEV log #17 --- 2021/12/2 Dev log ( contains several weeks of updates, and yes I'm back)
Features added/ modified:
Added a Boss zombie that does more dmg and takes less dmg. Has slightly different animation set
Added a diary log menu. When player pick up diary, a diary interface will show up to show the content of the diary.
Added more zombies: add more sleeping zombies, spawn after generator starts and after player picks up film roll.
Added more UI: pause menu, settings menu, you died menu, you won menu.
Added more diaries.
Added more way points.
Tuned the player sound emitter
Make sure zombies have more variety of animations sets.
Added highlight lights to mission items, make them easier to collect
Added room names on the top - make them easier to identify
Increase the player's speed reduction when player is low HP
Some small adjustments on collider radius on player and zombies
Bug fixes:
Fix can't hit zombie bugs. - make sure rigidbody collider covers the whole body
Fix zombie does multiple got hit animations when there's no damage ( caused by consecutive dmg to zombies, and the state machine takes those hits when the animation is playing)
Fix dead zombie can deal large amount of dmg when player walks pass their hands dmg trigger.
Fix zombies can go through doors. - just add carved navigation obstacles.
FPS optimization - remove some point lights, shadow adjustment, quality settings, make sure some scripts are not updating for no reason
Fix some items are not moving along with chests
change cringe zombie hit animations
More to come..
Localization
1. Done with most of the UI redoing stuff.
2. Fixed trivial bugs caused by Unity.
3. Added inventory items: battery, torch, .... TODO(maybe there can be more)
4. Refactored AI codes.
5. Updated zombie AI codes -- Fixed the bug where the zombie cannot go upstairs when chasing player.
-- Fixed the bug where the zombie would move vertically when ragdoll at several locations.
-- Added zombie prediction feature where the zombie can see through walls when chasing the player for several seconds.
-- Fixed rotating issues caused by zombie feeding states
-- Redone the zombie take damage function to make it looks more natural and will give different reactions to different weapons.
6. Updating player weapon system -- finished player do damage function for every weapon.
7. Added splash screen for my logo.
8. started working on Save and Load system.
Start to redo some of the UI and icons.
Refining some of the textures in the scene.
Added Control instructions.
Setting up the start location and instructions.
Added avocados that deals 99% of damage to player when eat.
Reconstructing the main game-play flow under the game design tab.
Added new inventory items like zippo lighter (for burning things) and film roll(for acquiring the main gate code ).
Added a new wooden boxes block that is burnable and destructible that can separate first floor. (Made this by Blender cell fracture)
Added the actual projection functionality to the projector (for projecting the passcode).
Note:
Remember to turn the fade screen on!!!
The store page is up.
Implementing the weapon system.
Removed the original pistol arm and scripts.
Just bug fixing.
The com.unity.package.ui issue is finally removed from package manager.
In the generator the empty state will create a AudioOnEnter script that causes null object reference. Fixed that by adding null check.
Cleared several unused variables.
The store page is set up for review by steam. Hope we can see it next week.
Set up the release date--- Jan 7th, 2020. So I still got plenty of time to improve the game.
Start to work on extra gameplays.
Refine the flash light.
Test run the game and try to find bugs.
Zombie may fall through the floor when shot and get up.
Fix nav map.
Some doors do not have navigation obstacles on it.
Zombie cap is not attacking.
Done with the text hints. Now the game has all the element(hints, keys, passwords) to escape the asylum (at least for now).
Fixed a bug of the zombie AI when the player goes to second floor but the zombie will not follow.
Modify the parameters of the zombie AI to make them more dynamic.
Refine the zombies with different animator controllers.
Start to work on Steamworks.
Game is basically done. Ready to ship.
Basically done with arm animation and coding with the inventory system.
Start to plan the specific game flow.
Started to implement text hints using the mission system--> the diary system.
Fix the jump scares in the scene to make it better.
Back to development
1. continuing working on the animation state machine on FPS arms for melee weapons and guns.
2. write scripts for arm control.
3. refine the flashlight light, now it can move with the arm and the light is more realistic now.
Issues:
Still need to fix transitions issues between each weapon when switching.
flashlight sometimes will instantly re-position.
Need to learn SQL for the next couple of weeks, so the development will be continued after I have done my first web application.
Dev logs for 2 weeks
Start working on FPS animations.
Link hand animations to inventory systems
Animation not switching properly.
Not displaying correct animation when drop weapons.
not much this week, got to do other things.
1. Finished diary log system(mission system).
2. Design whole process of gameplay like how access codes are spawned in the scene.
3. Added multiple access code objects in the scene.
1. Continue working on the inventory UI and inventory system.
2. Added another jump scare in the morgue. Created barrier in the lobby for future gameplay.
3. The Inventory UI system is basically done. Player now can use, reload, drop items from Inventory.
4. Added a diary log system, which will be used as mission objectives and contains access code to different gates or entrance.
Game view and scene view are different for the UI, game view seems always scale up. Maybe because I am using 4K screen? Tried to rebuild UI with game view present. In this way, the problem will be solved.
Fixed a bug when adding diary logs, the entries all stack together. -- I kind of hacked this one, hope this will be ok.
Fixed a bug when the log entry is not added to the inventory UI.
Fixed a bug where the log added to inventory got destroyed.
Fixed a bug for the zombie AI fall below to the ground. -- enable physical collision.
Fixed small bugs for the project.
Note:
The inventory UI contains 5 parts: weapons, ammos, items like medicine and food, description of the item and a diary log panel.
Door system and inventory system.
Note: arm animations is not implemented. Still has the temp arm animation.
Secret room with the diary system( mission system)
DAMN I ACCIDENTALLY DELETED EVERY STUFF IN THE ACTUAL GAME SCENE AND I DIDNT BACK THOSE UP!! GOT TO WORK FROM START. :(
Tried to rebuild actual scene.
Added a jump scare effect.
OK I managed to restore all the stuff I did before I deleted the scene. Back on track now.
Setup Main menu.
Added a whole new secret room with secret entrance.
Setup an organic door system that the animations match the various door closing or opening sound. Will do a video demonstration.
Applied door system to drawers, cabinets etc. Now all door, drawer, cabinet stuff works.
Upgraded player HUD.
Implemented new Inventory UI.
I adjusted the lightning and probes to make the scene looks really dark when there's no light.
Fixed a problem when player uses main gate keypad without access code, player can activate it.
A quick go through current gameplay demo. No jump scare now. I only setup one zombie for the demo. Havent setup door system or inventory system yet. Will do these next.
Added player's footsteps sound emitter sphere according to speed that will trigger zombie's alerted state.
Added a temp animated fps controller.
Added a sound pool system that allows the scene to play sounds in an efficient way. We do not need to continuously load sounds but rather we store sounds in the pool and we can fetch it much more quickly and efficiently.
Create a sound collections that an object can choose from. (creating a new scriptable object so we can create it using right click)
Added player's footstep sounds, attack sounds.
Setup curves(0,1) for zombie animations to configure the exact time to play the sound effect in animators. This is painful honestly.
Zombie sounds and player's sounds all done I guess.
Finished player damage and pain sounds.
Added player UI.
Interactive part:
Started to work on the interactive environment. I might consider to move on to the actual game scene.
I moved all these stuff to the actual game scene.
Added game over scene after we enter the password and open the final exit gate.
Added generator to enable electricity in the building. (for lights, main exit, broadcast, lockdown etc.)
Added a access card spawning on a random dead body.
Added a lockdown PC to disable lockdown.
Assertion failed on expression: 'gForceReimports->empty()' -- No Idae why. But it seems do not affect the game. Weird nothing about it on google.
AI cannot get to second floor when chasing. Zombies always move under the floor.
Need git LFS to push large files.
second dev log video. Zombies will enter alerted state when there is a flash light or player's footstep sounds. Multiple ragdoll reaniamtions. Animated FPS controller (temp).
Coding zombie state machine.
Idle, patrol, pursuit, alerted and feeding states done. Add Attack state.
Create new animation state machine for these states including turning, idle, walk, jog, run animations.
Let script to handle root motions so we can use navAgent velocity to match animation and root motion velocity to match speed at the same time to avoid sliding and pathfinding inaccuracy.
Optimization for pursuit state: Update the pursuit target position more frequently when zombie is near the target position to save CPU resources.
Added blood particle effect when the zombie is eating.
The FPS controller without the hand animations or models is basically done.
Attack State done, the zombie now has 8 different types of attack animations. Added avatar mask for it to moving while attacking.
Set the damage trigger only active when they collide with player and when they match the animation "real" attack moves by setting up animation curve.
Add Zombie ragdoll system with player dmg and zombies' take dmg system prototype.
Add zombie animation respectfully when its upper body or lower body are damaged higher than the threshold.
Make the transition between crawling slow and fast more nature.
Add animation when legs or upper body are damaged (Limp animations for upper and lower body), kind of broken( crawling) or completely broken ("laying on the ground facing up or down and trying to get you" animation)
add multiple zombies and change settings like animation and init damage to make them look different.
onTriggerEnter and stay not called -- fixed!, in the collider of AI Entity aka zombie, trigger button is not checked. Need to be checked.
Running circle around target location when in patrol state and pursuit state-- fixed! Create isTargetReached in AIStateMachine(the base class) to tell the Zombie u reach the target and u dont need to be walking or running around the target. U can just enter alerted state.
Patrol state not generating next waypoint target after it reaches first waypoint -- probably fixed?? The max duration of alerted state need to be integer? Since zombie will enter alert state when it reaches a waypoint. No idea why tho. But this works.
Ping pong effect between attack state to alerted state -- fixed! Somehow I deleted blood texture, add it back in solve the problem.
Crawling state not turning in patrol and alerted state -- fixed! Calculate root rotation in their state files and not using animation root rotation.
Need to turn on foot IK for some of the animations like limp walking and idle.
When shooting it multiple times(at least 10 time) in short period of time, it will reanimate but lost its target somehow and it will enter purist mode forever. Still need fix! might be timing issues.
Idle states -- has max duration time, when reached, go to patrol state.
Patrol state -- just wondering around the waypoint network we set up earlier.
Alerted state -- when it see light or "hear" sound go to this state and wondering around the target aka sound source or light source location.
Pursuit state -- when it see player, food go full speed to pursuit.
Feeding state -- when the satisfaction is lower thank a threshold and not seeing any high priority target, when it sees food, it start feeding.
Attack state -- attack player.
Priority rank from top to bottom : Player> visual_light>audio>food.
Float calculation results inaccuracy in a long time, so we need to set the new cam position + original camera position over time.
Add ragdoll to the object may remove any colliders that are set beforehand.
Incase anyone got uncomfortable with original image, I put stickers on it.
Set up sample mecanim in Unity to do transition between animations and blend animations.
Add base layer for walking and turning left and right.
Add attack layer which has a Avatar mask that only allows upper body animation(attack animation). So that we can moving while attacking.
All rigs of animation are set to humanoid animation. Make sure they start at T pose or we can "copy from avatar".
All animations use root motion instead of in-place animation for avoiding sliding.
Make sure hasExitTime in animator has checked off for canceling animation immediately.
Create game scene manager to handle all scene event or particle effect to save CPU time.
Set up AI state machine base class for further use of the zombie AI using scripts.
zombie AI has 8 states including "None, Idle, Alerted, Patrol, Attack, Feeding, Pursuit, Dead". The state machine will do transitions between each state based on conditions.
3. Set up tags and layers for Player, lights, audio and food threat. Sound emitter include audio threat that the zombie cannot see the entity. AI Entity trigger including player or target which has position and AITargetType(waypoint, player, light, audio) info that zombie can go to pursuit state. AI trigger include lights threat.
BE SURE TO TURN OFF "HAS EXIT TIME OFF" IN ANIMATOR TRANSITION NEXT TIME!!!
Set Unity to 2019.3.0a8.
Set up the temporary level map for testing.
Generate navMesh for the map and setup waypoint network that contains 6 waypoints.
Use a cylinder as navMesh agent to traverse all 6 waypoint using c# scripts.
Unity uses A* search algorithm for pathfinding and dynamic avoiding for avoiding navMesh Obtacles
Screenshot: