Jump to content

gamemaker stuff


EpicEbilninja
 Share

Recommended Posts

  • 3 weeks later...

GameMaker is very limited. You should look into an engine called "Stencyl". It's a flash-based engine that has a lot of functionality.

 

um..no it's not. Hell, it was flexible enough for me to make a virtual desktop, F3DZEX & Wavefront Obj viewers, a F3DZEX->Wavefront Obj converter, and a utility to detect the (inner) data types of files from Zelda TP and open the with the correct software. Using the timeline tool, you can use it to create sprite animations, you can host your games online with the yoyogames plugin, networked games are a piece of cake to set up, and the first thing I do when I'm showing any of my friends how easy it is to use is how to make a game in 5 minutes without writing a single line of code.

 

You just don't know how to use it properly.

 

That said, I don't use it to make games anymore, I've moved on to 3D dev. so I use Unity. Though I still use it for it's powerful and simple to use image editor (which is why all of my images are named sprite0 if you look at their url's)

  • Like 1
Link to comment
Share on other sites

um..no it's not.

 

This.

You just don't know how to use it properly.

 

A million more times this.


I don't know how to use Game Maker(since I never gave it a chance over RMXP, may go back one day), but I am certainly not going to fool myself into believing it's very limited.

 

Game Maker, like RMXP, is a very powerful and seemingly limitless game creation software; they both have the potential to produce very quality work.

  • Like 1
Link to comment
Share on other sites

yes, one reason i like gamemaker is, as blinx has stated has almost unlimited possibilities

 

It can do 3D, it is great for platformers, it can make pokemon games, speech engines, story games, rpgs, adventure, you name it kind of games

 

 

if you decide to take the time, and learn about gml(game maker language), functions, and generally about gamemaker, you can do amazing things :D

Link to comment
Share on other sites

So I took a look at some GML tutorials today... wow, GML is an outrageously noob-friendly language compared to everything else. I'm kind of tempted to see what I can get done with just knowledge I have now.

 

Hails yes. There are some things that are tricky though, like collision on a platform game (mainly because the slanted hills lead to laggy collision).

 

