Friday 18 May 2018

Bounty Hunter II Update: Single focus + Refractoring

Hello there!
It's been over a year since this game has been in development (around 5th May 2017), boy does time pass quick!
Here's an update on how things have been going on my end with Bounty Hunter II.

Refactoring NPC/Enemy code:

Upon adding an ally, I went into a problem
How this started was that I was trying to add in a character that accompanies you for a little bit. Obviously I'd need to add in AI; naturally, I went to the enemy codebase to copy the code. However I realized that this was pretty rediculous. Why do I need to painstakingly copy and paste code just to make an Ally character?

It was then I decided instead of an enemy codebase, why don't I do a NPC codebase?
This allows for me to create NPCs which can be BOTH enemies or allies. After a bit of thinking, I came up with the idea of  a faction system - a system which dictates what characters attack whom. Without having to rewrite another type of NPC, I can just assign the ally character to the same faction as the player and they'll be freinds. Easy! I can even make the NPC an enemy if I wanted to.

There is also another benefit to this system - I can also make the enemies have their own goals beyond just trying to defeat the player. To those of you who have played games like Half life (or Half life 2) you may notice that zombies and marines/combine soliders are both enemies to the player. However the zombies also attack the soliders and vice versa. This gives the game's world that extra depth to make the enemies not all monotonous. It's like you are living in a world rather than a video game.

Minecraft also does this to a certain extent with some hostile creatures attacking some passive creatures, but not as well as Half life.
Although I don't plan to do too much with this system, it does give me some insight if I want to make a more complicated/mainatianable NPC codebase. Perhaps this could lead me into making Skyrim (I jest).

Maps:

It's one thing to make enemies, it's another to make maps. Before earlier this month I designed levels like this:
Design map -> Add collisions -> Code nessacary enemies (if needed) -> add enemies into the game -> Add events -> Finish map -> move on.

After then, I realized that this method would take much longer and the perfectionist way simply isn't the best for the development time of this project. I'd probably struggle on designing one level and be stuck on it. Therefore, in the crunch of a week, I decided to finish all the maps the game will need (11th of May to be more specific) but have them void of any cutscenes or enemies. After this I then focused on adding in the remaining enemies (which incidentally took more or less time to implement). I also added in most of the bosses the game will need other than the final boss (the first form is complete).

After I add the remaining boss into the game I will then focus on actually adding them in to the levels and create the events the levels need like story-based and boundary-enabling. I like this way a lot more than the former because it can give me much more time to playtest the levels and seek feedback from others months before I expect it to release.
It can also give me time to work on other projects (which I'll get to in the conclusion) since I don't have to focus on implementing but rather polishing what's already there.

"Trap" objects

I wanted to find a way to make the game more varied than just run n' gun. Because to those of you who have played the public alpha (which incidentally, the itch.io version I decided to take down because I wanted to hide it until release), the gameplay consisted of going across the level fighting enemies to make boundaries disappear in order to advance. Thanks to these objects which I call "Traps" you can do slightly more than that.

By traps I mean objects that the player collides with that damages them in some way. For instance one type of trap is a trap that is much like a ditch (well, it's essentially that actually), which damages the player and teleport them to the position before they fell into the trap. The way to avoid this is to dash across the trap, much like the player is "leaping" to another platform. There are some which do the same, except they don't teleport the player.

I try to use these to give the player a break from combat and get them into good ol' platforming, because hey, why not?
Plus it gives the dash an extra use apart from a useful way to dodge endless waves of leap attacks and bullets.

Conclusion

This is all I'd like to say for now about this game, anything else would be a spoiler. Despite the game's development going pretty well (knocks on wood), I still do get a little bit nervous about whether it may be completed or not despite this game being over a year in development.

I've had experience with more ambitious projects like these, where I'd have some big idea for the game for example a game version of my old book series "Ratchet and Sinro", and dream up how the game will look like.
However, in month (or two if I were lucky) or less I'd procrastinate and completely forget about the project, leaving it in an indefinite hiatus.

With retrospect, it's a miracle that I've been working on this game for this long and I've never had that procrastinate-ish feeling; sure I've had doubts about it's success but I think that's a good thing.
It shows that I've still got lots to learn before I can become something rare and valuable to the world.
The difference between this project, I realized, was my more realistic expectations - I didn't have some pre-existing and specific thought about making this game.

I just thought it would be cool to make a sequel and did admittedly come up with a few ideas (like dashing, because dashing is cool), but they were mainly developed further through experimentation, slowly moulding into a different form of what I originally envisioned. As a result, some ideas that quickly came into my mind were dropped as soon as they came, as I worked on the game.
It turns out I enjoy the reality of the features I added in, more than the ones I came up with in my head.

Anyway, enough deep talk. Changing the topic slightly,
I've got some other neat stuff outside of Bounty Hunter II to show in the future, I'm not going to say what they are but I'll give you a hint:

  • One of them is a riskier project than Bounty Hunter II.
  • The other uses a new custom language I've made called "Pixel Brownie Text Markup Language" (UPDATE: The latter has been cancelled due to lack of direction)

Both are major projects like Bounty Hunter II.

For now I don't have any minor/side game projects in development.
Although I would love to make some right now, I'm in a very awkward situation, trying to balance school and Game development (it's not easy!).

With all that said,
That's all from me!