I've been working a lot on this little thing but for some reason I feel that I haven't made much progress, and by "for some reason" I mean that I got a new computer so I have been playing a lot games instead of working more on this.
I'm still stuck on the first mission of my game, although I made quick prototypes of the next three missions; by "prototypes" I just mean the overall structure of the mission, like what objectives will have, the order on which they will be completed, etc, but almost no dialogue, no backgrounds, few enemies (only the ones related to the objectives) and so on.
I'm liking the prototypes so far, each mission is slightly different, so they are not just like "go here and destroy this". For instance, one mission involves disabling a wind farm by hacking three terminals located on different parts of the map; each terminal hacked makes the windmills run faster, and you need to navigate the map avoiding them.
I actually made a hacking minigame, because why not? It looks like this:
You need to navigate the firewall maze, steal all the data and head to the exit; if you touch a firewall or the time is up, you are done. At its core the game is still just a shooter, but I wanted to spice things up a little bit with silly things like that.
Anyway, I'm here because I wanted to ramble about inconsequential things.
When I was a kid, I played the crap out of Age of Empires 2, which I'm sure some of you have played. That game had a fantastic level editor, I loved it, it was the first game I played that offered me the chance to make things up. I made silly, ugly and unbalanced maps, but they were MINE. I felt powerful, I felt like a GOD!
The editor had a lot of menus: one to place stuff on the map, other to manage the players and so on, but there was one menu that I had no clue for what it was: the "Triggers" menu. I mostly ignored that menu for years, I mean, I could make my maps perfectly fine without using that, but curiosity got the better of me: what were "triggers", exactly?
I started playing around. That menu offered to create "triggers" and associate them with two things: "conditions" and "effects". The game offered a huge list of them, but I had no idea what they were. After playing around, it clicked: if a condition is met, the effect happens. So simple, so powerful. In hindsight, yeah, it seems pretty obvious, but back then I honestly had no idea what they meant.
I started making silly things, like if you destroy a certain building (the condition), some enemies spawn (the effect), but then I made much more complex stuff, like heavily scripted levels with multiple winning conditions. Hell, I remember trying to make an RPG-like level on which you just control a single unit, your hero, and you have a huge map to explore, with multiples cities, some of which are blocked and you need to perform tasks to gain entry. You had a quest log of sorts, and most quests gave you gold, which you could spend to increase your HP and Damage by moving your hero next to a shop, all of this using triggers.
I felt like a god of gods.
When I wrote my map editor two years ago or so (which I'm using to make this game... and my several other failed attempts), AoE 2's editor was my main inspiration. My editor is practically the same, and that includes the triggers system (which I called "events").
An "Event" is a group of "Conditions" and a group of "Effects", plus some other data like a name (for reference) and "Requisites" (a list of event names, telling that those events need to finish before this event can be activated).
So, let's say that we have the following event:
.
- Name: "Find the first base"- Conditions: - ObjectInZone(Player, Base1)- Effects: - SpawnObject(EnemyHelicopter, Base1) - SpawnObject(EnemyTank, Base1) - Dialogue("Good, you found the base. Now destroy it!")
.
This event is written manually on a text file. The event handler will read this when the game starts and will check if the conditions are met every second or so, and if all the conditions are met, it will do all its effects and then the event will be marked as "finished".
In this case, the handler will check if the player is in the zone called "Base1". If that's the case, it will spawn two enemies in that zone and a dialogue box will appear telling you what to do.
Let's consider another event:
.
- Name: "Destroy the resistance"- Requisites: - "Find the first base"- Conditions: - ObjectKilled(EnemyHelicopter) - ObjectKilled(EnemyTank)- Effects: - AddHealth(100) - Dialogue("Nice, your enemy crushing skills are magically healing you for some reason")
.
Unlike the previous event this one has requisites, so it won't be active (that is, the handler won't check its conditions) until all its requisites are finished. In other words, finishing the previous event will activate this one.
So, what happens when taking both events into account is this: you go to the first base and two enemies will spawn and a little dialogue box will pop up telling you to destroy everything. After destroying the poor helicopter and tank, another dialogue box will pop up congratulating you and you'll get healed (even if that doesn't make the least amount of sense).
That's the events in a nutshell. Each level that I'm making has A LOT of events, so I have full control of the dialogue, the enemies, the objectives that you need to do to complete the mission and so on. It works great, although it's a little tedious I'll admit, but I don't know better alternatives so I'll just stick with this for now.
The events is part of the reason it's taking me so long to make this game despite the levels being pretty short, but being honest, the main reason is simply because I'm a slow worker and I tend to change a lot of things just for the heck of it: move this building a little further because it's too close to this other building; change the timing of this line of dialogue because it's a little fast; make the map slightly bigger; realise that I moved that building way too much so now I move it back to where it was, you know, small silly details like that, which is extremely time consuming and doesn't really add much, but I'll be damned if I don't enjoy placing things around in the editor.
Anyway, I also have a dialogue system, yay! This was actually a leftover from previous projects, but I tweaked the code a little bit. Now It looks like this:
Basically just big bubbles of text. The color and the position represent which one of the three characters is talking. Hopefully the dialogue is not distracting while you are shooting at things; I'm trying my best to avoid showing dialogue in the middle of the action.
I have a really weird bug, though. The dialogue bubbles are made by several small sprites that are together, and it works for the most part, but sometimes some pieces are in incorrect positions:
This is extremely rare, it only happens with certain dialogue (but not always) and it only happens if you shoot while said dialogue is up (that is, the bubble is perfectly fine but as soon as you shoot, those two pieces are moved to an incorrect position). This is driving me crazy, because unlike most bugs that I have encountered so far, I can't reproduce this one, it happens at random, and like I said, is extremely rare.
By the way, I need music!!! I love music in games, and a silent game just feels weird to me, but unfortunately I can't make music[size=1] [1], I have never done it, and I believe this is my main roadblock when it comes to finish the game.
[size=2][1] I mean, I can't make graphics either, but at least when it comes to graphics I can make ugly assets and say they are bad on purpose to fit the theme of the game =)
Thanks for reading