• Register
Post news RSS Optimizing for Early Access: Endless tiles?

We're making some neat optimizations to make the game as free and fast as possible. A great concern some months ago was how to get DASH super fast all over despite loading and saving long replays and super large levels. We bumped it up during the alpha dev, but here are some more great news!

Posted by on

Welcome to DASH: Danger Action Speed Heroes! A new creative 2D action/precision platformer creation tool for pc (Windows and Linux) Early Access Q1 2019. We began developing the alpha late 2017 and since then everything has grown into place: a growing game, growing community and lots of lots of great potential! Strap on and get ready to enter the Galaxy of Speed! Enter the Danger Action Speed Heroes!!

005 Explosions smaller

Discord Panel

Join our Discord to get into the vibe, try the alpha build and meet the DASHers!

Last week I talked a bit about optimizing as well but we have finally gotten it all the way and here is a bit of what we are talking about:

At the end of last year we ended up with a solid alpha experience. But we all know that some parts of the game were totally non-optimized and sometimes a gamebreaker to some testers:

  • It took too many seconds to load a relatively simple level
  • It took a lot of time to Save your level
  • It took a LONG time to save your world record replay!

This has been fixed. Philip Schubell who is the web dev and back end on the DASH Team, has optimized all the compression code even more, to fit a fast and creative game where slow-downs and limits are not very nice! After upgrading to Game Maker 2 we also had more space with the built-in zlib compression tools. This when added to Philips code makes a totally new game when saving and loading. Here is an example of Philips approach to de-serializing in GML:

//Find 'replay' value in ds_map
var _actions = ds_map_find_value(mapTime,"replay");
//Decompress it

var cbuff = buffer_create(1,buffer_grow,1);
var buff = buffer_decompress(cbuff);
global.lengthOfWRghostArray = buffer_get_size(buff); //string_length(decomp_WR_actions_string);

var currentChar ="";
var currentVal = "";
var step = 0;
var index = 0;
global.WR_actions = "not set";

for(var i= 0; i <global.lengthOfWRghostArray -4;i++){
	currentChar = buffer_read(buff,buffer_u8)//string(buffer_read(charBuff,buffer_text));
	if(currentChar == 44){ // 44 is "," in the ascii table
		global.WR_actions[step,index] = currentVal;
		currentVal = "";
	if(currentChar == 125){ // 125 is "}" in the ascii table
		global.WR_actions[step,index] = currentVal;
		index = 0;
		currentVal = "";
		buffer_seek(buff,buffer_seek_relative,1); // advance buffer read by one
	if ( (currentChar > 44) && (currentChar < 59) ){ // ascii 45 = "-", 46 = "." amd 48-58 = 0-9.
		currentVal = currentVal + chr(currentChar);

(A quick way to de-serialize a 2D array consisting of numbers in GML)

We are now looking at game running, saving and compressing levels in no time! Even levels with 1000 tiles are smooth. Even replay ghosts over 5 minutes long are saved and loaded in under 1 second. If you haven't played the game it might be hard to grasp so here's an example of the alpha vs the Early Access build:

11 small

(Alpha: slow compression time, example: when saving replay as you win a world record)

long recordsmall

(Early Access: almost 4 mins = under 1 sec compression time, same example)

For the Early Access release we will be aiming for level sizes up to twice as big and no limits on tiles. Whether this will work or not we will see. But that's the goal.

load super fast

(Super fast load time even on large levels with long replay)

super fast time

(Super fast save time even with hundreds of tiles)

upload fast

(Super fast upload time even on large levels with long replays!)

We are slowly moving office and workspace to a new and incredible place downtown Copenhagen! This week will be all about getting everything into place.


- Jake and Philip


Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.

Related Games
Related Engines
GameMaker Studio
GameMaker Studio Commercial
Related Groups
Baby Duka
Baby Duka Developer & Publisher with 4 members
Indie Devs
Indie Devs Hobbies & Interests with 1,670 members