09 May 2011

AeStHete

Here and there I've coyly mentioned that I'm working on a Sonic game engine in Game Maker, for instance in this old thread (in which I unwisely muddied the issue by illustrating the engine with a remake of the 8-bit Sonic 1, which is now indefinitely shelved) or in a now-out-of-date YouTube video or two.

But I realise that nowhere have I really officially announced it. Time to fix that!

Thanks to Overbound for the snazzy logo graphic! ^_^

Announcing AeStHete, "An Excellent Sonic The Hedgehog Engine That's Editable"! (After much struggle I managed to find a name that was obscure, immodest, and annoying to type! Am I cool or am I cool?) It's made in Game Maker, but there's a possibility it will be ported in the future.

Screenies:

Sonic looks annoyed at being in yet one more GHZ remake.

'What's wrong with the HUD?' I hear you asking. Well, how else would you know it wasn't a screenshot of the real game? It's just that good, folks!

The zone graphics are optionally fogged out to make the objects being edited stand out.

Waaaa! What's all this about? Yes, you can enter Edit Mode at any time and create or modify levels as you play - there's no need for a separate level editor. The interface can be customised, and there are several resolution options for Edit Mode.

Though I began making AeStHete expressly for my own Sonic fangame project, I've decided to make it totally Open Source - so, in addition to being able to edit levels and so on using the interface, you'll also be able to modify the interface and engine yourself in whatever way you see fit (that is, if you know Game Maker's scripting language). Think of it like hacking a ROM, only instead you're hacking a fangame.

Because of this, Sonic Time Twisted will be the first game to use AeStHete once it's finished. When will that be? I can't really say (I've as much as promised demos before and missed the deadline, and I'm not interested in doing that again). The thing is I keep finding bugs - and then discovering that these bugs actually exist in the original Yuji Naka engine, and that means I can't simply do more research into the originals in order to solve them. I have to work out how to improve on the engine myself, and this takes some time. (Why not settle for "as good as the original?" I'm a perfectionist, dammit!)

But rest assured that progress (and a lot of it) is being made. On that note, I made a semi-mysterious tweet a couple days ago saying I was happy about some obstacle I had overcome. I was referring to having successfully implemented palette cycling, an effect which classic consoles could do in their sleep, but that Game Maker doesn't natively support (scroll to the bottom of the page for Mark Overmars' list of things he'll never add). In the end, pixel shaders, specifically this shader extension, came to the rescue. Now I can confidently say that AeStHete can do everything the original 16-bit games do, just as well and often better.

Now that the hedgehog's properly and officially out of the bag, I'll probably be blogging and tweeting about AeStHete's progress more often, like this:

 I just typed a line of code.
 
 Oops - made a mistake. Hit backspace a few times.
 
 Compiling and testing now...
 
 Damn, omitted a semicolon.
 
 Okay, that's got it. It works now, but I think I should increase this value a bit...
 
 Pausing for snack. BRB

What, not that often? Whatever.

Ingrates.

17 comments:

  1. Mercury's well active, as it seems. Good news the engine's got open source.

    The name AeStHete is kinda funny, but it is well original at my point of view.

    For what I've understood, we're gonna be able do edit the very stage at the same time we're playing the game, is this it?

    ReplyDelete
  2. Woohoo! Glad to hear more from this :) I'm definitely still interested in using it for my next big project.. although I'll NEVER remember that name! I'm just going to call it Mercury's engine :P

    ReplyDelete
  3. Yes, you can edit the stage while playing - all it takes is hitting the space bar to enter Edit Mode. It works sort of like Debug Mode in the old games, just greatly extended. Real-time editing like this, if not properly implemented, can cause trouble - for instance, if you collect items it will think they should be deleted from the layout, etc - and this is probably why most engines don't work like this. But I've spent a lot of time making sure those problems won't arise.

    And LiQuidShade, if you ever forget the name, at least it starts with 'a' - it won't take long to find it in a dictionary! =P

    Speaking of which, I suppose there might be some few out there who aren't familiar with the word and think it's merely an acronym - but aesthete means "one who has or affects to have a special appreciation of art and beauty". I chose it because of that special set of nuclear consonants.

    ReplyDelete
  4. Ah, I actually wasn't aware that was a word, although it makes sense now that I think about it - like aesthetics.

    Quick question, I know the option of resolution appears in your screenshot, but I was wondering how easily AeStHete works with games that are at different resolutions than the standard 320 x 224 (figures I now know off the top of my head purely from cropping hundreds and thousands of screenshots for years!) of the Mega Drive. I'm probably going to be looking to design graphics and tiles for my levels that are perhaps twice that resolution or more maybe, similar to Sonic 2HD or Sonic 4 I guess. And naturally, along with that comes a larger Sonic sprite to fit into them too (which I also might have a crack at drawing, God help me). The retro effect is nice, but it does seem a shame to me not to take advantage of the advance in technology. If there is support for different resolutions, are there any limitations that go with it? Aspect ratios etc, or issues regarding the size of the character sprite?

    Must say, it's great to hear more about this project, do keep us informed about updates and new features as they arise, I love to read about them!

    ReplyDelete
  5. Resolution options, hmm... Well, it's certainly possible, since the user could change anything about AeStHete that they wanted. But I haven't put simple options for it in the interface.

    I realise that this is something a lot of people will want, though, so I'll put it on my To Do list. It should be simple enough.

    ReplyDelete
  6. "...That's Editable"

    So, you'll be releasing the GMK?


    Also... Do you have a high definition version of that logo... coz if you don't, you could have.

    ReplyDelete
  7. Was there something wrong with the SVG I sent you?

    ReplyDelete
  8. This comment has been removed by the author.

    ReplyDelete
  9. I know you're unwell, so I'll drop this here for when you're better.

    Have you fixed physics bugs that were in Sonic 1, 2 and 3, or is it a carbon copy?

    Also, about the title, I was just bored. It's good.

    ReplyDelete
  10. The physics aren't a carbon copy, they're recreated from the ground up. I've solved the bugs I know about.

    Only time will tell if I've blundered and introduced a batch of new, undreamt of glitches, though.

    ReplyDelete
  11. That's great! By carbon copy I meant you wanted to replicate them exactly, bugs or no bugs (bad choice of words). That is certainty good to hear anyways.

    ReplyDelete
  12. Are you planning on releasing this soon?

    ReplyDelete
  13. Could you let us know how the project is coming?

    ReplyDelete
  14. This is exactly what i'm looking for! looking forward to it

    ReplyDelete
  15. WakaFlockaFlame1 from DA07 December, 2013

    You got a good engine here,heard it uses asm,can't no close to Gens days than that!;)

    ReplyDelete
  16. Well, I guess this project is officially dead?
    I'm looking forward to the release.

    ReplyDelete
    Replies
    1. Not exactly dead. I'm currently coding the engine for a commercial project, and I'm still hoping to release AeStHete as a series of separate modules. I just haven't made any announcements because I'm not certain about everything yet.

      Thanks for the interest!

      Delete