Forest Defender Devlog 0: Design
Tags: gamedev, devlog, python, devjournal
Published: 2022-08-31 04:12:28

## Shoot 'em up Devlog 0: Design

</br>


<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gnchqkxx2587egbypt6d.jpg" loading="lazy" style="min-width:300px; max-width:600px;" />

<i>Written on May 12th, 2022</i>

</br>

## Table of Contents

* <a href="#designing-a-game">What goes into Designing a game</a>
* <a href="#useful-tools">Useful tools</a>
* <a href="#design-for-this-game">Design ideas for this game</a>
* <a href="#technology_and_tool_choices">Technology and tool choices</a>
* <a href="#further-reading">Resources / further reading</a>

<a id="designing-a-game"></a>

</br>

## What goes into designing a game?

</br>

<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6coknqi3sygjp1edoqgf.jpeg" loading="lazy" style="min-width:300px; max-width:600px;" />

</br>

Designing a game sounds easy - and it certainly can be at times - but it is actually a long process with many choices to make. These choices can impact development environment, artistic direction, technology used, build goals, etc. The main design choices I find myself making at the beginning of a project are:

* What style will this game be in?
    * 2D, 2.5D, 3D, VR, etc.
* Based on the above answer, what technology will I use?
    * Game Engine / Frameworks: Unity, Unreal, Monogame, Pygame, Love, etc.
    * Languages (heavily depended on the game engine / framework answer)
        * C#, C++, Python, Lua, etc.
* What external tools would be helpful?
    * Art tools (Photoshop, Illustrator, GIMP)
    * Text Editor (VSCode, VS Studio, PyCharm)
    * Etc.
* How many people will be working on this project?
* What source control system will I be using?

We can then go into the actual game design choices:

* Artstyle and color pallete
* Theme
* Unique attribute to the game
    * This would be what separates it from other games
* What games can we pull inspiration from?
* What is the MVP or <i>Minimal Viable Product</i>
    * Essentially what is the minimum needed to get the game ready for demoing / playtesting

<a id="useful-tools"></a>

</br>

## Useful tools 

</br>

<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3mw0g3qelbyp6kbl0vlc.jpeg" loading="lazy" style="min-width:300px; max-width:600px;" />

</br>

As mentioned in the previous section, there are many tools that are useful during game development. Essentially if there is something you'd think "I wish there was a ___ to make development quicker", there probably is! Below are useful tools I have used in the past and can recommend:

<b>Art Tools:</b>

