A simple RPG game - personal project to improve my programming skills
Tags: javascript, beginners, programming
Published: 2022-06-12 21:31:02

## Intro
I have been working on a **game** for a while, where you fly a spaceship, destroy enemies and collect coins that allow you to buy additional skills for the ship. However, one of my good friends who is an experienced programmer told me that my project could be improved. He also advised me to share my progress, which would help me to stay motivated to learn and focus on my project. That is why I decided to write this article in which I want to describe what I have done and what are my next steps.

##I have already **implemented** following features:
 
### Game rules
The main character of this game is a _spaceship_ that collects coins(points). Points appear after destroying opponents. If the spaceship collects enough coins, it can buy skills to improve his statistics. The game also has two types of enemies. One of them is the _‘alien’_, which takes away points from the ship during collision. The other is _‘UFO’_, which shoots towards the ship and also takes points away from it. Then when the spaceship destroys enemies, it will be able to collect coins(points) from these enemies after they disappear. The goal of the game is to destroy all opponents.

### Spaceship skills
* **Laser length** - collect coins from a greater distance
* **Ship speed** - faster ship movement
* **Bullets speed** - destroy opponents more efficiently
  
### Technologies used
**Pixi JS**
Here is a list of a few things which came to my mind while I started using it. And this is just my opinion which means you don’t have to agree.

**advantages**
* **easy API** - there is just the right amount of functions to use like drawing an image or a shape, rotating it compared to other libraries where API is to complex
* very similar to **canvas** with few additional functions - easier to learn
* **graphics** - you can very easily and effectively draw various geometric figures 
* **examples** - you can find small examples on many topics
* **MIT license** - you can use it in commercial projects

**disadvantages**
* **3D** - you can not use 3D graphics

### Look and feel of the game
* On the **right** side skills and statistics of your ship are displayed. Skills can be bought by the given amount of coins.
* On the **left** side there is actual gameplay happening.

This is what my game looks like now, but like I said, I want to improve it, add different features and make my code cleaner.

## Next things I want to **implemented**:

### Game levels
* Each of these levels will be more difficult.
Increasing value of skills per level
* The character will need to spend more resources/gold coins
* Stronger opponent at the end of each level aka boss :D

### Ship skills
* different **ships** or additional **equipment**
* **bullets range** - destroys enemies from a greater distance
* **packages** - the character can obtain skills from the package which would show up after killing a boss instead of paying for it

## Summary
I am writing this game, because I want to learn something new, expand my programming skills and build my portfolio. 

Additionally, I would be very grateful for any advice and support which would help me in continuing this project.

**Thank you** for reading!