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

VectorSatyr

Members
  • Posts

    2,012
  • Joined

  • Last visited

  • Days Won

    8

Posts posted by VectorSatyr

  1. New version now available! Here's a changelog: (it is also included with the editable)

    GENERAL NOTES

     
    New control scheme for global game functionality:
    Alt + F4: force-quit.
    F3: Double window size.
    F4: Fullscreen.
    F5: Scanlines.
    "C" key: Free-roaming state. (Debug mode only)
     
    Made various adjustments to code complexity too numerous to list.
    Added inline documentation to almost all scripts.
    objPath and objExampleQuicksand are now depreciated. (See "Rooms\Zones\Examples" for new examples)
    Added proper Sonic 2 Title Card and Sonic 1 drown popup. (See "Objects\Scene\Overlays")
    "Perfect Bonus" now added to objScoreCard.
    Music queuing and playback is now handled by objMusic. (See "Objects\Game")
    Direct playback overriding the priority queue is possible. (music_play)
    Music overlays (eg. 1up music) now have their own playback function. (music_play_overlay)
    Global sound effect volume can be adjusted. (audio_set_volume_sound)
    Basic loading and saving functionality is available. (See "Scripts/Game/File")
    On failure, the input_check* functions now return -1, not 0.
    Can now "pause" the game from anywhere. (game_set_active)
    Can travel directly to a specific scene as long as you know its scene index number. (scene_goto)
    in_view now accepts a second argument for adjusting the offset of the view boundary.
    The transition_* scripts were merged into transition_to. (See "Scripts/Scene/Overlays/Transitions")
    Player bounding box size is now determined at character selection. (player_change_character)
    State and state change scripts were merged together; state changes are now accessed by calling the corresponding state script using a negative number as an argument (usually -1; some special cases use lower numbers, such as jumping)
    Listener position now updated in objZone instead of objPlayer.
    DASH-style angle detection implemented for those wanting to construct custom masks. (See "Objects\Scene\Zone Objects\Parents\Collider")
    objBridge code reworked to be one single platform instead of several smaller ones.
    objSignPost must be deliberately touched now; simply passing its x-position is no longer enough.
    objWater is now a customizable object that can be stretched to "fill" specific areas. (See "Rooms\Zones\Examples" for example usage)
    Water-running can be disabled per-instance of objWater.
    objConveyorBelt created in response to confusion around objExampleMovingPlatformH. The later no longer works like a conveyor belt.
    objExampleCorkscrew now available. (See "Objects\Scene\Zone Objects\Specific\Examples")
     
     
    RESOURCE CHANGES
     
    SPRITES
    New: sprTitleCardBorder (in "Scene\Overlays\Title Card")
    New: sprTitleCardGame (in "Scene\Overlays\Title Card")
    New: sprDrownPopup (in "Scene\Overlays")
    New: sprWaterMask (in "Scene\Zone Objects\General\Water")
    New: sprKnucklesFlipReverse (in "Scene\Zone Objects\Player\Characters\Knuckles")
    New: sprSonicFlipReverse (in "Scene\Zone Objects\Player\Characters\Sonic")
    New: sprTailsFlipReverse (in "Scene\Zone Objects\Player\Characters\Tails")
    New: sprRhinobotDust (in "Scene\Zone Objects\Specific\Enemies\Rhinobot")
    New: sprExampleConveyorBelt (in "Scene\Zone Objects\Specific\Examples")
    New: sprExampleCorkscrew (in "Scene\Zone Objects\Specific\Examples")
     
    Removed: sprExampleBreakableDebris
    Removed: sprExampleQuicksand
    Removed: sprPath
     
    Edited: sprExampleEnemy renamed sprRhinobot
     
     
    SOUNDS
    Edited: bgmClear, bgmDrowning, bgmGameOver changed into .wav files.
    Edited: bgmTest renamed bgmZoneEH
     
     
    BACKGROUNDS
    New: backScanlines (in "Game")
     
     
    SCRIPTS
    New: audio_set_volume_sound (in "Game\Audio")
    New: music_play (in "Game\Audio")
    New: music_play_overlay (in "Game\Audio")
    New: load_controls (in "Game\File")
    New: load_settings (in "Game\File")
    New: save_controls (in "Game\File")
    New: save_settings (in "Game\File")
    New: scene_goto (in "Game\Program")
    New: game_set_active (in "Game\Program")
    New: collision_box_vertical (in "Scene\Genera\Collision")
    New: transition_to (in "Scene\Overlays\Transitions")
    New: player_reaction_corkscrew (in "Scene\Player\Physics\Reactions\Specific")
    New: player_reaction_sign_post (in "Scene\Player\Physics\Reactions")
    New: player_reaction_water (in "Scene\Player\Physics\Reactions")
    New: player_get_surface_angle (in "Scene\Player\Physics\Rotation")
    New: player_get_surface_angle_air (in "Scene\Player\Physics\Rotation")
    New: player_set_wall (in "Scene\Player\Physics\Update")
    New: player_is_slipping (in "Scene\Player\State\Functions")
    New: player_is_debugging (in "Scene\Player\State\Specific")
     
    Removed: transition_fade
    Removed: transition_titlecard
    Removed: player_landing
    Removed: player_is_slide_standing
     
    Edited: audio_clear_priority renamed music_delete
    Edited: audio_play_priority renamed music_play_priority
    Edited: audio_set_priority renamed music_add
    Edited: level_goto_next renamed scene_goto_next
    Edited: angle_distance renamed distance_to_angle
    Edited: player_collision_ceiling renamed player_get_collision_ceiling
    Edited: player_collision_floor renamed player_get_collision_floor
    Edited: player_collision_object renamed player_get_collision_soft
    Edited: player_collision_wall renamed player_get_collision_wall
    Edited: player_movement_air renamed player_move_air
    Edited: player_movement_ground renamed player_move_floor
    Edited: player_update_ramp renamed player_can_launch
    Edited: player_get_terrain_angle renamed player_get_angle
    Edited: player_wall_eject renamed player_get_wall_offset
    Edited: player_get_reaction renamed player_react
    Edited: player_update_cliff renamed player_set_cliff_facing
    Edited: player_get_terrain renamed player_set_floor
    Edited: player_get_terrain_list renamed player_set_local_list
    Edited: player_floor_transfer renamed player_set_mask_rotation
    Edited: player_slope_factor renamed player_set_slope_friction
    Edited: all player_state_* and player_is_* scripts were merged together; see general notes
    Edited: player_state_standby renamed player_is_waiting
     
     
    TIME LINES
    New: animKnucklesCorkscrew (in "Zone Objects\Player\Characters\Knuckles")
    New: animSonicCorkscrew (in "Zone Objects\Player\Characters\Sonic")
    New: animTailsCorkscrew (in "Zone Objects\Player\Characters\Tails")
    New: animShieldLightning (in "Zone Objects\Player\Effects")
     
    Removed: animShieldLightningFront
    Removed: animShieldLightningBack
     
     
    OBJECTS
    New: objMusic (in "Game")
    New: objSceneObject (in "Scene")
    New: objDrownPopup (in "Scene\Overlays")
    New: objCurveConcaveAuto (in "Scene\Zone Objects\General\Terrain Masks\Experimental")
    New: objExampleConveyorBelt (in "Scene\Zone Objects\Specific\Examples\Moving Platforms")
     
    Removed: objInputDummy
    Removed: objCapsuleSwitch
    Removed: objPath
    Removed: objExampleQuicksand
     
    Edited: objProgram renamed to objGame
    Edited: objTitlecard renamed objTitleCard
    Edited: objScorecard renamed objScoreCard
    Edited: objLevel renamed objZone
    Edited: objField renamed objTrigger
    Edited: objNonSolid renamed objColliderSoft
    Edited: objSolid renamed objColliderHard
    Edited: objSceneObject renamed objZoneObject
    Edited: objExampleEnemy renamed objRhinobot
    Edited: objExampleBackground1 renamed objExampleBack1
    Edited: objExampleBackground2 renamed objExampleBack2
     
     
    ROOMS
    New: zoneTest3
     
    Edited: startup renamed roomStart
    Edited: test_level renamed zoneTest
    Edited: test_level_2 renamed zoneTest2

    • Like 2
  2. If a Sonic fangame can't strike a balance between spectacle and difficulty, it should at least hit the ground running in either direction. It can be said that Mega Drive leans on the spectacle side hard, but that's not to say it plays badly. Sonic controls well enough to allow me to fully appreciate the cool things this game has to offer, from gimmicks to hidden treasure to surprise boss fights. It will catch people off guard that you cannot use the spin-dash at the beginning, but it's easy enough to adapt until it becomes available. Overall, I was pleasantly surprised and entertained. Keep it coming, boss!

  3. level_goto_next() can send the player to the next level on demand, but does anyone know how to do the same for a specific level? Like, for a level select or to reset to the beginning without resetting stored data...

     

    At the time, I didn't think about needing to skip ahead to specific levels. Use this script for now:

     

    /// level_goto(room)
     
    // get next room
    objProgram.level = argument0;
     
    // start level
    transition_titlecard(objProgram.level, 24);
    • Like 1
  4. Bad news: the build that is up for public download uses a rendering system that is incompatible with the updates to the graphics pipeline in Game Maker Studio 1.3 and beyond.

     

    Good news: You can open up your build notes and click on the name of a previous version to download a copy of it and roll back; or you can wait until I am ready to release version 1.1 of this build. (Suggestion: don't wait. I'm not even sure when I'm going to release the next build yet)

     

    EDIT:

     

    Currently, there is no implementation for calculating the angle of non-standard terrain automatically. You will either have to construct the tube out of standard masks, or wait until I've implemented a method in a new build.

     

    This has already been implemented and is ready for use in version 1.1. More details on release.

  5. Most platforms that people use for this kind of stuff aren't actually capable of that though Sereph. You can't move the various static backdrops and tile maps that you have in MMF2 and GM. Even if you could, things get wonky as you start to extend past the normal frame width in MMF. Moving one object and tweaking some values is generally a lot easier than dealing with everything else.

     

    You can actually move every object in the room in GM (and even every tile), but I wouldn't call that a very good solution, honestly. Just do what Potatobadger originally recommended, and keep the camera locked in one particular zone.

     

    EDIT: Good on you for finding a solution, Blitz.

    • Like 1
  6. Basic pseudo code:

    var collision;
    var last_collision;
    
    on begin step event:
    last_collision = collision;
    collision = false;
    
    on collision event:
    collision = true;
    if collision and not last_collision
    just collided; perform stuff
    
    on end step event:
    if not collision and last_collision
    stopped colliding; perform stuff
    
  7. Currently, there is no implementation for calculating the angle of non-standard terrain automatically. You will either have to construct the tube out of standard masks, or wait until I've implemented a method in a new build.

    (If you choose the former, you have options. You can create a child of NonSolid with a reaction_script that puts the player into player_state_rolling by force, and place it at either end of the tube. You will then need to prevent the player from jumping out of the state somehow or uncurling from moving too slowly. Alternatively, you can make your tube object a child of objPath with a custom reaction_script that sets the player to a path matching your zoom tube; you'd also set the player to a new state based on player_state_path, where you'd handle acceleration and going backwards, and in the End of Path event, you'd put the player into player_state_rolling at a speed relative to the path_xspeed and path_yspeed.)

  8. I really liked the engine Aero, but right now I don't think I have the money to purchase GM Studio at the moment, and plus I'm really far into using the DASH engine. Hopefully if I ever start a new project, I'll most likely upgrade to GM Studio and experiment with this engine.

    Apparently I can't access the source file with the free version, so Aero, is this engine any similar to DASH or would you say it's easier to use?

    I wouldn't want you to switch over right away - Edge of Darkness needs to be finished sometime, right?

    It's more complex than DASH, but has some of the same features.

  9. Getting back on topic (and hopefully staying that way), this is really a fantastic engine AeroGP! I'm helping with Time Twisted alongside Overbound, purely in the sprite department right now but will soon be hoping to assist him in some coding and level design (nothing major). I must say Overbound couldn't have picked a better engine. This one is smooth and reliable and I think my favourite part is how it has all the bells and whistles you need for a classic Sonic fangame and no more. It's very concise and without clutter, other engines with 100's of pointless features can seem daunting at first but the elegance of your engine really lends itself to usability. I've tinkered around with it and not made anything of any use but after some getting used to it seemed a lot easier to use than other engines I have seen.

    That's what I was hoping for. Glad to hear it.

    Is there anything you think could still be added to flesh it out more for new users?

  10. This download requires an up-to-date copy of Game Maker : Studio on the stable channel. (1.3.1347) You can also download the previous version here.

    Download this if you just want to play with the results.

    If there are features you would like to see added out of the box, feel free to recommend them although there is no guarantee I will actually add them. (It largely depends on how much utility it has)

    SonicStudioScreen1.png SonicStudioScreen2.png

    • Like 4
  11. Okay, so while my playthrough uploads over the next couple of days, let's talk.

    (OMG, AEROGP ACTUALLY HAS SOMETHING TO SAY! HELL'S FROZEN OVER.)

    It might be because it was the only stage I was completely uninterested in initially... I mean, come on. Mountains made of sugar? But once I actually started to play it... my expectations were exceeded almost immediately; granted, they were quite low to begin with considering this is still the same old amateurish sonic fangame with goofy ideas underneath the surface, but I never thought I'd actually grow fond of mountains made of sugar.

    And it's an underwater level, no less! It won't replace Hydrocity, but it makes a decent effort. It's paced stunningly, the atmosphere really pulls you in, and the sugar gimmick doesn't come off as forced. Almost everything about it drives closely towards the look and feel of a Sonic Team-made Sonic the Hedgehog level.

    Almost... really, just the first two acts. The third highlights a design focus I'm uncomfortable with.

    So every once in a while, the act throws you into "temporary water" which you're meant to use to your advantage. But since you uncurl when the moment hits, it ends up being more harmful than helpful. So you learn quickly to time your jumps so you aren't inhibited by this gimmick.

    You play through more and you reach an epiphany: this seems to happen a lot in this game.

    The storm gimmick in HHZ3.

    The enemies in SSZ.

    The water valve in SSZ3.

    The trollies in FFZ3.

    The killer robot in TTZ1 and 3.

    The bosses.

    So many examples to list...

    If they weren't so encompassing where they appear, I wouldn't have minded it.

    And while the punishment is taking damage, it isn't of much consequence to a 25 year old who's been playing Sonic games since 1993. It only manages to annoy, not provoke thought. As soon as I received Super Sonic, most of these elements were unapologetically bypassed... and I started to notice how much of each level was padded with these instances, forcibly slowing the player down by challenging their patience rather than their skills.

    I can understand if Lake wasn't really concerned about this or even wanted it - the classics were notoriously easy, after all, and they do have their share of "slow the fuck down and watch" moments. I just feel it ultimately weighs the game down to emphasize this kind of platforming so heavily.

  12. I want to know how make parallax to draw background from one custom x-position to another.

    Meant the elements of the background itself. What is it supposed to look like?

    Oh, no one is going to point out that he is drawing shit every frame that he should really only be drawing if he is within the immediate proximity?

    Based on the code he's posted, the overhead to check when to draw each element in addition to where would probably cost more than just drawing everything every frame.

    He's better off finding a way to reduce the number of elements drawn altogether. (Hence my question)

  13. Are the two views split screen, or is one the camera and another a dummy so player 2 doesn't fall through the floor?

    If it's the later, you can simply check at the top if view_current==0, and then it'll only draw these things in the first view.

    If it's the former, you'll want to take the advice of the posters above me. See if you can't unravel some of those loops, or simplify the background by using more compound images.

    I'd offer more advice, but I'd have to know more about what it is you're actually trying to render before I can do so.

×
×
  • Create New...