Skip to content

Architecture

Meet Patel edited this page Oct 23, 2023 · 23 revisions

Frameworks and Libraries

GameMaker Studio 2 is an all-in-one package, which means it contains all necessary libraries to facilitate the creation of our game. GML is the sole programming language used for scripting in GameMaker, and it does not support other languages. Therefore, there will be no need for additional libraries, languages, or APIs to deliver our project.

Division of Demo Work

Lyn:

  • Screen - World Map issue
  • Game Level - Towns issue

Chris:

Zandair:

Hollis:

  • Game level - Forest issue
  • Game level - Field issue
  • Screen - Start Screen issue
  • Consumable - Health Potion issue

Meet:

  • Damage Type - Slash issue
  • Damage Type - Pierce issue
  • Damage Type - Blunt issue

Release

Our game will be released as a binary .exe file, as GameMaker allows for compiling projects directly into executable files. Testers will be linked to a separate GitHub repository containing this executable, which they can then use to download and run the game.

Models

Town

town As can be seen in the model, the Town object will have multiple other objects within it. Houses will be decorative structures and will be impassable (the player will not be able to walk through it). The Wall works similarly, in that walls are decorative impassable objects meant to guide the player's path, keep them out of certain areas, etc. Villagers will be NPCs that walk/stand around towns, when interacted with, they will display their string of Dialogue to the player. The Player will be represented by a sprite on the screen, which will move in response to player input. Shops will be impassable buildings that when interacted with will bring the player into an interaction with the associated Merchant. The Merchant will display their string of Dialogue to the player, and the player will be purchase items from the Merchant's Inventory. Inns will be impassable buildings that when interacted with will bring the player into an interaction with the associated Innkeeper, who will display their Dialogue string (showing the price of a stay at the inn), if the player decides to stay they will lose some gold and regain all health.

World Map

mapModel The main part of the World Map are the multiple types of Nodes - the Node, the TownNode, and the OverworldNode. The Node is meant to be the most basic place that the player can visit. When the Node is interacted with, the player will be brought into a level, these can be a field or a forest, and act as the paths between more important and complex areas. The TownNode will bring the player into a Town level when interacted with. An OverworldNode will bring the player into an OverworldLevel when interacted with (these will not be included in the Proof of Concept), these can be dungeons, evil castles, caves, etc. Finally, the Player object is an icon that represents the player on the map. The Player will move around with input from the user, traveling along the lines on the map from node to node.

Battle Screen

BattleScreen The battle screen will largely consist of character objects and menu objects. Each character will have a plethora of stats that carry on from other parts of the game (i.e., instanced levels), but notably in the battle screen each will be assigned a number in the turn order according to their speed stats. The status menu will display HP and MP levels for each character in the player party. The move menu will hold buttons for the player to choose the moves of the selected player party character, which will display the available moves for said character when clicked on. The amount of quick slots will vary from character to character, and the items each character carries in them will be shown when that character is selected.

Start Screen

StartScreen (1) The Start Screen will be simple and will consist of multiple object for the player to interact with. New game will create a new instance of the game, Continue will return the player the the most recent instance of the game they last played, Load will let the player choose which instance the game will continue from based on the players save data, lastly Exit will exit the game.

Field

Field Fields will be filled with 3 main objects. Those objects are enemies, trees, and the player. By interacting with an enemy the player will start the battle sequence. Trees are just solid objects that will stop the player from moving when they run into them. Each instance of a field will have a random number of enemies and trees.

Forest

Forest Forest just like field are filled with 3 main objects. Those objects are enemies, trees, and the player. By interacting with an enemy the player will start the battle sequence. Trees are just solid objects that will stop the player from moving when they run into them. Each instance of a field will have a random number of enemies and trees. the biggest difference between forest and fields will be the number of trees in the forest.

Scarecrow

Scarecrow-Model The Scarecrow is the first enemy the player will encounter. It has very simple stats and resistances since its key purpose is to teach the flow of battle, not necessarily tactics. Its available moves are simple and deal no damage for this same purpose. Its drops will nonetheless prove helpful to the player in the early game, acting as a way to continue the tutorial.

Living Onion

LivingOnion-Model The Living Onion is a tutorial enemy meant to give the player a second taste of battle while making it easy enough for it to be basically impossible to lose. The Living Onion has a reduced stat set and simplified resistances to account for how early it appears in the game and how restricted the player's move set is at the time while also allowing it to have unique stats for teaching purposes. It also has access to all three physical damage types to teach the player how they can differ by using them on the player. Its final attack is a poison type attack to teach the player about elemental damage types and status effects. Finally, it drops EXP and can drop multiple items to help continue the tutorial.

Bandit

Bandit-Model The bandit is a non-tutorial enemy encountered throughout the world. They can range in ability depending on when they are met. Their abilities are similar to a player controlled character with a diverse set of stats, a held weapon, held items, and a selection of skills, magic, prayers, and skills. These all operate similarly to the player character's own objects of the same type and dictate the bandit's abilities in battle. By changing these, multiple bandits of different difficulty can be created. The resistances of enemy NPC's are simplified compared to player characters to allow for greater diversity and to reflect the uniqueness of enemy NPC's. Finally, bandits will have a drop table where EXP and a potential selection of items can drop upon defeat.

