Jump to content


Photo

GM Studio - Whishlist


  • This topic is locked This topic is locked
510 replies to this topic

#1 Mr Game

Mr Game

    GMC Member

  • New Member
  • 177 posts
  • Version:GM8

Posted 05 March 2012 - 03:21 PM

As you know, GM Studio is still in beta stage, and that means that it doesn't include all of its planed features.
We can use the time until the final GM Studio release to introduce our needs to YYG, hoping that they'll fulfil our demands.

Feel free to post your wishes below, in order to be added by me to this wishlist. Any stupid, impossible or repeated wishes will be simply ignored.

The deleted ones were officially marked as 'NO WAY' or already made real :thumbsup: (or they were just a simple mistake...)

Those with the strikethrough were officially rejected

GM Studio - Wishlist:

-NetPlay support for portable devices
-Access to sensors (gyroscope, proximity sensor, etc.), camera, vibrations, bluetooth and geo position
-OpenGL for 3D functionalities (with shaders)
-Customizable code completion help for user-made scripts
-Better loading screens
-OGG and MP3 sounds playback
-More string functions
-Regular expressions functionality
-Export sprites as GIF animations
-Support native libraries (Android)
-JavaScript support for non-HTML5 runners
- get_dpi(function)
-Get rid of 'YoYo_' at the start of certain functions
-Faster loading and compiling
-Run project files with the runner
-Subtraction and division operations for ds_grid
-Sorting for ds grids
-More built in 3D vector functions
-FileSytem I/O
-Application folder/cache directory for external resources
-Access to the whole SD card
-Saving/Loading
-show_menu(str,def)
-A framecounter underneath the "Show Preview" (in "Edit Sprite")
-Auto prefixing for resources (obj_, spr_, fnt_, etc.)
-Multiple object selection in the room editor
-Better debug (details http://gmc.yoyogames...dpost&p=3944386)
-Sound panning & pitch shifting
-Sound pausing and continuing (+set/get current playing position)
-All string functions zero-indexed
-Bassmod support
-GOTO statement
-Support other OSes (Symbian, BlackBerry, Windows Phone)
-Room editor like that: http://www.youtube.c...h?v=KKtbiTAUpeA
-Notifiactions
-Background app functionality
-Advertisement networks support
-Triggers!
-"Bucket" tool for tiles
-Joystick support
-Sprite and Background group saving
-Shiftable layers (http://gmc.yoyogames...dpost&p=3952997)
- room_enter and room_leave events
- d3d_check - or a variable that returns whether d3d_start() has been init

Edited by Mr Game, 10 June 2012 - 09:05 AM.

  • 2

#2 King Tetiro

King Tetiro

    King of Orenna

  • GMC Member
  • 2502 posts
  • Version:GM:Studio

Posted 05 March 2012 - 04:51 PM

A working variable_local_exists() would be fantastic as it is can be used as a failsafe for programming. It is in GMS, however it is unknown if it is intended for HTML5/iOS/Android or if it is broken.
  • 0

#3 NakedPaulToast

NakedPaulToast

    GM Studio/Mac/Win

  • GMC Member
  • 8334 posts
  • Version:GM:Studio

Posted 05 March 2012 - 04:58 PM

A working variable_local_exists() would be fantastic as it is can be used as a failsafe for programming. It is in GMS, however it is unknown if it is intended for HTML5/iOS/Android or if it is broken.


This has been discussed dozens of times since the release of GM:HTML5.

Checking if a variables exists is simply not necessary, it's slow, it's prohibitive to future compiling.

Instead initialize all variables, which you should be doing anyway. Then check if it still has it's default init value.
  • 2

#4 Zesterer

Zesterer

    Professor of Articul

  • GMC Member
  • 1043 posts
  • Version:GM8

Posted 05 March 2012 - 05:00 PM

GM really needs a 'speed_in_direction(vx,vy,dir)' where you can input an x/y vector (usually hspeed and vspeed) and a direction(dir) and it will tell you the given vector distance in that particular direction. It's easy to do with trig, but it would be a useful function to have...

Zesterer
  • 0

#5 Mr Game

Mr Game

    GMC Member

  • New Member
  • 177 posts
  • Version:GM8

Posted 05 March 2012 - 05:19 PM

A working variable_local_exists() would be fantastic as it is can be used as a failsafe for programming. It is in GMS, however it is unknown if it is intended for HTML5/iOS/Android or if it is broken.

Added!
  • 0

#6 bobhoil

bobhoil

    GMC Member

  • GMC Member
  • 1569 posts
  • Version:Unknown

Posted 05 March 2012 - 05:22 PM

Maybe along with the 3d a 3d based physics library would be nice. Would allow for me to make some sweet games I would think.

Edited by bobhoil, 05 March 2012 - 05:22 PM.

  • 0

#7 Mr Game

Mr Game

    GMC Member

  • New Member
  • 177 posts
  • Version:GM8

Posted 05 March 2012 - 05:22 PM

GM really needs a 'speed_in_direction(vx,vy,dir)' where you can input an x/y vector (usually hspeed and vspeed) and a direction(dir) and it will tell you the given vector distance in that particular direction. It's easy to do with trig, but it would be a useful function to have...

Zesterer

We are talking about general GM Studio functions, not GML functions (except for those which existed in previous GM versions)

And you can code a 'speed_in_direction(vx,vy,dir)' by yourself or google for that script <_<

EDIT: double post again *facepalm*

Edited by Mr Game, 05 March 2012 - 05:23 PM.

  • 0

#8 Erik Leppen

Erik Leppen

    GMC Member

  • GMC Member
  • 2599 posts
  • Version:GM:Studio

Posted 05 March 2012 - 05:29 PM

Concerning the variable_ functions, you can use a ds_map with as key the variable name and as value its value. variable_local_get then simply becomes ds_map_find_vale, variable_local_set becomes ds_map_replace, etc. With this you can replicate almost all basic functionality of the variable_ functions. Of course the local variables become a local map, and the global variables become a global map. Arrays become a bit more complicated, maybe you could make a ds_map of which the values are ds_grid indices... (but I always find this kind of scary when I think about the code involved to just read such a thing. But in that case you can simply create an extension to duplicate all those functions to work on maps. Why not start already writing that extension? ;))

About Zesterer's idea, the function dot_product comes very close to what you want.

What I like to have is a list of incompatibilities between Windows, HTML5 and the other systems. A simple checklist of things to keep in mind when creating one codebase for a game meant for different distributions. For example, do the ini functions work in Html5, what about surfaces, what about blend modes, what about zwriteenable in d3d, etc.

I'd like code completion help for scripts, similar to what is done for extension functions. The ability to set the number of arguments and their names for scripts, and that a help line is displayed with the currently edited argument in bold (just as with functions).

I'd like the code editor to have a special color for everything deprecated. Since a lot of stuff will be going or changed, it'll be of very big help to users if deprecated functions are specially marked. This will severely reduce the number of "why does this not work, this has always worked before" questions on the forums.

There's so much to wish for. But I hope their top priority is to get a stable working product first :)

With proper error handling :P
  • 2

#9 Mr Game

Mr Game

    GMC Member

  • New Member
  • 177 posts
  • Version:GM8

Posted 05 March 2012 - 05:38 PM

There's a 10% probability that Mark Overmars will see this topic right now
  • 0

#10 Zesterer

Zesterer

    Professor of Articul

  • GMC Member
  • 1043 posts
  • Version:GM8

Posted 05 March 2012 - 06:04 PM

And you can code a 'speed_in_direction(vx,vy,dir)' by yourself or google for that script <_<


Thats what I just said...
  • 0

#11 Mr Game

Mr Game

    GMC Member

  • New Member
  • 177 posts
  • Version:GM8

Posted 05 March 2012 - 06:10 PM


And you can code a 'speed_in_direction(vx,vy,dir)' by yourself or google for that script <_<


Thats what I just said...


But here we are talking about BUILT-IN functions, not scripts! :angry:
  • 0

#12 alexandervrs

alexandervrs

    GMC Member

  • GMC Member
  • 707 posts
  • Version:GM:Studio

Posted 05 March 2012 - 06:11 PM

Ability to playback OG... *smack*

Well a wish I posted a little while ago is to turn "Web Events" into "Load Events" so they are more useful than just in HTML5.
That way sprite_add() etc. would be threaded and we could use the Load Events to check if the resources are available.
It would be useful for in-game loading screens or threaded loading in the background as you play the game.

Most of other wishes I have though are complex and more suited for GM9 (OGG sound, Shaders, 2D Lighting System, Better Loading Screens, Visual Particle Editor)
  • 0

#13 Mike.Dailly

Mike.Dailly

    Evil YoYo Games Employee

  • Administrators
  • 3324 posts
  • Version:GM:Studio

Posted 05 March 2012 - 06:19 PM

variable_local_exists() is not required anymore. You can now swap creation order so that the object's create event is run BEFORE room creation code, and this means you can now initialise defaults and then override them in the creation code.

You really shouldn't have needed this outside of this case, and you now don't need this anyway.

Maps in Studio have been rewritten, and while a bit faster, aren't great for simple variable lookup, so I'd be careful using them for general variable storage.

If you think you need variable_local_exists() for another reason, I'd be interested to hear about it.... but I reserve the right to mock you and call you Susan.

We will not be added 3D physics stuff.

OpenGL is already used for rendering 3D..... how else did you think we'd do it?!?!

Look up the YoYo_???? functions for access to accelerometer functions, and other things for that matter.
  • 1

#14 Mr Game

Mr Game

    GMC Member

  • New Member
  • 177 posts
  • Version:GM8

Posted 05 March 2012 - 06:19 PM

Ability to playback OG... *smack*

Well a wish I posted a little while ago is to turn "Web Events" into "Load Events" so they are more useful than just in HTML5.
That way sprite_add() etc. would be threaded and we could use the Load Events to check if the resources are available.
It would be useful for in-game loading screens or threaded loading in the background as you play the game.

Most of other wishes I have though are complex and more suited for GM9 (OGG sound, Shaders, 2D Lighting System, Better Loading Screens, Visual Particle Editor)


I'll add "Load Events", Bettter loading screens, ogg sound, and shaders, but 2D lighting and visual particle editor are things already achieved by the users.... :mellow:
  • 0

#15 alexandervrs

alexandervrs

    GMC Member

  • GMC Member
  • 707 posts
  • Version:GM:Studio

Posted 05 March 2012 - 06:28 PM

but 2D lighting and visual particle editor are things already achieved by the users....


Yes, I know you can do lighting effects with surfaces, however compiled ls_* functions would be even faster. :)
And also, indeed there are some utilities out there to view and generate particles but it should be really built-in, would be much help to newcomers to get started with particles and very practical for advanced users to preview how things look.

