Oddinary Farm
Overview
Oddinary Farm is a co-op multiplayer arcade farming game built in Unity. The game combines classic farming mechanics with chaotic gameplay by juggling casual building with a tower defense aspect. The game is made by Spring Rolls Studio, a small team made up of college graduates. The lead programmer is Khoa Ngyuen and associate lead programmer is me, Ryan Carpenter. The game hosts peer-to-peer multiplayer utilizing Steamworks Facepunch and Unity's Netcode for Gameobjects. Open playtest is out now, link above!
Gameplay
Oddinary Farm is a top-down survival game playable solo or in online co-op, combining cozy farming with high-risk exploration and combat. Think Stardew Valley meets Terraria. Players build and defend a vulnerable farm, explore a resource-rich island by day, and survive alien attacks by night. The goal is to gather resources and prepare a hot air balloon to escape within 6 to 10 days, or face inevitable doom.
My Contribution
- Task Management - Created, assigned, and managed project tasks in ClickUp based on team meetings.
- Multiplayer Code - Created base code for mounting objects and entities including animals and the hot air balloon.
- Game Design - Contributed many ideas to the game including enemies, shop upgrades and items, pets, and combat mechanics.
- Documentation - Constantly updated code documentation with new commits. Created conventions and style guides for both new and old developers on the project.
- Sprites and Animation - Created sprites and animations including: The Laser Deer, scrum enemy, brute enemy, artillery enemy, hamster, and the player HUD.
Implemented Features
| Name | Description | |
|---|---|---|
| Peer-to-peer Multiplayer | Unity Netcode for GameObjects, transported over Facepunch (Steamworks). Networking is deeply woven through the codebase, not confined to one layer. Allows player clients to connect to a host over the internet through steam invites. | |
| Procedural Generation | The system builds a synchronized island-world out of four layered Perlin noise maps (elevation, moisture, ore, and resource), then streams terrain/foliage/resources in and out around each player in real time. Map generation is done client-side with a seed to improve performance. | |
| Inventory System | Dynamic and scalable slot-based inventory system akin to Minecraft's system. Items are data-driven and situational. The player can perform a variety of actions depending on the item including placement, combat, and buffs. | |
| Object Pooling | Game reuses identical item/objects instead of creating them to improve performance and frame rate. | |
| Mounts | Player can mount animals and other entities to increase movement speed and other properties. | |
| Economy | Shop, wallet/currency, quotas, loot tables/generator, and gambling. | |
| Day and Night Cycle | Time scale that affects the day/night cycle of the game. This changes the state of the game and the events that happen. |