What I do is set the player's collision mask to circular, set the objects for the slanted platforms to NOT solid, and manually add or subtract from the player's y position when they're moving on it. This allows the player to smoothly run up and down hills. For gravity, you can just use the 'move to contact point' button with direction 270 and set the speed to whatever you want gravity to be. Then you don't have to worry about turning on and off the gravity when the player makes contact with the ground (if you don't, the player with bounce off and fly off the screen). The only thing about using my method for platform games is that you have to set the collision to ALL OBJECTS instead of ONLY SOLID, otherwise you'll fly through your diagonal platforms, which also means if you want background details like grass or trees you'll have to use tilesets.

Link to comment
Share on other sites

So, I experimented with Game Maker Studio today, figuring I might as well since Steam made it easy for me to get.

 

I figured out how to make a basic map, and like the other options I see so far.

 

I may move PoV over to GM when I become familiar with it.

 

-- Transmitted by an ancient satellite from across the cosmic web. Or my cellphone, if you prefer.

Link to comment
Share on other sites

So, I experimented with Game Maker Studio today, figuring I might as well since Steam made it easy for me to get.

 

I figured out how to make a basic map, and like the other options I see so far.

 

I may move PoV over to GM when I become familiar with it.

 

-- Transmitted by an ancient satellite from across the cosmic web. Or my cellphone, if you prefer.

 

 

umm..wrong Game Maker dude. We're talking about the Yoyo games one, not the Steam one (btw, do you really consider $50 "easy to get"?)

Link to comment
Share on other sites

umm..wrong Game Maker dude. We're talking about the Yoyo games one, not the Steam one (btw, do you really consider $50 "easy to get"?)

http://www.yoyogames...amemaker/studio

 

I'm sorry, what were you going on about again? Please, research next time.

Also, it's free. You may want to keep that in mind.

 

-- Transmitted by an ancient satellite from across the cosmic web. Or my cellphone, if you prefer.

  • Like 1
Link to comment
Share on other sites

umm..wrong Game Maker dude. We're talking about the Yoyo games one, not the Steam one (btw, do you really consider $50 "easy to get"?)

 

Nah, he's talking about the same thing. It's just a vastly different version, though.

 

Game Maker Studio is the newest Game Maker software developed by YoYo games that I believe allows you to develop games for Android, iOS, and maybe even Wii(?)... All other versions before it are sort of obsolete now and they've cut alot of things that used to be supported. Also, I think the prices can go up to $500 for the "Master Studio".

 

However, I'm using a cracked version of the old Game Maker 8.1 that I downloaded today :P

Link to comment
Share on other sites

So I took a look at some GML tutorials today... wow, GML is an outrageously noob-friendly language compared to everything else. I'm kind of tempted to see what I can get done with just knowledge I have now.

 

once you move out of simple gml codes, it gets really tricky when you start with the advanced

 

if youthink it's so noob-friendly, what do you think this means?

 

[size=1]if not keyboard_check(vk_up)&& not keyboard_check(vk_right) && not keyboard_check(vk_down)&& not keyboard_check(vk_left)
{
vspeed = 0
hspeed = 0
global.animated=false}
if keyboard_check(vk_left)&& keyboard_check(vk_right)
{
vspeed = 0
hspeed = 0
global.animated=false}
if keyboard_check(vk_up)&& keyboard_check(vk_down)
{
vspeed = 0
hspeed = 0
global.animated=false}
if vspeed = 0 && hspeed = 0 && height=obj_waluigi.height
{global.move=false}

if obj_waluigi.y-y>24{vspeed = 0}
if obj_waluigi.y-y<-24{vspeed = 0}
if obj_waluigi.x-x>24{hspeed = 0}
if obj_waluigi.x-x<-24{hspeed = 0}
if global.talk = false
{
if keyboard_check(vk_up) && not keyboard_check(vk_left)&& not keyboard_check(vk_right) && not keyboard_check(vk_down) //up
{
{ddirection = 1
global.animated=true
script_execute(move_up4)
}}
if keyboard_check(vk_up) && not keyboard_check(vk_left)&& keyboard_check(vk_right) && not keyboard_check(vk_down) //up right
{
{
{ddirection = 2
global.animated=true
script_execute(move_up3)
script_execute(move_right3)
}}}
if not keyboard_check(vk_down) && keyboard_check(vk_right)&& not keyboard_check(vk_up) && not keyboard_check(vk_left) //right
{
{ddirection = 3
global.animated=true
script_execute(move_right4)
}}
if keyboard_check(vk_down) && not keyboard_check(vk_left)&& keyboard_check(vk_right) && not keyboard_check(vk_up) //down right
{
{
{ddirection = 4
global.animated=true
script_execute(move_down3)
script_execute(move_right3)
}}}
if keyboard_check(vk_down) && not keyboard_check(vk_left)&& not keyboard_check(vk_right) && not keyboard_check(vk_up) //down
{
{ddirection = 5
global.animated=true
script_execute(move_down4)
}}
if keyboard_check(vk_down) && keyboard_check(vk_left)&& not keyboard_check(vk_right) && not keyboard_check(vk_up) //down left
{
{
{ddirection = 6
global.animated=true
script_execute(move_down3)
script_execute(move_left3)
}}}
if not keyboard_check(vk_down) && keyboard_check(vk_left)&& not keyboard_check(vk_up) && not keyboard_check(vk_right) //left
{
{ddirection = 7
global.animated=true
script_execute(move_left4)
}}
if keyboard_check(vk_up) && keyboard_check(vk_left)&& not keyboard_check(vk_right) && not keyboard_check(vk_down) //up left
{
{
{ddirection = 8
global.animated=true
script_execute(move_up3)
script_execute(move_left3)
}}}
}[/size]

 

and uses scripts like this(move_up4 in this case)

[size=1]if place_free(x,y-4)
{
move=true
if place_meeting(x,y-4,obj_hblock1) && z<16 {exit}
if place_meeting(x,y-4,obj_hblock2) && z<32 {exit}
if place_meeting(x,y-4,obj_hblock3) && z<48 {exit}
if place_meeting(x,y-4,obj_hblock4) && z<64 {exit}
{y+=-4}}
Link to comment
Share on other sites

once you move out of simple gml codes, it gets really tricky when you start with the advanced

 

if youthink it's so noob-friendly, what do you think this means?

 

..

 

and uses scripts like this(move_up4 in this case)

 

..

 

 

Alright, well I haven't gotten far enough into the tutorials and documentation to know all of the keyterms (barely on my second video for GML) but the terminology you're using seems obvious enough. I guess I'll take a shot. Also, Jesus, please use semi-colons at the end of each line of code that isn't proceeded by brackets-- it's good programming practice and let's people know where one line ends and another starts. Seriously, nearly 90% of my time looking at the code was spent fixing it up to a readable degree. Another thing, too many unnecessary brackets, bro. Anyways :

 

// If you aren't pressing any directional key or if you're pressing any key (really, there doesn't even need to be a check as far as I can tell), it sets the objects XY speeds to zero and sets the global variable "animated" to false
if not keyboard_check(vk_up) && not keyboard_check(vk_right) && not keyboard_check(vk_down) && not keyboard_check(vk_left)
{
    vspeed = 0;
    hspeed = 0;
    global.animated = false;
}
if keyboard_check(vk_left) && keyboard_check(vk_right)
{
    vspeed = 0;
    hspeed = 0;
    global.animated = false;
}
if keyboard_check(vk_up) && keyboard_check(vk_down)
{
    vspeed = 0;
    hspeed = 0;
    global.animated = false;
}

// Check if object XY speed is 0 and if the object height is equal to Waluigi's height to set global variable "move" to false
if vspeed = 0 && hspeed = 0 && height = obj_waluigi.height
{
    global.move = false;
}

// A bunch of and XY distance checks (a range of +24 to -24 for both X and Y) between obj_waluigi and the current object to set XY speeds of the object
if (obj_waluigi.y - y) > 24 { vspeed = 0; }
if (obj_waluigi.y - y) < -24 { vspeed = 0; }
if (obj_waluigi.x - x) > 24 { hspeed = 0; }
if (obj_waluigi.x - x) < -24 { hspeed = 0; }

// If global variable "talk" is equal to false...
if global.talk = false
{
    // If up is pressed, 90 degree rotation (counter-clockwise) movement for the object, and animate the sprite
    if keyboard_check(vk_up) && not keyboard_check(vk_left) && not keyboard_check(vk_right) && not keyboard_check(vk_down) //up
    {
        ddirection = 1;
        global.animated = true;
        script_execute(move_up4);
    }
    // If up + right is pressed, 45 degree rotation (counter-clockwise) movement for the object and animate the sprite
    if keyboard_check(vk_up) && not keyboard_check(vk_left) && keyboard_check(vk_right) && not keyboard_check(vk_down) //up right
    {
        ddirection = 2;
        global.animated = true;
        script_execute(move_up3);
        script_execute(move_right3);

    }
    // If right is pressed, 0 degree rotation (counter-clockwise) movement for the object and animate the sprite
    if not keyboard_check(vk_down) && keyboard_check(vk_right) && not keyboard_check(vk_up) && not keyboard_check(vk_left) //right
    {
        ddirection = 3;
        global.animated = true;
        script_execute(move_right4);
    }
    // If down + right is pressed, 315 degree rotation (counter-clockwise) movement for the object and animate the sprite
    if keyboard_check(vk_down) && not keyboard_check(vk_left) && keyboard_check(vk_right) && not keyboard_check(vk_up) //down right
    {
        ddirection = 4;
        global.animated = true;
        script_execute(move_down3);
        script_execute(move_right3);
    }
    // If down + right is pressed, 270 degree rotation (counter-clockwise) movement for the object and animate the sprite
    if keyboard_check(vk_down) && not keyboard_check(vk_left) && not keyboard_check(vk_right) && not keyboard_check(vk_up) //down
    {
        ddirection = 5;
        global.animated = true;
        script_execute(move_down4);
    }
    // If down + right is pressed, 225 degree rotation (counter-clockwise) movement for the object and animate the sprite
    if keyboard_check(vk_down) && keyboard_check(vk_left) && not keyboard_check(vk_right) && not keyboard_check(vk_up) //down left
    {
        ddirection = 6;
        global.animated = true;
        script_execute(move_down3);
        script_execute(move_left3);
    }
    // If down + right is pressed, 180 degree rotation (counter-clockwise) movement for the object and animate the sprite
    if not keyboard_check(vk_down) && keyboard_check(vk_left) && not keyboard_check(vk_up) && not keyboard_check(vk_right) //left
    {
        ddirection = 7;
        global.animated = true;
        script_execute(move_left4);
    }
    // If down + right is pressed, 135 degree rotation (counter-clockwise) movement for the object and animate the sprite
    if keyboard_check(vk_up) && keyboard_check(vk_left) && not keyboard_check(vk_right) && not keyboard_check(vk_down) //up left
    {
        ddirection = 8;
        global.animated = true;
        script_execute(move_up3);
        script_execute(move_left3);
    }
}

And for the other part, I had a little more guesswork to do :

// Checks if the square (pixel?) 4 units above the object is free...
if place_free(x, (y - 4))
{
    // ...To allow the object to move
    move = true;

    // I have no idea what function "place_meeting" does, but I'll make an educated guess
    // Makes a series of checks to see whether or not there's a certain type of "block" object with a specific Z-axis range for each type of block in front of the currrent object to decide whether or not to exit
    if place_meeting(x, (y - 4), obj_hblock1) && z < 16 { exit; }
    if place_meeting(x, (y - 4), obj_hblock2) && z < 32 { exit; }
    if place_meeting(x, (y - 4), obj_hblock3) && z < 48 { exit; }
    if place_meeting(x, (y - 4), obj_hblock4) && z < 64 { exit; }

    // ...To make sure before it decreases the Y value of the object
    y += -4;

}

You're welcome. Redundancy is redundant.

 

EDIT:

I removed a bunch of brackets, added in semi-colons, and enclosed certain arithmetic in paranthesis to give a cleaner look. It should still compile exactly the same.

Edited by Jason777
  • Like 2
Link to comment
Share on other sites

Alright, well I haven't gotten far enough into the tutorials and documentation to know all of the keyterms (barely on my second video for GML) but the terminology you're using seems obvious enough. I guess I'll take a shot. Also, Jesus, please use semi-colons at the end of each line of code that isn't proceeded by brackets-- it's good programming practice and let's people know where one line ends and another starts. Seriously, nearly 90% of my time looking at the code was spent fixing it up to a readable degree. Another thing, too many unnecessary brackets, bro. Anyways :

 

 

.......................

 

.......................

 

 

Your welcome. Redundancy is redundant.

 

your pretty close, and it wasn't too far off,welcome to gamemaker

 

this is just a work in progress code for my game :) (by the way, I'm still learning myself, and the extra brackets came from me editing, and forgetting to delete them)

 

it's not exactly noob friendly when you are trying to develop something yourself, and that was written by me, and looking back, there are quite a few things that do nothing

 

So I took a look at some GML tutorials today... wow, GML is an outrageously >>>>noob-friendly<<<<<<< language compared to everything else. I'm kind of tempted to see what I can get done with just knowledge I have now.

 

It's really only "noob-friendly" with drag and drop or basic gml

 

I'm still trying to learn advanced gml, and I am not quite ready to apply it to my games

Link to comment
Share on other sites

once you move out of simple gml codes, it gets really tricky when you start with the advanced

 

if youthink it's so noob-friendly, what do you think this means?

 

 

if not keyboard_check(vk_up)&& not keyboard_check(vk_right) && not keyboard_check(vk_down)&& not keyboard_check(vk_left)

{

vspeed = 0

hspeed = 0

global.animated=false}

if keyboard_check(vk_left)&& keyboard_check(vk_right)

{

vspeed = 0

hspeed = 0

global.animated=false}

if keyboard_check(vk_up)&& keyboard_check(vk_down)

{

vspeed = 0

hspeed = 0

global.animated=false}

if vspeed = 0 && hspeed = 0 && height=obj_waluigi.height

{global.move=false}

 

if obj_waluigi.y-y>24{vspeed = 0}

if obj_waluigi.y-y<-24{vspeed = 0}

if obj_waluigi.x-x>24{hspeed = 0}

if obj_waluigi.x-x<-24{hspeed = 0}

if global.talk = false

{

if keyboard_check(vk_up) && not keyboard_check(vk_left)&& not keyboard_check(vk_right) && not keyboard_check(vk_down) //up

{

{ddirection = 1

global.animated=true

script_execute(move_up4)

}}

if keyboard_check(vk_up) && not keyboard_check(vk_left)&& keyboard_check(vk_right) && not keyboard_check(vk_down) //up right

{

{

{ddirection = 2

global.animated=true

script_execute(move_up3)

script_execute(move_right3)

}}}

if not keyboard_check(vk_down) && keyboard_check(vk_right)&& not keyboard_check(vk_up) && not keyboard_check(vk_left) //right

{

{ddirection = 3

global.animated=true

script_execute(move_right4)

}}

if keyboard_check(vk_down) && not keyboard_check(vk_left)&& keyboard_check(vk_right) && not keyboard_check(vk_up) //down right

{

{

{ddirection = 4

global.animated=true

script_execute(move_down3)

script_execute(move_right3)

}}}

if keyboard_check(vk_down) && not keyboard_check(vk_left)&& not keyboard_check(vk_right) && not keyboard_check(vk_up) //down

{

{ddirection = 5

global.animated=true

script_execute(move_down4)

}}

if keyboard_check(vk_down) && keyboard_check(vk_left)&& not keyboard_check(vk_right) && not keyboard_check(vk_up) //down left

{

{

{ddirection = 6

global.animated=true

script_execute(move_down3)

script_execute(move_left3)

}}}

if not keyboard_check(vk_down) && keyboard_check(vk_left)&& not keyboard_check(vk_up) && not keyboard_check(vk_right) //left

{

{ddirection = 7

global.animated=true

script_execute(move_left4)

}}

if keyboard_check(vk_up) && keyboard_check(vk_left)&& not keyboard_check(vk_right) && not keyboard_check(vk_down) //up left

{

{

{ddirection = 8

global.animated=true

script_execute(move_up3)

script_execute(move_left3)

}}}

}

 

 

 

and uses scripts like this(move_up4 in this case)

 

if place_free(x,y-4)

{

move=true

if place_meeting(x,y-4,obj_hblock1) && z<16 {exit}

if place_meeting(x,y-4,obj_hblock2) && z<32 {exit}

if place_meeting(x,y-4,obj_hblock3) && z<48 {exit}

if place_meeting(x,y-4,obj_hblock4) && z<64 {exit}

{y+=-4}}

 

 

Absolutely nothing. Just some shit you threw together to confuse people. Either that, or you're a terrible coder.

 

if not keyboard_check(vk_up)&& not keyboard_check(vk_right) && not keyboard_check(vk_down)&& not keyboard_check(vk_left)
{
vspeed = 0
hspeed = 0
global.animated=false}
if keyboard_check(vk_left)&& keyboard_check(vk_right)

The last line right there is completely insignificant, it would never be reached because you already made sure that none of the arrow keys are being pressed.

Aside from that, it's obvious that this script controls an object with manual collision detection, and uses the built-in direction, hspeed (horizontal speed), and vspeed (vertical speed) variables to move the object.

And btw, there's more than 1 pointless thing in there.

  • You're if / thens are contradictory
  • You're calling external scripts to move the player where a simple addition or subtraction would be fine. (even if you're moving relative to the player direction, a simple x += speed * cos(direction*pi/180); y-= speed * sin(direction*pi/180); would suffice)
  • You're apparently only letting all the objects in the game be animated if the player is moving (which makes no sense)
  • You don't need to use manual collision detection, a simple drag and drop of the 'bounce off' or 'move to contact point' buttons would suffice. If there's extra whitespace between the player and the object, just edit the collision masks.
Link to comment
Share on other sites

 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.