estoy diseñando los niveles de mi juego con un programa externo llamado Ogmo editor pero solo maneja el formato json
como podria importarlo a Game Maker o existe algun editor que exporte mapas en formato .gmx........
lo unico que encontre fue este script que lee y almacena la data en ds_grids pero mejor usare Tiled otro editor que exporta tus mapas directamente a room.gmx
if(objMain.extFiles==true){
dir = program_directory + "maps\";
background_replace(tileset0, program_directory + "/maps/tileset_test.png",0,0);
}
else{
dir = working_directory + "maps\";
}
var str = "";
var file = "";
var hey = "";
var lineCount = 0;
var tilemapWidthCountFlag = false;
global.mapWidth = 0;
if(ds_exists(objMain.levelData,ds_type_grid)){
ds_grid_destroy(objMain.levelData);
}
if(ds_exists(objMain.levelDataLayer2,ds_type_grid)){
ds_grid_destroy(objMain.levelDataLayer2);
}
file = file_text_open_read(dir+argument[0]);
var mapHeader = file_text_readln(file);
for(k=1; k<=string_length(mapHeader); k++)
{
if(string_char_at(string(mapHeader),k)=='"')
{
var j = "";
k++;
while(string_char_at(string(mapHeader),k)!='"'){
j += string_char_at(string(mapHeader),k);
k++;
}
if(global.mapWidth<=0){
global.mapWidth=real(j)/16;
}
else{
global.mapHeight=real(j)/16;
}
j = "";
}
}
global.tileWidth = 16;
global.tileHeight = 16;
objMain.levelData = ds_grid_create(global.mapWidth, global.mapHeight);
objMain.levelDataLayer2 = ds_grid_create(global.mapWidth, global.mapHeight);
global.tilesetIndex = 0;
for(var i=1; i<=global.mapHeight ;i++;)
{
for(var j=1; j<=global.mapWidth ;j++;)
{
var hey = file_text_readln(file);
var commaCount = 0;
var tileBuffer = "";
var tileID = "";
for(var k=1; k <= string_length(hey); k++)
{
if(global.tilesetIndex==0)
{
var q="";
if(string_char_at(string(hey),k)==' ')
{
k+=23;
while(string_char_at(string(hey),k)!='"' && k<57){
q += (string_char_at(string(hey),k));
k++;
}
global.tilesetIndex = background_get_name(asset_get_index(q));
k+=19;
}
if(k==string_length(hey)){
i++; j--;
}
}
tileBuffer = tileBuffer+string_char_at(string(hey),k);
if(string_char_at(string(hey),k)==',')
{
tileID = string_delete(tileBuffer,string_length(tileBuffer),1);
if(tileID="-1"){
tileID=0;
}
ds_grid_set(objMain.levelData, j-1, i-1, tileID);
tileBuffer = "";
j++;
}
else if(j>=global.mapWidth){
tileID="";
while(string_char_at(string(hey),k)!='<') && (k<string_length(hey)){
tileID += string_char_at(string(hey),k);
k++;
}
if(tileID="-1"){
tileID=0;
}
ds_grid_set(objMain.levelData, j-1, i-1, tileID);
break;
}
}
}
}
file_text_close(file);
global.tilesetWidth = 16;
global.tilesetHeight = 16;
global.currentMap = argument[0];
objMain.switchingMaps = false;