Thanks for the feedback, but unfortunately I do not take on commissions.
Slyddar
Creator of
Recent community posts
Hey joe,
I notice what you are referring to, and have now fixed it to ensure it works as you explained. I've uploaded a new version with the changes, v1.0.36. If you want to copy/paste the new code to your version, just look in the collision function and it's the code under the "corner correction" section, lines 129 - 160.
Hopefully it all works as expected, just let me know if there are any issues.
Cheers,
Peter
Hey BenWath!
Actually I've just uploaded a new version which supports mask collisions which are 2 times the tile size, so by default this would be 64 pixels high/wide. My testing shows that all moving platforms now work fine with this size mask, but let me know if you have any problems.
It's available in version 1.0.33.
Cheers,
Peter
I've had a look and that section was uncommented for so long, after I did some updates it made that line not applicable anymore. So I've made some changes and have updated the project with the new version. If you want to know what was changed, there's a dev log outlining the changes.
Let me know if you have any issues.
Cheers,
You should be able to just change the TS macro to 16 to use 16x16 tiles but you have to be aware of the limitations. All objects colliding with the tileset will need to not have collision masks bigger than 16x16. If you do have bigger masks, say a 24 x 24 for example, you can imagine if you have one tile and the instance trying to fall onto that tile, because we check for a collision on the 2 corners of the mask, it will simply slide over the top of the tile and not collide. If you want bigger object masks you will need to add an additional collision check for the center of the mask horizontally and vertically using the same format as the ones I've used.
Hey Ben!
Great job, it's a fun little game to play. One bug I found was the golden heart upgrade didn't work for me. Picking up golden hearts gave no health increases anymore. The mixing of a high resolution font, with low resolution pixel art was a little jarring at first as well. Maybe worth trying a low res font too to see if it fits the game better.
Seems like a good concept overall though, so good luck with your Kickstarter!
Here's an update on what I've been working on. I have easily added 64 x 64 masks into the collision system, but the circular moving platforms are still not perfect with these larger masks. I have other projects I need to complete right now, so need to put this update on hold, but I will come back to it in a few months when I have time.
I guess Gamemaker is doing something wacky, as there is no code interfering with any parts of GMLive, that I am aware of at least. Considering the additional check solves the issue, I'll just leave it in and let it be. Thanks for the reply.
Also I'm working on UI and menu positioning and wanted to praise your work on GMLive and give a huge thank you for making it. It just makes life with such things sooooo much easier. Appreciate you continuing to support it too, it really is an invaluable addition to GMS.
Just a heads up, I've had instances of these lines causing crashes when I exit the game. (live_live_rooms_start and live_live_rooms_stop)
ERROR!!! :: ############################################################################################ ERROR in action number 1 of Step Event0 for object obj_gmlive: Data structure with index does not exist. at gml_Script_live_update (line 367) - var l_rln=ds_list_size(l_rl); ############################################################################################ gml_Script_live_update (line 367) gml_Object_obj_gmlive_Step_0 (line 1) - live_update(); gml_Script_live_update (line 367) gml_Object_obj_gmlive_Step_0 (line 1) - live_update();
It appears live_live_rooms_start and live_live_rooms_stop are not always defined as ds_lists, so I've added a simple ds_exists check first, which solved the problem as below. Might be something you want to include, unless you can address the issue when they are created.
if ds_exists(live_live_rooms_stop, ds_type_list) { var l_rl=live_live_rooms_stop; var l_rln=ds_list_size(l_rl); if(l_rln>0){ l_url+="&rooms"+string(0)+"="+room_get_name(ds_list_find_value(l_rl,0)); var l_i=1; for(var l__g1=l_rln;l_i<l__g1;l_i++){ l_url+="+"+room_get_name(ds_list_find_value(l_rl,l_i)); } ds_list_clear(l_rl); } } if ds_exists(live_live_rooms_start, ds_type_list) { var l_rl=live_live_rooms_start; var l_rln=ds_list_size(l_rl); if(l_rln>0){ l_url+="&rooms"+string(1)+"="+room_get_name(ds_list_find_value(l_rl,0)); var l_i=1; for(var l__g1=l_rln;l_i<l__g1;l_i++){ l_url+="+"+room_get_name(ds_list_find_value(l_rl,l_i)); } ds_list_clear(l_rl); } }
I'm running 2.3.2.560 IDE and 2.3.2.426 Runtime, so my GMS2 is a little behind due to problems with the latest version. When running in debug mode with GMLive, it freezes for 1 second, then runs for a second, then freezes, etc, so is virtually unusable. Would this be because of my version? I disabled obj_gmlive and removed all references to live_call, but running in debug mode the problem still exists.
1/ Firstly, any idea why this happens?
2/ Is there a way to just disable GMLive so I can run debug, without deleting the whole GMLive folder?
Actually I solved that by finding GMLive_compiler and it was an empty function, so deleted it and re-imported it. Now I get this error :
___________________________________________ ############################################################################################ ERROR in action number 1 of Create Event for object <undefined>: Variable <unknown_object>.os_xboxseriesxs(104964, -2147483648) not set before reading it. at gml_Script_live_preinit_init_consts (line 68) - l_gmlConstValues=[undefined,pointer_invalid,pointer_null,path_action_stop,path_action_restart,path_action_continue,path_action_reverse,pi,NaN,infinity,GM_build_date,GM_version,GM_runtime_version,timezone_local,timezone_utc,gamespeed_fps,gamespeed_microse ############################################################################################ gml_Script_live_preinit_init_consts (line 68) gml_Script_live_preinit_api (line 373) - live_preinit_init_consts(); gml_GlobalScript_GMLive (line 2061) - live_preinit_api();
Are all these errors due to me not running the latest version? If so, which version do I need to run, as I didn't notice the download for 2.3+ having a requirement.
Thanks for replying. I'm using 2.3.2.560 IDE, 2.3.2.426 Runtime, as the current version has some issues that affect my workflow.
I've added the macros, but this is the error now.
___________________________________________ ############################################################################################ ERROR in action number 1 of Create Event for object <undefined>: Function `gml_compile_program` is missing! Check that script resource `GMLive_compiler` exists (Ctrl+T) and is not just a single empty function; delete and re-import if necessary! at gml_Script_live_validate_scripts (line 1408) - if(-1==asset_get_index(l_ref))show_error(("Function `"+l_ref+"` is missing!"+("\nCheck that script resource `"+l_scr+"` exists (Ctrl+T) and is not just a single empty function;")+"\ndelete and re-import if necessary!"),false); ############################################################################################ gml_Script_live_validate_scripts (line 1408) gml_GlobalScript_GMLive (line 2055) - live_validate_scripts();
Heya,
Have had this for years, but hadn't been using it. Just grabbed the new version and installed it and am getting this error on windows. What I did was dragged the GMLiveForGMS2.3+.yymps file into an existing project, imported all, started gmlive-server.exe from Explorer, so it was listening on port 5100. Set obj_gmlive to be loaded at startup, but running my project gives this error.
Even disabling obj_gmlive so I can run without it is not possible as the error still occurs.
Any advice would be appreciated please?
ERROR!!! :: ############################################################################################ ERROR in action number 1 of Create Event for object <undefined>: Variable <unknown_object>.gp_axis_orientation_w(106458, -2147483648) not set before reading it. at gml_Script_live_preinit_init_consts (line 68) - l_gmlConstValues=[undefined,pointer_invalid,pointer_null,path_action_stop,path_action_restart,path_action_continue,path_action_reverse,pi,NaN,infinity,GM_build_date,GM_version,GM_runtime_version,timezone_local,timezone_utc,gamespeed_fps,gamespeed_microse ############################################################################################ gml_Script_live_preinit_init_consts (line 68) gml_Script_live_preinit_api (line 373) - live_preinit_init_consts(); gml_GlobalScript_GMLive (line 2061) - live_preinit_api();
Hi Steg,
I'm sorry for not replying sooner. Itch doesn't seem to notify me of comments here, so I need to update my settings to fix that.
As for the bug you mentioned, I totally agree it did not work. So I've released an update with a restructured process_enemy_attack script, adding a source_id and owner_id argument, so it now can process collisions, as well as make sure entities face the correct direction more efficiently. The enemy idle mask has also been adjusted, and set as the default, which makes it fairer for the player.
Hopefully it works as intended now.
Cheers,
Peter
Hey Jaxas,
That course is almost 2 years old, and even though it's still completely relevant and useful to anyone making a game now, the weeks I would need to update the course with this content would be a massive undertaking.
This engine could be thought of as an extension of that course though, and the descriptions in the read me outline how everything works, so if you have knowledge of the Udemy course, you would be very well placed to understand the code in this.
So even though I keep the Tile Based course current, and have recently recorded new sections to ensure it is GMS2.3 compatible, I'm currently working on my next course, so do not have the time to add new content into that course.
Thanks for the question though.
The problem with adding too much is it essentially becomes a game on it's own. The structure I have added allows others to learn from how I've designed and layed out various elements, and then build upon it.
The one enemy shows how to set up enemies, so it can be replicated and reproduced for others. If I add too many enemies, your game is not unique, as everyone ends up with the same. I really wanted the engine to be a base demonstrating best practices, allowing you to extend with the knowledge from the examples in the project.
In saying that, I'll look at adding a few enemies that I had used in my Tile Based Platformer Udemy Course, and I guess people can just not use them if they don't want to.
Thanks for the feedback though, and also thank you for purchasing.
A quality product as always Case. It's super cute, and the tutorial work is spot on. Favourite part, the carrots getting slammed by the rolling disc. It's just so satisfying.
The boss battle is simple, but works really well. Got all the stars, moons and the bonus room, and loved doing it. Great work!
Great tool guys and good to see Gamemaker being used like this. Just a few requests/suggestions to improve it.
1/ When you have multiple emitters activated, but want to quickly isolate one, having the ability to right click to select just that one, or alt-click, or something would be really useful, like alt-click eye icon layer visibility in photoshop. Then you can do the same to go back to what you had activated before. Also you should be able to click and drag across all the systems to flip them on/off at once.
2/ Gravity and speed Incr. only move in .1 and you need to type in 0.05 for example. Can't this scale be a setting we can change, as 0.05 would be useful, and I see in your video's it used to be that. Even if we hold alt and drag to get smaller increments it would help.
3/ The gif export seems to export with the previous frame option on, as importing the finished gif into gamemaker brings in a gif that has each frame as a combination of the previous one. It also has a tendency to leave many blank frames at the start. I realise you are using a 3rd party app to do your export though, so am aware you may be limited in what you can do with your current pipeline.
4/ With gamemakers ability to import strip# pngs, it would be really useful to know the frames in the export. Not sure if that's possible at run time, but even after it's exported it would be useful to show then so we can add it to the file afterwards instead of counting them ourselves.
5/ The png export is not great, as you are left with a huge blank area up the top, making importing a cut and paste effort first. How do we get the first image of the export to be up the top left? Even when I deleted that area, Gamemaker doesn't like a 7x5 grid of images and failed to import it correctly. Do you have a workflow for Gamemaker import from Pixel FX?
6/ A multi level undo would be nice :)
Thanks guys.
Thanks for playing and commenting, and glad you liked it.
When you first pick up the portal machine, he says it has writing on it, and that it only works on "in-ani-mate" objects only. Porter is only 10, so being a big word, he sounds it out. Agree that people have a perception of Portal and people entering them, but that's why I wanted to make it slightly different. It's an origin story, people portals come later :)
Appreciate the feedback though.
Hi, thanks for taking the time to play it and also to comment.
Totally agree with you about level design. I had a concept of dropping a box out a chute if one got destroyed, but time got the better of me, and in the end the levels are so short all it broke was the story aspect really. Definitely can be improved on though, as well as adding more uses for the portals. Maybe for a future project.
As for the lag, I've never heard of Gamemaker specific Windows 10 lag, and never experienced it, and I've been using GMS for ages. It only runs at 30fps, and just did a frame test, and it's over 1000fps. The code is pretty simple. If you're getting it on other projects might be something on your rig.
Thanks again for the comments.