HeroesGrave Development

If it wasn't Awesome, it wasn't me.

I’m Going to Write Some Tutorials!

| Comments

Well, the title really says it all:
I’m going to start writing some tutorials. I’m planning on basing them around a simple Guardian-ish game.

I’ll start off with Java, but if things work out, maybe I’ll port it to Rust.

Hopefully I’ll also teach myself a few things along the way.

Things I’ll (try to) cover include:

  • Game loops
  • Creating a window with LWJGL & Basic Immediate-Mode drawing.
  • Abstracting stuff. (So I can get away with teaching deprecated OpenGL by making it easily changable to the more modern pipeline)
  • Images (and OpenGL Textures).
  • Other resource loading.
  • Basic world and entity stuff.
  • Display lists.
  • VBOs.
  • Shaders.
  • Text rendering.

Anyway, probably best for me to get to work.



| Comments

A little, bit late (Tuesday), but here is what I was going to post for Screenshot Saturday:

As well as implementing Archers, there have been a lot of AI tweaks and rebalances. Although in the sequence above only the archers survive, usually it’s a more even spread of units.

A little bit of work is needed to have units respawning properly (ATM it just spawns warriors at random intervals), and when that’s done, I’ll create a few levels and throw up a demo.


Screenshot Saturday #161

| Comments

And a GIF from last week that I didn’t post:

Core mechanics are nearly at 100%.
Maybe even a short demo will be available next week.


Guardian II Attempt II

| Comments

A while back I abandoned Guardian II as I was unable to give it the gameplay I wanted.

Then, playing Guardian (I) again, I realised that the gameplay I tried to give it was not what I really wanted.

What I wanted was a fun hack-and-slash platformer where the player controls one unit in a battle between two armies.
What I tried to make was an RTS where the player has to fight AND control their army. Not that fun.

The relevant post can be found here on my old blog.

Even though I said I wasn’t working on it anymore, shortly afterwards I completely rewrote the engine and worked on the spritesheet.

Things in the codebase are very clean at the moment, and although I’m not expecting them to stay that way, this is at least the 5th iteration of the engine, and that means I’ve had plenty of opportunity to get everything how I want it.

The pathfinding, and AI in general has had a massive improvement, and there’s more to come.

In specific, I’m thinking of introducing a flag system for controlling units and the general flow of the game. More details below.

Here’s a general overview

  • You start off with one base.
    • The base has an initial spawn flag.
  • To control units, you pick up a command flag and they will follow you.
    • The command flag can be placed on the ground, and then nearby units will hang around that flag.
    • If you are killed, the flag is dropped.
      • A brave enough unit can pick it up and continue.
    • If the flag is somehow destroyed by the enemy, nearby units panic (unless there is another flag nearby)
  • To capture more bases, take a command flag to the spawn flag, tear down the spawn flag, and put up your one.
    • The base can then be used as a spawn point and if it is the final one for a level, allows you to advance.
  • If your last spawn flag on a level is lost, you lose the level and must return to the nearest flag on the previous level.
    • If you lose your last flag on the last level, you lose the game.
  • Units have randomly generated courage and aggression stats.
    • These two combined determine most of their AI.
      • Things like whether they attack, counter-attack, fight, flee, panic etc.
    • A unit must have high enough courage to pick up the command flag.
  • Hopefully lots of different campaigns.

Anyway, I have lots of work to do.
I’ll blog more as things start coming together.


Internet Trolls Really Are Horrible People

| Comments

Haven’t posted in a little while due to school just starting, but then I found this article on HN, and had to share.

Internet Trolls Really Are Horrible People

Okay, so stating the obvious to start with, but they have actually proved it… WITH SCIENCE! (Sound more like statistics to me, but whatever)

It mentions how trolls are actually a very small minority, and that most people don’t even comment.

To be sure, only 5.6 percent of survey respondents actually specified that they enjoyed “trolling.” By contrast, 41.3 percent of Internet users were “non-commenters,” meaning they didn’t like engaging online at all. So trolls are, as has often been suspected, a minority of online commenters, and an even smaller minority of overall Internet users.

So next time you get trolled, you know that you aren’t hated by everyone. Good to know.
Although this brings up a new issue, which I’ll talk about later.

I recommend reading the whole article, as some of the stuff is quite interesting.
But if you’re too lazy, here’s my summary:

The research … sought to directly investigate whether people who engage in trolling are characterized by personality traits that fall in the so-called Dark Tetrad: Machiavellianism (willingness to manipulate and deceive others), narcissism (egotism and self-obsession), psychopathy (the lack of remorse and empathy), and sadism (pleasure in the suffering of others).

[Trolling] was correlated with sadism in its various forms, with psychopathy, and with Machiavellianism. Overall, the authors found that the relationship between sadism and trolling was the strongest, and that indeed, sadists appear to troll because they find it pleasurable.

And now the issue I mentioned earlier:

People need to act out against this behaviour

If trolls are the minority, then why are we letting them bully people?

Yes, it’s bullying. They say “just for teh lulz”, but we know that they are only satisfied by hurting people.

One of the worst places I’ve seen for trolling is the indie game-dev community.

Countless developers have been making games for other people’s enjoyment, sometimes even at their own cost. But even there trolls do their horrific work and many developers quit because of the seeming hopelessness of the situation.

What needs to happen is that we, the majority, need to speak out.
We need to fight back against trolls. Make them know that they are disgusting, and then throw them out of the community in disgrace. It’s unacceptable behaviour and everyone knows it.

But more importantly, we need to give more encouragement to the people affected. Once a developer has quit, it’s usually too late to say “Don’t give up now”.

You need to take the time to say “Great work” when you like their work, and give constructive criticism when something needs improvement. And if you don’t like the game, don’t make a big fuss about it (unless it qualifies as a scam etc.).
It’s not the developer’s fault you don’t like it.

Finally, don’t be a troll. If you find yourself only thinking about yourself, or wanting to hurt others, you need to take a long break from the internet.

Thanks for reading my confused ramblings.


Last Day of January. Paint.JAVA v0.13 Beta

| Comments


Selection System Overhaul:

  • Changes are now clipped against the selection region, so selection can be used as a mask.
  • Fixed lots of selection-related bugs.
  • Ellipse selection (still a bit buggy).
  • Cut/Copy/Paste with cross-application compatibility (I think. It works in GIMP).
  • Arrow keys move the mouse one pixel, relative to the zoom of the canvas. Ctrl+Arrow keys to move 8 pixels.

There isn’t much left to do before 1.0. I believe someone is working on the tools dialog, which leaves me to clean things up, sort out the history, finalise the plugin system, and make some icons.

Of course if you want to help with any of those or add new tools etc. to get your name in the credits, feel free. Just post in the appropriate issue on Github or make one if it doesn’t exist. We don’t want 2 people working on the same thing.



Paint.JAVA v0.12 Beta

| Comments

Today I sat down and started work on v0.12. All the work between 0.11 and 0.12 was done in one day. It was fun.




  • Image selection. S to select. M to move. Not quite complete, but more functionality will be coming for the next version.
  • Layered image format. LBIN for raw uncompressed data. ZLBIN for the compressed version. Both take about the same time to load/save, but ZLBIN is way smaller.