* Higher resolution
    * [Photoshop](https://www.adobe.com/products/photoshop.html) <i>(paid)</i>
    * [Affinity](https://affinity.serif.com/en-us/) <i>(paid)</i>
    * [Gimp](https://www.gimp.org/) <i>(free)</i>
* Pixel Art
    * [Asperite](https://www.aseprite.org/) <i>(paid)</i>
    * [Pixaki](https://pixaki.com/) <i>(paid)</i>
    * [Microsoft Paint](https://apps.microsoft.com/store/detail/paint/9PCFS5B6T72H?hl=en-us&gl=US) <i>(yes, this can be used! Free)</i>

<b>Game Engines / Frameworks:</b>

* [Unity](https://unity.com/) <i>(free for most)</i>
* [Godot](https://godotengine.org/) <i>(free)</i>
* [Monogame](https://www.monogame.net/) <i>(free)</i>
* [Pygame](https://www.pygame.org/news) <i>(free)</i>
* [Love2D](https://love2d.org/) (Lua) <i>(free)</i>

<b>Source Control:</b>

* [Git](https://git-scm.com/) with [GitHub](https://github.com/) or [Bitbucket](https://bitbucket.org/product)

<b>Task Management:</b>

* [Trello](https://trello.com/)

<b>Text Editor:</b>

* [VSCode](https://code.visualstudio.com/)
* [Visual Studio](https://visualstudio.microsoft.com/)
* [Sublime](https://www.sublimetext.com/)
* [Atom](https://atom.io/)
* [PyCharm](https://www.jetbrains.com/pycharm/)
* [VIM](https://www.vim.org/)

<a id="design-for-this-game"> </a>

</br>

## Design ideas for this game 

</br>

<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mvy1vuoyggub6mzyuz5h.jpeg" loading="lazy" style="min-width:300px; max-width:600px;" />

</br>

### Theme

The game we will be creating will be a <i> Shoot'em Up </i> / <i> Bullet Hell </i> style game. As the player, you will need to avoid the large number of projectiles while attacking and destroying the enemies. Once the level's enemies have been destroyed, the player can move to the next level.

### Visual Design

This will be a pixel art styled game. The color palette will be chosen in a later devlog once the basics of the engine has been built. In my past projects it has been difficult to make smooth animation of pixel-based graphics, so a goal of mine for this project is to have smooth and meaningful animation of the environment and entities.

I will also be spending much more time than usual on the graphics and feel of the environment. In the past, most of my time has been on the player and other entities of the game, leaving the environment the player lives in to be lacking in feel.

### Goals of project

* Smooth / understandable / easy controls
* Smooth animations
* Minimum FPS of 60 on an average computer
* Visually pleasing environment

### Story of game

Fungus is a natural and important piece of any healthy ecosystem, but what happens when the fungus becomes sentient and begins to cause damage to the ecosystem for their own gain? As the protector of the forest, your goal is to destroy the villainous fungus and return the land to a balanced and healthy life. You must fight your way through the defenses of the fungus to challenge the Life Mushroom to a battle.

### Supported platforms

We will support and build this game on Windows 10 and up, MacOS, and Ubuntu Linux.

### Supported devices

This game will be playable with a controller or keyboard / mouse.

<a id="technology_and_tool_choices"> </a>

</br>

## Technology and tool choices

So based on my goal for this game and the underlying knowledge I have, I will choose the following from the <b>Useful Tools</b> section:

* <b>Art Tools:</b> Pixaki and Asperite
* <b>Game Engine and Language:</b> Python with Pygame
* <b>Source Control:</b> GitHub
* <b>Task Management:</b> Trello
* <b>Text Editor:</b> VSCode

<a id="further-reading"> </a>

</br>

## Resources / further reading

<b> General: </b> 

* [10 game design tips for new developers](https://unity.com/how-to/beginner/10-game-design-tips-new-developers)
* [From Zero to Game Designer](https://www.freecodecamp.org/news/from-zero-to-game-designer-how-to-start-building-video-games-even-if-you-dont-have-any-experience-5e2f9f45f4bb/)

<b> Art tools: </b>

* [Affinity](https://affinity.serif.com/en-us/)
* [Asperite](https://www.aseprite.org/)
* [Gimp](https://www.gimp.org/)
* [Microsoft Paint](https://apps.microsoft.com/store/detail/paint/9PCFS5B6T72H?hl=en-us&gl=US)
* [Photoshop](https://www.adobe.com/products/photoshop.html)
* [Pixaki](https://pixaki.com/)

<b> Game Engines / Frameworks: </b>

* [Godot](https://godotengine.org/) 
* [Love2D](https://love2d.org/) (Lua)
* [Monogame](https://www.monogame.net/)
* [Pygame](https://www.pygame.org/news)
* [Unity](https://unity.com/) 

<b> Text Editor: </b>

* [Atom](https://atom.io/)
* [PyCharm](https://www.jetbrains.com/pycharm/)
* [Sublime](https://www.sublimetext.com/)
* [VIM](https://www.vim.org/)
* [VSCode](https://code.visualstudio.com/)
* [Visual Studio](https://visualstudio.microsoft.com/)

<b> Other </b>

* [Git](https://git-scm.com/)
* [GitHub](https://github.com/)
* [Bitbucket](https://bitbucket.org/product)
* [Trello](https://trello.com/)