top of page
VeilWood
Chaos Cabin
ROLE
Lead Designer, Programmer, and Composer
DESCRIPTION
VeilWood is a First Person Survival and Farming Simulator game currently in progress. Currently, there is a team of 12 working on the project and will be released in Spring 2025. I worked on AI state management, the inventory system, and music.
DURATION
September 2024 - November 2025 (WIP)
GENRE
Farming-Survival Real Time Strategy
ENGINE
Unity

VeilWood Main Menu

VeilWood in game screenshot

Mist Walker
The Mist Walker is the grunt enemy of the game. They will attack the player, crops, and structures. They will lunge at the player if within a certain distance. If close enough they will just swipe at the player. Mist Walkers are scared of fire.
The crow has two modes that it can be when it spawns in. It can be a crop crow or an attack crow. Crop crows will seek after crops and get scared when players are around. Attack crows will circle the player and swoop down to strike them.
There is a public enum called CreatureStates that stores the different states that a creature can be in. A switch-case that is ran in Update() that will determine what function to run based on what state the player is in. Each function will have the utility that the state provides. Each function will either keep the creature in the same state, or will move it to a new state.
Town NPC Movement System
Town NPCS move on an hourly schedule with their own state machines. Each NPC has their own schedule. Different actions the NPC can have is being idle, working, or being at home. This will allow multiple NPCs to be at the same location with different purposes. NPCs will choose a random sublocation within their destination to vary where they go on a day to day basis.
NPCs walking from a top down view

Example of part of a NPC schedule
AI State Management




Crow
Basic AI State Management


Puzzles
Rotating Pillars
Players will insert a crop into a slot to unlock that part of the puzzle. The player must rotate all pillars in order based on that crops growth stages. Three crops are chosen at random based on their number of grow stages.
Water Gun
Players must obtain the water gun in order to complete this puzzle. They will have 10 seconds to shoot all tiles that require water to complete the puzzle. If not, the puzzle resets and they must try again.
Nutrient Braziers
Players can insert crops into the crop tester. This will show what nutrients that crop consumes. Players will then go to 7 braziers spread throughout the level and insert the correct crop based on the nutrient symbol.
Slot Machine
Players can interact with the slot machine with a 1/4 chance of hitting a "Jackpot". Players can win money, ammo, seeds, or negative effects such as an explosive creature coming out of the screen.

Inventory System
Inventory
The player has an expandable inventory system that allows them to interact with the items they pickup. Items can be stacked, split up, used, or put into other storage containers. The players inventory and chest inventory can be saved and loaded via JSON file.
Scriptable Object Database

Every item in the game is stored in a database. This database will be able to assign IDs to new items that are created. Items all have InventoryItemData on them, which allows us to pull information from each item such as its name, sprite, ID, sell price, etc.



Music
I have currently made 6 compositions for VeilWood with more to come throughout development. VeilWood's music sticks to woodwind and string orchestration with minimal percussion. The day themes are intended to capture the slight eeriness VeilWood has while also being a break from the night music. The night music I have written is supposed to entirely capture an ominous feel, which I have done through non-traditional time signatures. The catacombs music gives the player a sense of discomfort while they explore a new found area. The finale theme is fast and driving, which aligns with the gameplay as a final fight to complete the game. I used MuseScore4 to create these compositions.
Catacombs
00:00 / 01:39
Day
00:00 / 02:14
00:00 / 02:39
Night
00:00 / 01:15
Finale
00:00 / 05:55
00:00 / 01:48
Reflection
Throughout this project I learned a lot about AI state management in Unity. Learning how to set up different states that smoothly transition between each other based on different variables and interactions is something I will be able to take into my future work. I also learned how to design puzzles with effective information conveyance. This project also allowed me to expand my composition skills, allowing me to compose cohesive music in a multitude of time signatures.
bottom of page