Scythe

Scythe-Model The scythe has a damage type that determines what type of damage it does, a level that shows how many times it has been upgraded up to a determined cap, and set amount of damage it can do without any modifiers which is determined by the weapon's level.

Sword

Sword-Model The sword has a damage type that determines what type of damage it does, a level that shows how many times it has been upgraded up to a determined cap, and set amount of damage it can do without any modifiers which is determined by the weapon's level.

Villager

Villager-Model Villagers will have a selection of dialogue options for the player to select from when talking to the villager. Some can have multiple while some may only have one that is selected as soon as the player chooses to talk to the villager. Some villagers may have an object to give to the player while others may have an object to sell to the player. What makes them distinct from merchants is that the option to sell is not something every villager has.

HP Potion

HpPotion This is one of the potions that will be available to the player and their party members. the potions will be hidden away until the player decides to select them. The number of potions available will be indicated by a number that will increase when a player gets more or decrease every time a potion gets used.

Pierce

Screenshot 2023-10-22 at 11 11 23 PM This is one of the damage types that we are going to have in our game. You can use a spear as your weapon to cause damage to an enemy. The health will deteriorate and the enemy may start to bleed.

Blunt

Screenshot 2023-10-22 at 11 10 15 PM The "blunt" damage type could be caused by the "hammer" weapon. This weapon will cause damage to the enemy's health. The only way you can heal that damage is by having consumables.

Slash

Screenshot 2023-10-22 at 11 10 15 PM Now this damage could be caused by a few weapons we are going to add to our game. Sword, Dagger, axe, and a whip. All these weapons I mentioned will be able to cause this damage type causing the enemy to get fatally wounded or even die.

Views

Town

townView A basic example of a town with a wandering villager, a potion merchant stall, a magic shop, an inn, a smithy (weapon and armor shop), a house, and a church. Walls are used to keep the player on the path leading around town. This example is not representative of an actual town in-game, as those will vary in layout, house design, type and number of shops, and design and number of villagers.

World Map

mapLabeled A basic representation of the World Map of the game. The player moves from node to node and will enter the level at that node when interacted with. Designs of all nodes, shape of continent, number of nodes, player icon, color, etc. are all subject to change as development progresses.

Battle Screen

battle_draft_views A typical battle instance, where players take on an enemy party consisting of a variable amount of hostile NPCs, choosing every move for each member of their party while the AI controls the enemy party. Turn order based on characters' speed stats determines the order in which characters on either party makes their moves. Upon defeating an enemy party, players can be rewarded with a variety of loot and gold.

Start Screen

Start_screen An example of the start screen while not the final draft of the actual start screen captures the essence of what the start screen needs to have . Here the player chooses if they want to start a new save, continue from the most recent save, load a different save, or to exit the game entirely.

Scarecrow

Scarecrow-View The first tutorial enemy the player will encounter, a scarecrow in a field by the player's house. It is not doing much, not even scaring crows. This causes the player to take some frustrations out on it, entering the first 'battle' of the game. Not much happens in this 'battle' besides a chance for the player to learn the mechanics of battle against a stationary, non-attacking target.

Living Onion

LivingOnion-View The second tutorial enemy the player will encounter, an evil living onion hiding away in the field by the player's house. Its smile belies the great evil every onion bears in its heart. How did it come to life? This enemy can actually fight back and actually has a surprising range of attacks, though low stats. Likely a result of its lack of arms. It functions as a tutorial first and battle second meaning its range of attacks are meant to be a display as opposed to a real threat. Its drops will also be something usable for the player so they are rewarded for beating the tutorial.

Bandit

Bandit-View Since the downfall of the kingdom, bandits have become much more rampant. Bands of bandits are a common sight and losing ones valuables to them is not uncommon. They can range between minor threats to real challenges depending on when and where they are encountered. Their plentiful nature means they can become a bit predictable.

Scythe

Scythe-View The starting weapon for the player, a simple scythe passed down by your father. It has seen better days but its wear is a testament to its sturdiness. It does relatively little damage compared to what can be found later but it acts as a fair means of defense and an introduction to slashing damage types.

Sword

Sword-View A basic sword, its a bit better than the scythe due to being purpose built for attack instead of farming. It is not much to write home about since it is another basic slashing type weapon but it can hold its own in the hands of a capable wielder.

Villager

Villager-View Villagers are plentiful in towns and villages alike. They often don't have much to say but can sometimes be a source of interesting information or a helpful item or two. Some are more friendly than others.

Field

Field2 An example field. In the fields there will be enemies for the player to battle as well as trees and grass to bring the area to life. Fields are randomly generated meaning that the location of trees and the number and location of enemies will be different from area to area.

Forest

Forest2 An example forest. Just like fields there will be enemies for the player to battle as well as trees to bring the area to life. Forest unlike fields are filled with trees to make the area feel more wild compared to fields. Like forest are randomly generated meaning the meaning that the location and density of the trees and the number and location of enemies will be different from area to area.