Edited by alexandervrs, 05 March 2012 - 06:30 PM.

  • 0

#16 TheSnidr

TheSnidr

    Heavy metal viking dentist

  • Global Moderators
  • 3062 posts
  • Version:GM:Studio

Posted 05 March 2012 - 06:29 PM

If you think you need variable_local_exists() for another reason, I'd be interested to hear about it.... but I reserve the right to mock you and call you Susan.

I'm using it to keep track of what models are initialized in GM OGRE, the 3D graphics dll. Instead of saving models to variables, they're saved to strings. For example:
radius=32
hrep=2
vrep=1
str="sphere" + string(radius) + "," + string(hrep) + "," + string(vrep)
if !variable_global_exists(str)
{
    variable_global_set(str,1)
    create_sphere(str,other stuff)
}
use_model(str)
Of course, my point will be invalid in case you've decided to never support OGRE again, in which case I'd really like to request you add shader support and possibility for some nice effects in 3D.

The variable_global_exists is not stricly necessary here either though... but it makes finding what models are already initialized much easier, to prevent making the same model twice.

Edited by TheSnidr, 05 March 2012 - 06:36 PM.

  • 0

#17 GameDevDan

GameDevDan

    YoYo Games Staff

  • Administrators
  • 1254 posts
  • Version:GM:Studio

