don't click here

Sonic MAX - Open-Source GMS Engine

Discussion in 'Fangaming Discussion' started by TruePowerofTeamwork, Apr 9, 2015.

  1. TruePowerofTeamwork


    Ontario, Canada
    Sonic Overture, Teal Game Engine, TealSonic
    Sonic MAX is an open-source Sonic engine made in GameMaker Studio. The main purpose with this engine is to be as accurate as possible to the classic Genesis games, while allowing for as much customization as possible.

    Sonic MAX is designed to be efficient and easy to use with many flags for changing certain aesthetics. Sonic MAX is open for anyone to contribute or help out. Sonic MAX is made to be very efficient, easy to use, and can be exported for many different platforms, with an initial development time of 500+ hours, over the course of 6 months.

    If all you know about Sonic MAX is the SAGE Act 2 release, you'll be surprised. A lot has changed since, and the engine has been completely overhauled.

    Here's a list of features:
    - Sonic, Tails, and Knuckles.
    - Elemental and Insta-shields
    - Over 30 gimmicks/objects
    - Sonic 2 Style Menus
    - Input Recording engine
    - Debug Mode engine
    - Homing Attack
    - Palette Cycling
    - Custom Room Transitions
    - Infinite Layer Terrain system
    - Cutscene Engine
    - Basic Endless Level Engine
    - 3D Animated Water
    - Parallax Engine
    - Key Sequence Engine
    - Floor Mode and 360 Angle Detection
    - Sonic 3 Style Save System
    - Super and Hyper Sonic

    -TruePowerofTeamwork - Creator/Coder
    -Mega Ikey Ilex - Accuracy
    -Mr. Potatobadger - Accuracy
    -Mr. Lange - Accuracy, Various Help
    -Nekkosu - Android/iOS Graphics
    -SuperBliz/AeroGP - Trail Code
    -Damizean - Bridges




    Arrow Keys - Move
    A - Jump, Shields.etc
    S - Air dash/Homing
    Q - Super Sonic
    Enter - Pause/Select

    Debug and Testing:
    Press CTRL to switch between Floor and 360 angle modes.
    Press E while Super to turn Hyper
    Press D on Title Screen to activate Debug mode
    Press Up Up Down Down Left Right Left Right on Title Screen to activate level select and sound test
    Press 0 to slow down room speed(For testing)
    Press 9 to revert speed.
    Press 8 to restart the game
    Press 3 to display HD rings(For testing GUI-level drawing)
    Press 2 to instantly go to credits.
    Press 1 to instantly go to cut-scene example
    -Only when debug mode is active:
    Press 5 to record input(Recording will stop when level finishes)
    Press 6 to play recorded input
    Press 7 to reset recording
    -Note: Z, X and C can be used as A, S, and D alternatively.

    New in-game Debug Mode:

    Press D to switch to object mode and back.

    Press S to change object.

    Press A to place object

    Press Q to change type.


    Version History:
    -23/11/14: MANY bug fixes, and polish edits. Fans in Test Zone act 2 are far more accurate.
    -23/11/14-2: Quicksand bugs fixed, minor changes.

    -24/11/14: Multiple bug fixes, including pause glitch.
    -24/11/14-2: Fixed a major bug, enabled transitions.

    -27/11/14: You can now select a level on the data select when the game is beat.
    Huge camera improvements, corrected Super Sonic's spindash, added more options, fixed multiple bugs, and various internal stuff.
    -27/11/14-2: Save fix.
    -29/11/14: Various fixes, and polish improvements.

    -30/11/14: Fixed error

    -05/12/14: Final demo before source release, just a few minor bugs fixed.

    -10/12/14: Source has been released!

    -11/12/14: Fixed a bug.

    -13/12/14: Fixed many bugs, improved EHZ masks.

    -14/12/14: Fixed multiple bugs, added improved debug mode. and ring attraction.

    -14/12/14: Fixed even more bugs.

    -15/12/14: Fixed physics issue.

    -15/12/14: Build 272 was completely broken, I think I fixed it, also added Sonic and Knuckles AI.

    -16/12/14: Fixed hovering.

    -25/12/14: Christmas update! : D Just demo though, source coming soon.

    -05/04/15 Build 286: Various bug fixes.

    -19/04/15 Build 287: Made various changes to the code structure and fixed the missing objects from 286.

    -19/04/15 Build 288: Fixed major error involving ceiling collision, added presets for various objects.


    Update: Download links have been moved to Google Drive.
    DEMO(.EXE) Build 288

  2. Covarr


    Sentient Cash Register Member
    Trapped in my own thoughts.
    Two stageplays, a screenplay, and an album
    When I complete a stage in fullscreen mode, the next stage runs at the width of my monitor instead of 4:3. Otherwise, pretty good stuff here.
  3. It supports 32-bit operating systems
  4. thevaleev


    Sonic Game Land
    As soon as I'm able to work with Game Maker Studio(unfortunately, my computer is "too old" for it), I'll try to work with Sonic MAX for sure. This project looks promising and I hope it will grow up to be something like Sonic Worlds for Game Maker. :)
  5. Caverns 4

    Caverns 4

    Sonic: Retold
    Legit, it's better than Sonic Worlds. We've done side-by-side experiments with MAX and Worlds to the genesis games, and MAX holds up a lot better... Though it has a few less gimmicks.

    With that said, that's because MMF2 is a pretty inefficient program, and it's not Worlds or the Worlds developers fault at all that the engine (at least version 1.4.3) is inaccurate.
  6. Aerosol


    Not here. Moderator
    Not where I want to be.
    Sonic (?): Coming summer of 2055...?
    I'm admittedly unfamiliar with GameMaker, but looking through the scripts had me frequently asking "why". There are 3000 scripts, with random ones being referenced in seemingly random places. Part of this is GameMaker's's kind of an awful IDE if you ask me. I'm guessing one isn't really expected to make much use of this unless they're either willing to just use the engine as is and start building levels, or if they're already comfortable with GameMaker? This isn't a problem specific to Sonic MAX btw. Every GameMaker engine I've come across just looks like a clusterfuck of scripts that's difficult to wrap your head around at first. I have seen a few with better documentation though.

    I mean, part of the reason why so many people continue to use Worlds is because, as stupid as MMF is, Sonic Worlds itself isn't so blinding. It doesn't take as many mental backflips to figure out how the components interact with each other.
  7. I'm the kind of person who learns best when I get an explanation along the lines of "this does this in this particular way because this". You know those tutorial videos on Game Maker that walks you through how to make a simple game engine? It would be amazingly awesome to see a set of videos that takes a finished version of an engine like this one, and explains how things work and why. For instance, if you were to take a gimmick and make a video showing how to add it to the engine and code it in, or if you were to take the Sonic object and do a video explaining how it works and how the code is organized the way it is, it would be incredibly helpful for somebody wanting to make something with the engine beyond the built-in objects.
  8. I got a crash in emerald hill zone while I was rolling and tails died off screen. Dunno how reproduceable it is, but it's there.

    This works incredibly well, and I'd love to dick around with the source code when I get a chance. This is the kind of thing that should be used by people to make new, non-Sonic games. Stuff like Freedom Planet.
  9. TruePowerofTeamwork


    Ontario, Canada
    Sonic Overture, Teal Game Engine, TealSonic
    Yeah I've tried really hard to make it easy to use and organized, but it's really hard to do in GameMaker. The engine gets a lot easier to use if you get used to it, but it takes a lot of time to finally fully understand it.
    Also the engine is designed for people that are more advanced with GM, as I used a few slightly advanced techniques and features, but I agree it should be much easier to understand.
    I'll look into it and see what I can do about it. Thanks! =D

    Edit: Could you give a few examples on where it just randomly references scripts? I try to use scripts for all code that is used more than once(With a few exceptions such as Actions), currently I'm removing the constants for actions, and just using the script resource name instead, which I think makes a lot more sense. Instead of having a massive switch for each action, and having to create a constant every time, you just set it to the name of the script that is associated with the action, and it can do all of that automatically.
    I want to make certain tasks like creating characters, levels, or actions simple, fast, and easy. I've tried to set it up in a way where you can create levels very fast, without having to worry about the room creation code or setting up views and room speeds and such.

    Edit 2: Oops, apparently some of the objects in EHZ are missing! That will be fixed very soon. I was comparing MAX to Sonic 2 directly, and I had some of the objects removed for easier testing, I guess I forgot to add them back before release..
    Edit 2.5: Or maybe not... apparently the link is 285 when it should be 286. Either way I'm uploading 287 now.
  10. eighttailedfox


    Canadia Land
    Project Maelin
    Is this engine still being worked on?

    If so, I've been digging around the code, and have added many of the necessary codes and sprites for a 4th character, but I can't seem to find the part of the script that actually dictates which character appears when I run the test room.
  11. Chaos Rush

    Chaos Rush

    Have you considered releasing a movement-only/physics-only version of this?
  12. Ok, I admit it. Without the Pro Upgrade, adding stuff to the engine is nigh-impossible, considering the memory limit placed on every basic project.

    But, how would I know? I managed to get the Professional Upgrade, right before I went and imported the latest gmz. For something that was $100 via Steam, it better be worth it.

    Quick question about the source: Can you add on to your own project? As in do I have permission to sprite and develop my own avatars, badniks, zones, and bosses? I want to create my own adventure with my Mobian, Weld the Dragon.

    Yes, I've wanted to ask TPoT the same question. So keep an eye out for a post from him.

    Another thing before I forget. TPoT, I worked on a Sonic 1 ROM Edit via a Split Disassembly. Inside that project, the code was done in the Motorola 68000 Assembly Language. Although, now we use the MacroAS architecture to compile the Genesis ROMs, when I worked on my Sonic 1 N1X'd Edition, the main source code was the s1.asm text file. Thanks to peeps like drx, MarkeyJester, and Tweaker, the main disassembly text had comments to the side. The comments helped many newcomers to the Sonic Hacking Community by explaining what each line of code does in the grand design of the whole ROM.

    The point is, did you by any chance leave comments in the code? If not, you should do that right now, and make sure we know what each line does, or is supposed to do. I need to find out how to add additional player characters to the roster.
  13. Lilly


    United States
    Shang Mu Architect
    That's a whopping big list of features you guys have over there! If GM:S's compile time wasn't a pain in the neck, I'd give the code a good look. I wanted to make a full-featured Sonic example myself once, so it's good to see that finally happen. I got preoccupied with a Shantae engine anyway.

    The extra scripts could be playing a role in streamlining the aforementioned customization in the features list, and wouldn't require you to mess with them much. I haven't looked at the code yet to know, so it's a wild guess as to why there's an illogical amount of them.

    Anyway, I've noticed the same trend with a lot of Game Maker engines. Barely ANY comments in the code to explain what each block of code does, and tons of weird scripts that act as dummies to existing functions in GM for no real reason.

    I had an easier time picking apart and studying Damizean's oldest Sonic 360 example than I did lots of text engines. (Most of them were so unergonomic and convoluted, I just wrote my own Zelda-like text box instead. It works great too!) Which is stupid considering Damizean used trigonometry and a little calculus in his GM stuff. I also had to write my own heart meter because of how badly explained and put together all the examples online are.

    Honestly, GM gives you control of (almost) everything, so you don't need a hundred scripts to get something done. That's why I commented as much as possible in my Shantae engine, wrote a document that listed how the engine's structured, and mostly used scripts to cut down on multiple usages of the same code blocks. (All enemies can call one script for their ground physics, instead of each one carrying a duplicate in the Step event.) Damizean's original Sonic example did the same thing, so the way I learned to apply scripts was through his way of coding things.

    (Damizean/RogueYoshi's last engine was a spaghetti mess of code, though. I found it faster to code features I wanted in myself from his basic, first example, than trying to understand what made that monster tick.)

    It's really important to not only get a helpful example out there in the wild, it needs comprehensive comments and a readme or two. If the average intermediate can't learn how to do things with it, the only person who'd ever use it is the one who made it.
  14. RetroKoH


    Project Sonic 8x16
    An avid Game Maker user, myself... I'm looking forward to this. A Shame I never got around to it before.
  15. qwertysonic


    creating the biggest sonic collection
    I downloaded this a couple weeks ago and I really think it's good. I would also like to echo the earlier requests for more documentation. I've been learning Game maker for a couple months now, but these scripts are just not that intuitive. I love the progress that has been made though. It feels very much like a Genesis Sonic game.
  16. Okamikurainya


    Somewhere in Africa
    Sonic: Time Attacked - MAX
    I'm really surprised there isn't more content in this topic. :ohdear:

    Here's something I made in Sonic MAX:

    A huge thanks to everyone behind the engine for giving me hours of tinkering and fun! :D
  17. TruePowerofTeamwork


    Ontario, Canada
    Sonic Overture, Teal Game Engine, TealSonic
    I totally forgot about this thread, but I guess it's about time to announce this.
    I really appreciate all the support, it's been really nice to see people having fun with my engine, so I'm sorry to say this.
    Some of you may have heard about TealSonic and the Teal game engine which was discussed in the Overture thread.
    Well, Sonic MAX was supposed to have a huge update with lots of features, fixes, and was made to be generally easier to use.
    It was nearly finished, but it ended up unreleased, as I see no reason to continue MAX.
    GameMaker has been an absolute pain to work with, and has really limited what I can do.
    I had to use lots of annoying workarounds to get somethings from MAX working in GMS.
    That's exactly why I made Teal, all of the other 2D-based game engines just won't suffice, I can't do all the stuff I want a Sonic engine to do, and anything I can do becomes an actual pain when it doesn't need to be.
    So I decided to discontinue MAX, and not finish the update.
    I'm not particularly proud of MAX. It's way too hard to use, has little documentation, and it's just kind of a complicated mess. Updating or changing anything regarding physics felt like playing a Jenga game. lol
    When Teal and TealSonic are released, there really will be no reason to use MAX.
    I am extremely proud of it and really excited to show it. We will be showing updates and info on both Teal and TealSonic after SAGE, I can't wait to share it!
  18. Techokami


    For use only on NTSC Genesis systems Researcher
    Sonic Worlds Next
    Why not do a "fuck it, ship it" update with what you have finished to tide people over with?