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 five college graduates. The lead programmer is Khoa Ngyuen and the associate lead programmer is me, Ryan Carpenter. The game hosts peer-to-peer multiplayer utalizing Steamworks Facepunch and Unity's Netcode for Gameobjects. Open playtest is out now, link below!
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.
- Optimizaton and QA - Created Unit tests in unity to test algorithms pertaining to sychonization, object instantiation, and game duration. Also improved performance and bandwith pertaining to procedural generation and graphics.
- Procedural Generation - Contributed to structures spawning randomly around the map with differing loot and obsticles.
- Multiplayer Mounting 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, network-authoritative 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. | |
| 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. |