Posted 05 March 2012 - 06:38 PM

As you know, GM Studio is still in beta stage, and that means that it doesn't include all of its planned features.
We can use the time until the final GM Studio release to introduce our needs to YYG, hoping that they'll fulfil our demands.


Tbh, I'm rather hoping that it's just fixed in it's current form so that it is working to a decent standard and released before they go adding other things.

-Access to sensors (accelerometer, gyroscope, proximity sensor, etc.),



That's done isn't it?

-Re-add variable_local_exists()


¬______¬

-Better loading screens


What's wrong with the current loading screen?

Edited by GameDevDan, 05 March 2012 - 06:39 PM.

  • 0

#18 alexandervrs

alexandervrs

    GMC Member

  • GMC Member
  • 707 posts
  • Version:GM:Studio

Posted 05 March 2012 - 06:41 PM

Forgetting the redundant splash_* functions and only keeping the video-related ones. Would it be hard to add video playback in GM:Studio?
I managed to create an extension for HTML5 which puts a video as overlay on top of the game canvas, but can't yet figure out DirectShow on Windows (which I think that was what GM was using to play video).

I have small animated cutscenes in my game and could really be benefited by such an addition.
I am pretty sure iOs and Android have built-in video support and codecs.

Is this a big task to add natively in GM?

Tbh, I'm rather hoping that it's just fixed in it's current form so that it is working to a decent standard and released before they go adding other things.


