Jump to content
A 2021 backup has been restored. Forums are closed and work in progress. Join our Discord server for more updates! ×
SoaH City Message Board

Sonic: The Fated Hour - July 2009 Update


Recommended Posts

I mean, I haven't exactly sat around with my thumb totally up my ass or anything like that, but on the list of "really big things I still need to finish coding in TFH", I basically stopped at Sonic's equip menu and went through doing a bunch of other little polish stuff based on the feedback I got from the SAGE demo and such. Basically, everything but Sonic's equip menu. I was working around it, intentionally avoiding thinking about it.

That takes me back. All the fangames I worked on (and canned) ended up with more polish than actual working gameplay. It's kind of a pain to take an engine in progress and ditch it entirely, considering all the effort that went into it, but sometimes it just doesn't work and that's that.

Of course sometimes your computer has a crash and its not really up to you if you're going to ditch the .mfa or not. So yeah.

Link to comment
Share on other sites

I really shouldn't be posting these here because then when I post the July update on Moddb you guys will already know everything, but...

55185x.jpg

You are looking at the ground floor for code that will hopefully allow fully-customizable controls in TFH for both keyboard and gamepad. If you were the kind of person who is sick and tired of MMF forgetting your control setup every time you launch the program, this is for you.

I just hope my tendency for slightly sloppy code isn't the achilles heel.

Edit: In the interest of knowledge, if you want to know how this works... at minimum, it takes two objects.

Every key on the keyboard is assigned a number. 1-52. When a keyboard key is pressed, it turns its numbered flag on, on the "Keyboard" object. Then, you use a fastloop to run through and check all 52 flags to see which ones are on and which ones are off.

If a flag is on, it checks a list object. The list object has 52 lines in it. The number of the flag corresponds to a line in the list object. For example, if I press the "A" key on my keyboard, that turns flag 17 on, which in turn points to line 17 on the list object. This could probably be done with a different object better suited to this stuff (I'm open to suggestions!), and maybe I'll convert it over to that later, but for now it's a list object.

The line on the list object has another number in it. This is the "button". If that number is four, for example, then that's Button 4 in MMF terms. This turns on "Flag 4" on the "Controls" object. So instead of checking button presses for "Player 1", you check for which flags are on, on the "Controls" object.

So to keep it straight, this is the chain of events that happens here:

I press the "A" key on my keyboard. This activates Flag 17. With a fastloop check, this points to Line 17 on a list, which contains information that activates a specific "virtual" button. This means customized control configs can be saved to and loaded from files (the list file).

Link to comment
Share on other sites

It seems to me that a lot of that could be simplified by using one of the various input objects. Either way, I think the binary object would probably be slightly faster than the list object, and I'd be tempted to replace the whole fastloop bit with some function object and an argument, so that you're not running through all 52 loop steps all the time:

I press the "A" key on my keyboard. This runs function "foo" with an argument of 17. The function then activates the virtual button numbered at byte(argument) in the binary object.

Link to comment
Share on other sites

  • 2 weeks later...

I'll be honest, Violet. You kind of went a little bit over my head with all of that! I'll have to fool around a bit.

In the mean time, I've just posted this month's TFH update. Most of it you guys already know about, except:

TFH's default controller layout is changing!

Gamepad setup is very important to me, because I design and test TFH exclusively with a gamepad (and if you're playing TFH, I hope you have a gamepad, too - you can get Playstation 2 USB adapters for around $10). Now that I can assign anything to any button, I took this opportunity to step back and rethink TFH's button placement.

controls.png

In the new control layout, the "Jump" button is the center of attention, as it is the most important button in the game. To the left, the "Action" button, the second most important button in the game. Utilizing NPCs is pretty important, so it's on the right of the "Jump" button. Finally, the least important button in the game, the "Menu" button, has been moved to a position that will require you to move your finger off of the "Jump" button to press it. All told, it's a much more natural button layout. If you've played a lot of TFH, it'll take some getting used to, adjusting to the new button locations, but in the long run it'll be worth it.

And that's it for July's update. As I get through the "to-do" list, we're starting to come to things I would, believe it or not, rather not spoil for you guys. I may actually start running out of things to write updates about! We'll see what's up next month.

Link to comment
Share on other sites

Basically, either through a long series of events (one for each key/button) or through an input object, each key and gamepad button is associated with a specific value. The key/button-pressed events start a function (using Power Function 2.0 or some other function object) and pass that specific value as a number (that is, not a string) argument to the function.

As for the list object, it's not bad, but that's not what it's for. The list object is a user interface tool, but it comes with too much overhead just for storing data invisibly. The binary object is the most lightweight data storer because it involves exactly as many bytes of memory as you ask for and no more. You don't have any overlarge values, so all you should really need is 52 bytes, most of them null.

So when you press "A," this runs a function "foo" through the Power Function object (or whichever) with 17 as the argument. Another event states that on function "foo," turn control byte(foo-argument) on. Usually that'll be 0, sometimes it won't be.

Link to comment
Share on other sites

  • 2 months later...
  • 3 years later...

I've always loved Blaze's games. Mainly because they all felt like a fresh take on Sonic instead of just tirelessly trying to emulate the genesis games. That was the best part of fangaming to me, the part where you can add your own little ideas.

Link to comment
Share on other sites

Oh, man. I missed this project. When I saw it on the first page my first thought was "some new member must've bumped it", I wasn't even going to take a peek imagining all we'd have would be a person with 5~10 posts asking if the project is still alive. Well, I'm glad I decided to check it out. Really.

Not only this served the purpose of giving final closure to something that, altought every one knew it was dead, at the same time didn't knew if it were really dead (does this make any sense?).

But it also gave me a really good reading. I didn't knew much about the project, just that it were pretty and had some interesting ideas here and there, and man you've got some great ideas. Some were a bit off and a bit crappy, but most of the documentation you've liked in the end of the post was a very inspirational reading.

The attention to details you were planning like "what will the partner characters do when bored?" or the description of some stages was amazing and it really had some potential here and there. The storyline was pretty bad, but I can't really blame you. I can count in my fingers how many Sonic fangames doesn't have something that ruins their storyline. I bet mine even do and I don't know about it and will just figure it out in 4~5 years, just like I'm starting to realize that about some older projects as I craft my writing skills.

But still a mystery stays unsolved:

I remember an old cutscene near the Unleashed's release or something where Sonic was looking at the moon and some dialog appears with him saying "No, not again" or something like that and then he starts to shake and then it ended.

Most speculated it were Sonic turning into the Werehog since it was clear that you were inspired by Unleashed back in the day (Who wasn't?). But I also remember you saying it wasn't Werehog. So... What was it?

Link to comment
Share on other sites

But still a mystery stays unsolved:

I remember an old cutscene near the Unleashed's release or something where Sonic was looking at the moon and some dialog appears with him saying "No, not again" or something like that and then he starts to shake and then it ended.

Most speculated it were Sonic turning into the Werehog since it was clear that you were inspired by Unleashed back in the day (Who wasn't?). But I also remember you saying it wasn't Werehog. So... What was it?

That was actually an excerpt of something that happened at the end of the last demo - the updated release of Sonic Unleashed's Savannah Citadel that I quickly threw together for SAGE.

It was just a really dumb joke, in the end. Something I specifically slotted in to the trailer to try and make people curious so they'd play it.

Link to comment
Share on other sites

  • 11 months later...
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...