8-Bit Warrior Games + Design + Tutorials + Random

28Oct/140

[TweenGMS Dev] Sequences and Drag ‘n Drop

After a bunch of distracted tinkering, it looks like Sequences as well as Drag and Drop functionality will make their way into the next TweenGMS (0.9.6) update.

Sequences present an alternative to using tween delays. They allow you to set an order of tweens to be executed one after the other. Unlike the use of delays, this allows you to make individual timing changes without having to change values for other various scheduled tweens. It will also allow you to pause, resume, cancel or generally manipulate whole sequences.

Dragging and a dropping!

Dragging and a dropping!

As for the addition of Drag and Drop functionality, it is intended to make things more accessible for new users and amuse those with an unhealthy addiction to dragging things around. Essential DnD functions will be provided, such as easing an instance's position, angle, direction, speed, alpha, image blend, image index as well as path tweening. A general function will also be provided for easing custom property values.

If all goes well, these features and a few other tweaks should be live some time in November. If you are a user of TweenGMS, be sure to let me know if there are any other features you would like to see added!

-Stephen

21Jul/140

[ScheduleGMS] Script and Events Scheduler for GameMaker: Studio

GameMaker Marketplace Listing

[Description]

Schedule scripts and any type of event, easily, with a single line of code!

Set schedule timers using steps or seconds. Pass arguments to scheduled scripts without hassle. Pause, resume, cancel, or immediately finish any schedule. Want a schedule to repeat a set number of times? Easy! Want it to repeat endlessly? You can do that, too!

Give ScheduleGMS a go and make things easier in no time!

[Features]

  • Step and delta timing
  • Supports scripts and events
  • Ability to supply arguments to scripts
  • Cancel, pause, resume, or finish schedules
  • Schedule control groups
  • Ability to repeat schedules a set number of times (or endlessly)
  • System-wide and schedule-specific time scale manipulation
  • Persistent room and persistent instance support
  • Useful support functions
  • Documentation and example project

[Code Example]

// Show message box "Hello" after 3 seconds 
schedule1 = ScheduleScript(id, true, 3, ShowMessage, "Hello");

// Call user event 1 after 30 steps
schedule2 = ScheduleEventUser(obj_Player, false, 30, 1);

// Execute mouse event after 5 seconds
schedule3 = ScheduleEvent(id, true, 5, ev_mouse, ev_left_release);

// Set schedules to repeat set number of times
ScheduleSetRepeat(schedule1, 2); // play twice
ScheduleSetRepeat(schedule2, 0); // play infinitely

// Manipulate schedule state
SchedulePause(schedule1);
ScheduleResume(schedule1);

 // Have schedule immediately finish
 ScheduleFinish(schedule2);
11Mar/140

Dungeon Drop

Available for Android on Google Play

[Description]
You control Slimey, a puddle of sentient dungeon ooze drawn to shiny gems and crazy speeds. Put your skills to the test. Dodge cold stone floors as you fall endlessly faster in your adventure. How long can you survive the drop into the deep dark dungeon?

[Features]
-Addictive skill-based gameplay
-Carefully crafted tilt controls
-Compulsive gem collecting
-Colourful pixel art visuals
-Retro styled audio
-Online leaderboards
-Achievements
-Stuff!

 

19Sep/130

[GameMaker Studio] Blurry Surfaces… Why??

If you use interpolation for your game's graphic settings, drawing surfaces can appear blurrier than expected. This is due to graphics being interpolated (smoothed out) when they are drawn to a surface, then being interpolated a second time when the surface is drawn to the main view. There is a simple way to resolve this.

When drawing to a surface, interpolation can be temporarily turned off with texture_set_interpolation() and turned back on when you are finished drawing to the surface. The result is a sharper image when drawing the surface to the main view.

/*** DRAW EVENT ***/
// Set the surface for drawing
surface_set_target(mySurface);

// Turn off interpolation
texture_set_interpolation(false);

// Draw stuff to the surface
draw_sprite(spr_StrongBad, 0, 0);
draw_sprite(spr_HomeStar, 32, 100);

// Turn on interpolation
texture_set_interpolation(true);

// Route drawing back to main view
surface_reset_target();

// Draw the surface to the main view
draw_surface(0, 0);

There!
You should now have a much crisper image when drawing with surfaces!

null

4Sep/130

[DispatchGMS] Callback Dispatcher for GameMaker: Studio

DispatchGMS_logo

Available on the GameMaker Marketplace

DispatchGMS is a callback dispatcher which allows for greater flexibility when managing custom events or extending existing ones.

Multiple callbacks can be added to a single dispatcher and later executed from a single script call. Each script callback can be supplied up to 13 arguments. Additionally, when invoked, a dispatcher can, optionally, override previously set callback script arguments.

[Highlights]

  • Add or insert multiple callbacks into a single dispatcher
  • Various ways to remove callbacks as needed (callback id, script, target, all)
  • Ability to override script callback arguments when invoking dispatcher
  • Enable/Disable dispatchers or specific callbacks
  • "Dynamic Event" scripts allow you to easily adapt dispatchers to existing object events
  • Check if dispatchers contain a specific script or target instance

[Example Code]

------------------
Create Event
------------------
// Create new dispatcher and add two callbacks
onMousePress = DispatcherCreate();

// Add callback to dispatcher
DispatcherAdd(onMousePress, id, ShowMessage, "Mouse Button was pressed!");

// Add second callback to dispatcher and cache returned callback handle
cbAddNums = DispatcherAdd(onMousePress, id, AddNumbers, 2, 5);

// Remove second callback from dispatcher
DispatcherRemove(onMousePress, cbAddNums);

------------------------------
Mouse Button Pressed Event
------------------------------
// Execute dispatcher
DispatcherInvoke(onMousePress);

------------------
Destroy Event
------------------
// Destroy and nullify dispatcher
onMousePress = DispatcherDestroy(onMousePress);

-------------------
Room End Event
-------------------
// Destroy and nullify dispatcher
onMousePress = DispatcherDestroy(onMousePress);