kallomgaming
kaloyan's devlog
85 posts
👋 Updates from my projects in semester 4 ICT & Game Design and Technology
Don't wanna be here? Send us removal request.
kallomgaming ¡ 3 years ago
Text
[industry project] - reading guide
Tumblr media
Introduction
The industry project was about creating a wild boar management simulation game in which the player can simulate the wild boar’s behaviour for a given timeframe and initiate different actions in order to influence the migration of the animals. The goal is to pick some actions from the top left dropdown and click the next year button in order to see how the wild boar population changes during the years. The player has a timeframe of 10 years only so they have to choose carefully their actions because the game ends after 10 clicks on the next year button. The actions cost money and the wild boar population is influenced by the combination of actions the player chooses to execute.
Tumblr media
I worked on the industry project with 4 other teammates. The goal of the project was to create and work on a serious game for a real client, communicate with them, understand their needs and use their input to design the game. Most of the decisions were made based on the requirements we had but we had to make some based on the current situation and what would have been best for completing the project in the given time-frame and implementing as many features as possible. My team and I worked with the Scrum methodology as the project was divides into sprints of 2 weeks and we had daily meetings to discuss or progress and retrospective meetings with the clients to pitch our product. We have created user stories with all the task that had to be completed in order to have a mvp and a game design document.
Design challenge
Design a wild boar management module for the single-player simulation game Ecosim to enable wildlife managers at Grenspark Kempen~Broek in the province of Limburg to simulate different wildlife scenarios influenced by factors such as risk landscape (hunting, recreation) and food landscape (agricultural crops, certain natural habitat types) and observe the behaviour of wild boar in order to maximise the benefits of the species such as their role in the ecosystem (enrich soil) and minimise conflicts they may cause such as causing damage to agricultural lands and creating wildlife vehicle collisions.
Disclaimer: This was the original version of our design challenge but later we had to let go of the Ecosim part and now the game we have created is an independent one.
Phases & Process
Analysis
Design
Realisation
Validation
Wild Boar Management Simulator by kaloyanmad
Reflection
Throughout the project I had the chance to practice my soft skills by communicating with real clients via email to schedule meetings and via call to pitch and discuss an increment of the project. I managed to work on the game design and game development aspects of the final product and deepened my knowledge in Unity. I improved my teamwork skills as my team and I were working with the version control system GitLab and we had to sync and manage the project files we worked on together and fix any conflicts that appeared with the Unity .scene files mainly. I managed to be part of a project that had to change its original direction due to redundant resources needed for the completion of the original project statement and that helped me see that not everything in the real world goes as planned and some decisions have to be made in order not to give up but continue further.
2 notes ¡ View notes
kallomgaming ¡ 3 years ago
Text
[industry project] - final demo resources
Game:
Wild Boar Management Simulator by kaloyanmad
Game design document
GitLab repository (commit history)
GitHub repository (for distribution only)
Lo-fi game prototype
FontysMade
All documentation
youtube
0 notes
kallomgaming ¡ 3 years ago
Text
[industry project] #21 - fence off area action
Tumblr media
Challenge: How can I implement an in-game action that would allow the player to fence off the selected tiles on the map in order to protect them from wild boar?
The player in our wild boar management simulation game will be able to protect farms and crops from wild boar invasions in order to steer away their population and thus controlling their risk and food factor. This action is the equivalent of limiting accidents with real-life farmlands.
Methodology
I implemented the tile fencing off action in a Unity prototype. I validated its completeness by testing if the game works as it used to and showing my progress to my teammates in our daily code review sessions.
DOT framework methods used:
Tumblr media Tumblr media
Resources
Simulation data table
Products
Tumblr media
The fence off action colors the tiles in yellow which makes them stand out from the rest of the tiles on the map indicating that they are a protected area
Validation:
I validated the challenge by showing my progress to my teammates and testing it with end cases in order to make sure that the wild boar cannot go to fenced off tiles.
Tumblr media
Generally, wild boar can go to unprotected tiles
Tumblr media
When fencing off the the farmlands, wild boar cannot enter those tiles anymore
GitLab commits:
add fence off area action to drop down
add implement fence off action and fix small bugs with boar model
The code and other resources can be found on our GitLab Repository.
Next
Make sure that the fence off action works in combination with the rest of the actions and present the final demo. Yay!
0 notes
kallomgaming ¡ 3 years ago
Text
[industry project] #20 - recreational activities action
Tumblr media
Challenge: How can I implement an in-game action that would allow the player to initiate recreational activities on the selected area of the map which would make most of the boars migrate to neighbour tiles or disappear completely from the map?
The player in our wild boar management simulation game will be able to initiate recreational activities as an action which requires them to select an area of the map on which most of the wild boar will disappear which will reduce the total wild boar population.
Methodology
I implemented the recreational activities action in a Unity prototype. I validated its completeness by testing if the game works as it used to and showing my progress to my teammates in our daily code review sessions.
DOT framework methods used:
Tumblr media Tumblr media
Resources
Simulation data table
Products
Tumblr media
The recreational activities action makes the boars disappear from the region permanently or makes them migrate to a neighbour tile
Tumblr media
Not enough money for recreational activities action
Validation:
I validated the challenge by showing my progress to my teammates and testing it with end cases in order to make sure that some of the boars disappear and others migrate to other tiles.
Tumblr media
The action is best used on crops tiles because it will remove the boars from there
GitLab commits:
implement recreational activities action
The code and other resources can be found on our GitLab Repository.
Next
The recreational activities action is one of the last that our wild boar management simulation game will feature. The next and final one of our scope is to allow the player to select an area of the map and protect it by not allowing any boar to enter.
0 notes
kallomgaming ¡ 3 years ago
Text
[industry project] #19 - ecoduct action
Tumblr media
Challenge: How can I implement an in-game action that would allow the player to build ecoducts only on road tiles by selecting an area of a tilemap to allow a safe passage for the wild boar in the simulation?
The player in our wild boar management simulation game will be able to choose an action that requires them to select an area of the map on which ecoducts will be built that would allow the wild boar population to safely migrate without dying on road tiles for vehicle accidents.
Methodology
I implemented the ecoduct action in a Unity prototype. I validated its completeness by testing if the game works as it used to and showing my progress to my teammates in our daily code review sessions.
DOT framework methods used:
Tumblr media Tumblr media
Resources
Simulation data table
Products
Tumblr media
Building an ecoduct replaces only the selected road tiles with an ecoduct tile
Tumblr media
The crossroad tiles are excluded from the selection
Tumblr media
The ecoduct tiles are now flexible as they fit all types of road tiles (the sprites were created by a teammate)
Tumblr media
Ecoducts can be built only on roads which do not have an ecoduct tile as a neighbour tile already
Validation:
I validated the challenge by showing my progress to my teammates and testing it with end cases. Currently, when the player selects the area of road tiles, they are charged for all of the selected road tiles but ecoducts will be built only on half of them because of the rule that two ecoducts cannot be built next to each other.
GitLab commits:
create ecoduct action
make ecoduct tile fit in all cases and build ecoduct only on roads which don’t have a neighbour ecoduct already
The code and other resources can be found on our GitLab Repository.
Next
Try to fix the mentioned issue in the validation and implement more game actions.
0 notes
kallomgaming ¡ 3 years ago
Text
[industry project] #18 - optimisation is a must
Tumblr media
Challenge: How can I optimise the creation of new wild boar management actions and different types of tiles in a tilemap in Unity?
Our wild boar management simulation game will feature different actions from which the player can choose from in order to influcence the wild boar population and different types of tiles that control the wild boar simulation model. The creation of new actions and tiles should be done in an abstract way that follows the clean code principles in order to make the process quick and efficient.
Methodology
I implemented the optimisational changes in a Unity prototype which I validated by testing if the game works as it used to and showing my progress to my teammates in our daily code review sessions.
DOT framework methods used:
Tumblr media Tumblr media
Resources
Simulation data table
Products
The logic behind the actions is that there is an Action Manager script which has a Dictionary of Actions (values) accessible by their respective names (keys). Each Action has its own class and is added to the Dictionary in the start of the game. In the game there is a dropdown which contains the name (key) of each Action. When an action has to be executed, the only thing that has to be done is to call action.Execute() since each Action has its own implementation of that method. The current action is always accessible as it is the currently selected one in the dropdown list.
Tumblr media
A dropdown with the different game actions
Tumblr media
Structure of the Action classes hierarchy
Tumblr media
A creation of a new action is as simple as creating a new class for it and adding it to the Dictionary of actions in the Action Manager script
Each tile in the game is created from a scriptable object where all the needed data is stored. In this way when the game needs a new type of tile, the only things that have to be done are to create a scriptable object for the tile and add it to a list of such in the game manager.
Tumblr media
Example of a tile scriptable object with the needed data
Tumblr media
The scriptable objects for the different types of tiles
Tumblr media
Examples of different types of tiles (sprites created by my teammates)
Tumblr media
Examples of different types of road and ecoduct tiles (sprites created by my teammates)
GitLab commits:
implement actions with separate classes
create scriptable objects for all tile types
set tiles on map by tile type with dictionary
The code and other resources can be found on our GitLab Repository.
Next
Use these optimisations to create new tiles and game actions in a quicker way.
0 notes
kallomgaming ¡ 3 years ago
Text
[industry project] #17 - the landscape is greener
Tumblr media
Challenge: How can I implement an in-game action that would allow the player to plant and cut down forests by selecting an area of ceratin type of tiles in a tilemap which will change their properties and look?
The player in our wild boar management simulation game will be able to select an action that requires them to select an area of the map and change its properties such as planting or cutting down forests which means replacing the selected tiles with new ones.
Methodology
I approached this challenge by looking at issues other people in the community had in order to incorporate what others have learned. I looked at the Unity documentation in order to see how certain methods work. I implemented forest actions in a Unity prototype. I validated the completeness of the challenge by testing it with some end cases and showing to my teammates in a code review session how I approached the challenge.
DOT framework methods used:
Tumblr media Tumblr media Tumblr media Tumblr media
Resources
Community:
Associating enums with strings in C#
How to prevent clicking Gameobjects behind a Canvas/Panel?
Ctrl+Key combination not working properly
Unity documentation:
Dropdown.value
Dropdown.onValueChanged
Products
Tumblr media
Change the sprite of the selected tiles
Tumblr media
Research action shows that the tile is a deciduous forest
Tumblr media
Plant a coniferous forest on the selected tiles if the available money is enough
Tumblr media
Plant a deciduous forest on the selected tiles if the available money is enough
Tumblr media
Cut down forest on the selected tiles if the available money is enough
Tumblr media
Plant forests only on grass tiles and cut down forests only on forest tiles
Tumblr media
Add to the selection while holding ctrl button
Tumblr media
Plant and cut down forests complete (first version of tile sprites created by a teammate)
Validation:
Tumblr media
Planting a forest makes the boars go to it since it is more attractive
Tumblr media
Boars stay on tile while there is enough food
Tumblr media
Boars migrate from tile when the forest is cut down there
I showed my progress numerous times to my teammates and they helped me with finding issues such as that an inactive game object in the canvas was causing issues to the selection and that the player was being charged twice for planting a forest. This helped me to be sure that the challenge is completed and the actions are working properly.
GitLab commits:
add actions dropdown and almost working plant and cut down forest functionalitites
implement clearing the action screen when canceling an action, clearing the selection when changing between actions, adding tiles to the selection when holding ctrl button
fix bug when planting a forest to charge you twice
The code and other resources can be found on our GitLab Repository.
Next
Having implemented the change of selected tiles, I would like to optimise the way tiles are added to the game in order to make this process more abstract and thus easier to manage.
1 note ¡ View note
kallomgaming ¡ 3 years ago
Text
[industry project] #16 - selection of tiles
Tumblr media
Challenge: How can I implement box selection in Unity that selects tiles in a tilemap?
The player in our wild boar management simulation game will be able to select a certain area of the map in order to execute various actions such as planting or cutting down forests which will change the properties of the selected tiles.
Methodology
I watched a video about how to implement box selection in Unity in order to learn about good practices and incorporate what others have learned. I implemented the feature in a Unity project prototype.
DOT framework methods used:
Tumblr media Tumblr media
Resources
youtube
Products
Tumblr media
Box selection on screen
Tumblr media
Only the tiles inside of the selection are selected
Tumblr media
Select tiles while dragging the selection box
Tumblr media
Select all tiles that touch the selection box after it has been released
Tumblr media
Tile selection on the map
GitLab commits:
implement box selection on map
implement selection of tiles
The code and other resources can be found on our GitLab Repository.
Next
Implement player actions such as panting and cutting down forests.
0 notes
kallomgaming ¡ 3 years ago
Text
[industry project] #15 - every tile is replacable
Tumblr media
Challenge: How can I implement replacement of a tile in a tilemap when clicking on it?
The player in our wild boar management simulation game will be able to execute several actions that would change the game map visually such as planting and cutting down forests or building ecoducts which means that those tiles should be replaced with other tiles in order to make them change visually.
Methodology
I looked at Unity’s documentation in order to see how certain classes and methods work. Furthermore, I checked some forums in order to incorporate what others have learned. I implemented the tile replacement logic in a Unity prototype with help from my teammates.
DOT framework methods used:
Tumblr media Tumblr media Tumblr media Tumblr media
Resources
Community:
How can I change a sprite used for a Unity Tilemap tile at runtime?
Unity documentation:
TileBase
Tilemap.SwapTile
TileBase.GetTileData
ScriptableObject.CreateInstance
Products
Tumblr media
Swap all tiles from a type with another type of tile (almost there)
Tumblr media
Replace tile with another tile on tile click
GitLab commits:
change clicked tile to ecoduct tile
The code and other resources can be found on our GitLab Repository.
Next
Implement selection of an area of tiles on the map.
0 notes
kallomgaming ¡ 3 years ago
Text
[industry project] #14 - visualisation is key
Tumblr media
Challenge: How can I show information about the map on the game screen and display a wild boar icon on a tile in a tilemap?
Displaying information on the game screen is important because it will keep the player informed about the properties of a tile for example. My team and I decided to display a wild boar icon on every tile that has more than 100 boars on it in order to visualise the boar population on the map better.
Methodology
I implemented the showing of information on the game screen in a Unity prototype with help from my teammates.
DOT framework methods used:
Tumblr media Tumblr media
Resources
Game design document
User stories document
Products
Tumblr media
Displaying information on the game screen
Tumblr media
Showing how the boar population changes when clicking on Next Year
GitLab commits:
add boar icon per 100 boars on tile and more
create hud manager script that updates the hud with unity events and modify encapsulation and methods of manager and map scripts
The code and other resources can be found on our GitLab Repository.
Next
Replace a type of tile on the map with another one.
0 notes
kallomgaming ¡ 3 years ago
Text
[industry project] #13 - changes in time
Tumblr media
Challenge: How can I show the changes of the wild boar simulation model that happen with time in a wild boar management simulation game?
The player in our wild boar management simulation game will be able to go ahead in time in the game by clicking a button on the screen in order to see the wild boar simulation changes and the changes that have happened as a result of their actions.
Methodology
I implemented the next year logic in a Unity prototype with help from my teammates.
DOT framework methods used:
Tumblr media Tumblr media
Resources
Game design document
User stories document
Products
On each forest tile (tile with trees on it :)), there is a 50% chance of spawning 100-200 boars.
Tumblr media
When clicking on a tile, information about it is printed in the console
Tumblr media
Clicking on Next Year triggers calculations of the wild boar model
Each year the following actions happen:
the food on each tile increases
4-10% of all boars die from natural death
each boar on a tile eats 10 food
if the tile has enough food for the boars on it for the next year, they stay there and reproduce (each female gives birth to 4-7 new boars)
if the tile doesn’t have enough food for the boars on it, they migrate (each boar has 80% chance of moving to the most attractive neighbour tile with most food on it and 20% of moving to anther random neighbour tile different from the most attractive one; if the tile that the boar will move to is a road, it has 50% to move to the most attractive neighbour tile of that road tile or else it dies)
Tumblr media
Boar migration explained
GitLab commits:
add next year calculations and remove redundant files
The code and other resources can be found on our GitLab Repository.
Next
Display information such as tile properties on the game screen instead of printing it in the console. Show a wild boar icon on every tile with more than 100 boars on it in order to visualise the boar population on the map better.
0 notes
kallomgaming ¡ 3 years ago
Text
[industry project] #12 - where my neighbours at
Tumblr media
Challenge: How can I implement selection of a hexagonal tile and its neighbours in a tilemap by clicking on it?
The player in our wild boar management simulation game will be able to select an area of the map in order to investigate its properties and wild boar behaviour there, plant or cut down a forest, and perform other actions.
Methodology
I read at some articles that suggested a solution to my challenge and used them as a source of good practices and inspiration. I implemented the feature in our Unity project prototype. Furthermore, I looked at some community posts and answers in order to incorporate what others have learned.
DOT framework methods used:
Tumblr media Tumblr media Tumblr media
Resources
Articles:
Hendricks, A. (2018, June 3). Unity Tilemaps and Storing Individual Tile Data. Medium. Retrieved June 7, 2021, from https://medium.com/@allencoded/unity-tilemaps-and-storing-individual-tile-data-8b95d87e9f32
Patel, A. (2020, May). Hexagonal Grids. Red Blob Games. Retrieved June 7, 2021, from https://www.redblobgames.com/grids/hexagons/
Community:
Unity Tilemaps and Storing Individual Tile Data - Reddit (used for confirmation)
How to convert coordinates from Unity Cell (GridLayout.WorldToCell) to Cube and backwards - GitHub issues
Hexagonal TileMap Movement Issue (using New Tilemap System) - Unity Forum
Videos:
youtube
Products
Tumblr media Tumblr media
Outlining the map with hexagonal tiles in a team meeting
Tumblr media
Selecting a single hexagonal tile by clicking on it
Tumblr media
Selecting a hexagonal tile and all its neighbour tiles
GitLab commits:
add test scripts for the selection of a tile and its neighbours
The code and other resources can be found on our GitLab Repository.
Next
Add data to each tile and visualise it as the player clicks on the tile.
1 note ¡ View note
kallomgaming ¡ 3 years ago
Text
[industry project] #11 - user stories
Tumblr media
Challenge: How can I come up with user stories for the development of a wild boar management simulation game?
My teammates and I decided to define some user stories based on our game design document for a wild boar management simulation game because we wanted to start planning the development of our game by using the Scrum methodology.
Methodology
I participated in the writing of user stories by referring to our game design document and brainstormed on how to break the functionalities that our game will have into smaller parts in order to define related and specific user stories.
DOT framework methods used:
Tumblr media Tumblr media
Resources
Game design document
Products
User stories document
Next
Build a hexagonal map in our Unity prototype and look into how to make the player be able to select separate tiles on it.
0 notes
kallomgaming ¡ 3 years ago
Text
[industry project] #10 - 2d unity project setup
Tumblr media
Challenge: How can I setup a 2D Unity project with a hexagonal grid and learn how to work with it correctly?
The wild boar management simulation game my teammates and I are currently developing will feature a 2D top-view map consisted of hexagonal tiles on which the simulation will be happening.
Methodology
I quickly set up a 2D Unity project and uploaded it to the team’s GitLab repository. After that, a teammate of mine opened the project and together we looked into how to work with hexagonal grid and tiles through shared screen.
DOT framework methods used:
Tumblr media
Resources
Hexagon Pack
Products
Tumblr media
Setting up the hexagonal grid and experimenting with some hexagonal tiles
The code and other resources can be found on our GitLab Repository.
Next
Define user stories and get started with working on the game.
0 notes
kallomgaming ¡ 3 years ago
Text
[industry project] #9 - game design document
Tumblr media
Challenge: How can I create a game design document for a wild boar management simulation game?
My teammates and I decided to note down our indended design of our wild boar management simulation game in a game design document in order to have a visual representation of our concept which we can later use for reference.
Methodology
I researched some existing ecosystem games and good practices for creating landscapes in Unity we could use as inspiration. I took part in writing parts of the game design document such as the game play and game world. Furthermore, I participated in a brainstorming session with my teammates about the game map tiles and wild boar behaviour.
DOT framework methods used:
Tumblr media Tumblr media Tumblr media Tumblr media
Resources
Wild boar simulation model
Inspiration:
Feed the Dingo: An Ecosystem Game
Videos:
youtube
youtube
youtube
youtube
Products
Tumblr media
Results from brainstorming session about the tiles and wild boar behaviour
We decided to use hexagonal tiles because they allow more flexibility for movement in different directions and the boars in our game will move when migrating.
Our game design document for a wild boar management simulation game can be found here.
Next
Set up a Unity project and push it to Git. Start creating the map of tiles.
0 notes
kallomgaming ¡ 3 years ago
Text
[industry project] #8 - to tough decisions and new beginnings
Tumblr media
Challenge: How can I decide in what direction to continue with the industry project due to the lack of resources from the client’s side that are crucial for the completion of the initial problem statement in the given time frame?
The past sprint was quite the tedious experience as my team and I weren’t sure how to proceed with the industry project. The ineffective source code we received from the client and all the constant back and forth communication with them about a resolution to this problem slowed us a lot. We weren’t sure whether to start working on our own wild boar management simulation game or wait for the working source code as we have designed the wild boar simulation model needed for both directions. The solution to this challenge was crucial for the delivery of our project and allowed us to see the light at the end of the tunnel.
Methodology
My team and I had a meeting with the client where we pitched our first playable, informed them about the problematic situation we’re facing and discussed the directions in which we could proceed with the project. Furthermore, we had two meetings with a developer at Fantazm who explained to us the reasons for the ineffective code repository and prepared a working version of it. We’ve been having team meetings everyday throughout this process where we discussed what would be the best solution for us to deliver the industry project.
DOT framework methods used:
Tumblr media Tumblr media Tumblr media Tumblr media
Resources
First playable pitch meeting with client
First playable Q&A document
Code review meetings with Fantazm’s developer
New client repository
Products
My team and I decided to create our own wild boar management simulation game from scratch. We came to the conclusion that this would be the best approach for pursuing the project outcomes due to the time restrictions we have and the fact that we haven’t had received the resources needed for the completion of the initial problem statement in time.
However, throughout this tedious process, I gained experience in the industry project’s main aspects:
Working with scrum ✔️
Communicating with your client ✔️
Working in a group ✔️
Working on a complex challenge ✔️
I haven’t been feeling productive and motivated lately but now this has changed and I’m ready for the amazing game that my teammates and I will make.
Next
Create a game design document for our own wild boar management simulation game.
0 notes
kallomgaming ¡ 3 years ago
Text
[industry project] #7 - wild boar simulation model
Tumblr media
Challenge: How can I design a wild boar simulation model which simulates the behaviour of wild boar population regarding factors such as food, reproduction, migration and overall influence in an ecosystem?
The wild boar simulation model is the bare logic of the game which will serve as the core part of the game design. It contains the needed calculations about what the boar do in each phase of the game.
Methodology
After receiving the wolf and deer simulation model for Ecosim’s “Wolf in the Netherlands” module from the client, I took part in creating a wild boar simulation model alongside my team. I suggested ideas about the values of the different variables and made sure that our model uses the same structure as the one given to us by the client.
DOT framework methods used:
Tumblr media Tumblr media Tumblr media
Resources
The wolf and deer simulation model we received from the client
Ecosim’s manual for the “Wolf in the Netherlands” module
Products
A document that describes the wild boar simulation model we came up with which can be found here.
Next
Decide whether to create a wild boar management simulation game from scratch or as a module for ecosim which will use this wild boar simulation model.
0 notes