I agree with this.

What's wrong with the current loading screen?


Needs more control over how it looks, see Stencyl's loading screen editor for example, and ability to turn it off completely. ("Make partially transparent with alpha" is not doing it right)

Edited by alexandervrs, 05 March 2012 - 06:43 PM.

  • 0

#19 GameDevDan

GameDevDan

    YoYo Games Staff

  • Administrators
  • 1254 posts
  • Version:GM:Studio

Posted 05 March 2012 - 06:44 PM

Forgetting the redundant splash_* functions and only keeping the video-related ones. Would it be hard to add video playback in GM:Studio?
I managed to create an extension for HTML5 which puts a video as overlay on top of the game canvas, but can't yet figure out DirectShow on Windows (which I think that was what GM was using to play video).

I have small animated cutscenes in my game and could really be benefited by such an addition.
I am pretty sure iOs and Android have built-in video support and codecs.

Is this a big task to add natively in GM?


I probably wouldn't use this as I find animating a cutscene in GM with objects easier than using an animation program, but it's definitely a good idea for a feature. I'm sure I've seen several apps (on iOS at least) playing videos.

Needs more control over how it looks, see Stencyl's loading screen editor for example, and ability to turn it off completely. ("Make partially transparent with alpha" is not doing it right)


Meh, again not something that bothers me, but I can see it being a useful addition.

Edited by GameDevDan, 05 March 2012 - 06:45 PM.

  • 0

#20 DanRedux

DanRedux

    GMC Member

  • GMC Member
  • 1403 posts
  • Version:GM:Studio

Posted 05 March 2012 - 06:44 PM

There is something that would increase the performance of almost every complex came.

First, you need to add proper callbacks. Right now, you can only pass in a script that you made (because the ID's are only generated for custom ones). Just generate ID's for the built-in scripts.
Second, allow callback() syntax, it shouldn't be TOO hard.
Finally, provide a script, one for each data structure, that quickly loops the data structure applying the provided callback to it.

With that function, say, ds_grid_walk, you wouldn't have to look it in GML and the speed benefits would be huge. Also, pass in the value at each index, and replace it with the returned value from the function.

To square a list, I should just be able to do this:
ds_list_walk(my_list,sqr)
  • 0

#21 alexandervrs

alexandervrs

    GMC Member

  • GMC Member
  • 707 posts
  • Version:GM:Studio

Posted 05 March 2012 - 06:50 PM

I probably wouldn't use this as I find animating a cutscene in GM with objects easier than using an animation program, but it's definitely a good idea for a feature. I'm sure I've seen several apps (on iOS at least) playing videos.


I animate mine in Anime Studio because I use its skeletal system, it can export as video but also image sequences however the filesize and memory usage would "explode" if I added them as images and played a background sound. xD
  • 0

#22 Mike.Dailly

Mike.Dailly

    Evil YoYo Games Employee

  • Administrators
  • 3324 posts
  • Version:GM:Studio

Posted 06 March 2012 - 05:55 AM


If you think you need variable_local_exists() for another reason, I'd be interested to hear about it.... but I reserve the right to mock you and call you Susan.

I'm using it to keep track of what models are initialized in GM OGRE, the 3D graphics dll. Instead of saving models to variables, they're saved to strings. For example:
radius=32
hrep=2
vrep=1
str="sphere" + string(radius) + "," + string(hrep) + "," + string(vrep)
if !variable_global_exists(str)
{
    variable_global_set(str,1)
    create_sphere(str,other stuff)
}
use_model(str)
Of course, my point will be invalid in case you've decided to never support OGRE again, in which case I'd really like to request you add shader support and possibility for some nice effects in 3D.

The variable_global_exists is not stricly necessary here either though... but it makes finding what models are already initialized much easier, to prevent making the same model twice.


Okay, that's just a really bad way of doing it.... You MUCH better just storing a default value in the string and checking for tht, OR store another bool along side and checking that, OR store it in a map, and checking that..... So loads of ways, none of which require variable exists....
  • 0

#23 Mr Game

Mr Game

    GMC Member

  • New Member
  • 177 posts
  • Version:GM8

Posted 06 March 2012 - 01:29 PM

Maybe along with the 3d a 3d based physics library would be nice. Would allow for me to make some sweet games I would think.

This was already achieved by users with GMnewton extension.
  • 0

#24 alexandervrs

alexandervrs

    GMC Member

  • GMC Member
  • 707 posts
  • Version:GM:Studio

Posted 06 March 2012 - 01:39 PM

Oh here's another. More string functions like

string_trim Strip characters (like whitespace) from the beginning and end of a string
string_ltrim Strip characters (like whitespace) from the beginning of a string
string_rtrim Strip characters (like whitespace) from the end of a string
string_explode Split a string by string
string_implode Join array elements with a string
string_md5 Calculate the md5 hash of a string
string_encrypt Encrypt string using a key
string_decrypt Decrypt string using a key


And regular expression functionality like

regexp_match Perform a regular expression match
regexp_replace Perform a regular expression search and replace
regexp_split Split string by a regular expression


Edited by alexandervrs, 06 March 2012 - 01:41 PM.

  • 1

#25 Mr Game

Mr Game

    GMC Member

  • New Member
  • 177 posts
  • Version:GM8

Posted 06 March 2012 - 01:43 PM

If you think you need variable_local_exists() for another reason, I'd be interested to hear about it.... but I reserve the right to mock you and call you Susan.

variable_local_exists() is surely needed for simpler port form GM8+ to GMS, it's simpler, and it's very useful
  • 1

#26 Nocturne

Nocturne

    Nocturne Games

  • Administrators
  • 22257 posts
  • Version:GM:Studio

Posted 06 March 2012 - 01:45 PM

What I like to have is a list of incompatibilities between Windows, HTML5 and the other systems. A simple checklist of things to keep in mind when creating one codebase for a game meant for different distributions. For example, do the ini functions work in Html5, what about surfaces, what about blend modes, what about zwriteenable in d3d, etc.

With proper error handling :P


This is being worked on and hopefully we can have a list of functions and compatabilities as well as have each function marked in the manual as being compatible or not with each target device.

(this is being worked on too!)


Oh, and most of what's being discussed in this topic should really be in the Expert topic that we have for what we'd like to see in GameMaker as most of this is impossible to implement without a complete re-write... and that won't happen until GM9.
  • 0

#27 alexandervrs

alexandervrs

    GMC Member

  • GMC Member
  • 707 posts
  • Version:GM:Studio

Posted 06 March 2012 - 01:49 PM

variable_local_exists() is surely needed for simpler port form GM8+ to GMS, it's simpler, and it's very useful


But it also hinders progressing forward. If you know what you're doing, porting from GM8 to GMS will generally be pretty easy.
I managed to port my project from GM8 to Studio in a couple hours and also working on my Android phone. My secret? I never used "Treat Uninitialized variables as zero". :)

