I've just published my second class, a crash course in game design and uses 10 popular games (including Skyrim, Eastshade, Undertale and others) as examples of good game design. The class focuses on helping students develop or strengthen an idea for a video game.
After poring over Eastshade's devblog, I became especially interested in the concept of the vertical slice. I had heard the term before, but reading this post helped me truly appreciate its value.
In game development, a vertical slice is a fully playable piece of a game, so named because when one imagines a game as horizontal layers of systems, a vertical slice takes the most important parts of those systems (usually including artwork) and combines them to create a small, playable chunk of the game.
Their value is somewhat debated in the game development world. What Games Are author Tadhg Kelly likens asking for a vertical slice to “asking to see a piece of the final cake before agreeing to pay for the whole,” arguing that creating a vertical slice actually requires completing most of the game, even though the slice may seem to lack content.
This week saw a rework of Homegrown's inventory system and the beginning of a rework of its U.I aesthetic. The U.I. system needed to improve for the title screen and inventory window, and the inventory system needed to adjust to store player models and be accessible for both inventory viewing and block placement and removal.
Homegrown is a multiplayer game in which players grow and build up their own small islands, accepting other players as visitors. Players can open up shops to trade their goods and add behaviors to animate their in-game models and make them interactive. The game’s primary goals are to provide an escape from the real world into a calming, nonviolent atmosphere and to foster a sense of safety and community among players.
Note: Homegrown is very early in development, and while a few of the elements discussed below are implemented, the game is very far from being finished.
As a multiplayer game, this sense of community comes from other players sharing and interacting with the same game worlds. In Homegrown, a 2D side-scrolling game, each player will begin with a small, forested island and a dock. Players will learn the ropes of the game by collecting materials and building a boat for the dock. Once the boat is completed, players can visit other players' islands. (A player can receive visitors before their boat is completed, though.) Servers reward players for performing actions like visiting their islands and trading with them.
Enchantments are ways for Homegrown players to further interact with models they build. Put simply, players can use a basic visual scripting system to give their models life and help them interact with the world. (Homegrown is a work in progress and is not at all ready for players, but I've been working on it for a while now.)
Each enchantment has a “root condition” that causes the enchantment to work. These conditions are split into triggers and gates. Triggers are conditions in the in-game world that players might want their models to observe: it's nighttime or daytime, it's sunny or rainy, a player just pressed a key, a player just said a special phrase in the chat, a model announced something (this works something like a function call), or something else. Gates are conditions that are true or false based on the states of other conditions. They are logic gates, and for now the game has three of them: And, Or, and Nand. Each gate can have any number of inputs.
Homegrown is a multiplayer game in which players grow and build up their own small islands, accepting other players as visitors. Players can open up shops to trade their goods and add behaviors to animate their in-game models and make them interactive.
Rarely do motivation and free time align as a student, so I'm taking development slowly but surely. A lot of the groundwork for these systems is already laid. As of now, I have accounts management, server connections, models (i.e. block placement, removal and selection), syncing of models, syncing of multiplayer player movements, and world and inventory saving. Frustratingly, not much of this is worth showing off to friends and family; it's hard to see the work I've done on the surface level. The game isn't a game yet but a collection of conversing, interactive systems.