...as most of this is impossible to implement without a complete re-write... and that won't happen until GM9.

It's my ideas, aren't they? :P

Edited by alexandervrs, 06 March 2012 - 01:51 PM.

  • 0

#28 Mr Game

Mr Game

    GMC Member

  • New Member
  • 177 posts
  • Version:GM8

Posted 06 March 2012 - 01:54 PM

OpenGL is already used for rendering 3D..... how else did you think we'd do it?!?!

Look up the YoYo_???? functions for access to accelerometer functions, and other things for that matter.

I thought you use Direct3D, and GM Studio doesn't have 3d functions... I think....

And I don't see any accelerometer functions, even if I updated my GM Studio just 5 minutes ago!

But the skin is definitely better!

EDIT: Physics functions are f***ing awesome!

Edited by Mr Game, 06 March 2012 - 02:00 PM.

  • 0

#29 alexandervrs

alexandervrs

    GMC Member

  • GMC Member
  • 707 posts
  • Version:GM:Studio

Posted 06 March 2012 - 01:58 PM

And I don't see any accelerometer functions, even if I updated my GM Studio just 5 minutes ago!


Use YoYo_GetTiltX() for horizontal tilt and YoYo_GetTiltY() for vertical tilt. Not sure what YoYo_GetTiltZ() does (Checks if the phone is falling? xD).
  • 0

#30 Mr Game

Mr Game

    GMC Member

  • New Member
  • 177 posts
  • Version:GM8

Posted 06 March 2012 - 02:09 PM

And I don't see any accelerometer functions, even if I updated my GM Studio just 5 minutes ago!


Use YoYo_GetTiltX() for horizontal tilt and YoYo_GetTiltY() for vertical tilt. Not sure what YoYo_GetTiltZ() does (Checks if the phone is falling? xD).

It works! Thanks man! It'll be fun if you use this together with physics functions!

About YoYo_GetTiltZ().... you're right, that's for it! :D

EDIT: Is YoYo_GetPictureSprite() used for get image from the camera?

Edited by Mr Game, 06 March 2012 - 02:17 PM.

  • 0




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users