Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
That aside; yes - you have a chance. It takes a lot more effort than it seems, but you do have a chance.
imo, most ppl couldn't design a solid game.
great games despite the public opinion , why so.
Simple, what makes a great game does not necessary have to be a popular game or a game that every one likes it. That's just types which ppl may prefer or not to play.
A great game will have criteria that does not matter which type of a game you make.
A great game does not mean it will be a hit.(well it might, great game has better chances to conquer ppl's heart)
Great game, what makes it so great? Now that is a good question! which can not be answered with a simple answer!
So, try to analyse the various aspects of the game, like how the commands are well responsive.
How "lagless" it is.
....
keep making this list until you start get more specific of the type the game you are working on such as:
what objective?
what makes it fun?
etc.
Every idea is a nice one, but does not mean it will have a good place in a game, sometimes it will and sometimes it will not. figuring what makes more sense and not, what adds and subtract....
That is the real challenge when it comes to make a great game.
So yes, there are a lot of great game out there and a lot of garbage.
(even if the game idea or type of the game is the best you could find, it will mean nothing if it is badly implemented or done)
And yes anyone can do it if put the efforts in the right place!
If you feels don't have the skills to do it, why not go find the skills first? and that does not mean it must be you that have the skill. Mind you, you just need to have the skill at your disposal doesn't matter how.
https://www.youtube.com/watch?v=cdJoJdtFbwc&list=PLSFMekK0JFgzbFfj1vAsyluKTymnBiriY
/// @arg object
/// @arg accleration
/// @arg max_speed
var _object = argument0;
var _accleration = argument1;
var _max_speed = argument2;
var _bounce_direction = point_direction(_object.x,_object.y, x,y);
motion_add(_bounce_direction, _accleration);
if speed > _max_speed
{
speed = _max_speed;
}
the script is bounce_off_object(other,0.025,max_speed)
we made a collision for o_enemy, we have multiple enemies in the game, and when they colide with each other they bounce off each other, now creating the ///@argu, i believe allows us to make this a function of our own. I don't understand the use of making something = to argument0; or argument1; so on, if im CORRECT, this basically allows us to make bounce_off_object(other,0.025,max_speed) other being arugment0; and 0.025 is argument1; i think it allows like a custom function if that makes sense..... but what really throws me off if the var _other, because we just created that variable in our own world... how does GML know _other to be the o_enemy we are talking about, _other was a local variable created in this script, and we're referincing that in our created script as other, idk if this makes sense what im saying but hopefully you can understand what im trying to say
sprite_add()
and since it's the first argument (argument0)
it will be
sprite_add(inputtoargument0,anyotherargumentsafterthis)
So _object is a reference to whatever is entered when you call that script.
So In your example:
Take a script named sGetEnemy
It has the line
var _Object = argument0;
Now, in another place for code you decide to use this script:
sGetEnemy()
You input argument0
sGetEnemy(oEnemy)
Now _Object is a reference to oEnemy in the script.
I hope I've explained this well enough, steam forum post is kinda hard to read for programming.
think about it?
the body of the snake you must make it so you know where it is, more than that you must also know where the tail is.
It is very simple solution for that but maybe be not that easy to find it.
Basically you need 2 objects only, really.
few things you must do to make this game, one is to decide the size of the cells.
the game screen is filled with those cell, so it gets us the idea of a grid right?
the background can be easily turn into this grid with the size of the cells you specify by using tiles.
So learn to detect tile for collision!!
and make a temporizer so the snakes moves are controlled in the right frame.
Now to track the body of the snake, just make a grid, yeah, ds_grid. With the same size in cells as the tile layer.
so lets say you do each cell with size 16x16 pixels and make 40x40 cells per stage(tile layer), this alone is a kind of grid, now analogically you create a ds_grid [40,40] to correspond the tile layer.
So first object is the player , the snake head, you can put all the code here if you want. I did create another , third object to handle somethings separately.
You make it walk and as it walk it will paint the last position to 1 in the ds_grid. the ds_grid will start with 0s to all cells.
now every time it paint(put the value 1 to the last position) you will make a check in the whole grid with a FOR loop and every value except 0 you will add +1. This will update the track the snake makes.
after this update you will turn all values that are greater then the snake size back to 0.
example:
head is in position [15,15] and move to the right -> so now it is at [16,15]. here you have the current position and the old_x_position. This old_x_position which is at value 0 in the ds_grid will be set to 1.
then you make the update of this grid adding +1 to whatever value that is greater than 0.
and the snake will walk again by now leaving another 1 behind.
So the value which was 1 now it is 2, with another 1 in the sequence.
so now it is like this:
(number represents the body, and the head is represented only here as example with the letter H)
[2][1][H]
[3][2][1][H]
[4][3][2][1][H]
and so on, the snake will always leave the value 1 behind, that the beauty of it, you don't have to worry where it will be. Next step will be the update that will add +1 to the older value registered, that way you know where the snake walked and you can know how to cut it off. Lets say the size of snake is 4, so in the update you turn every value greater than 4 to be 0 again.
Now the worst part is solved.
all to do now is to draw this ds_grid to the screen. There!done!
The vitamin(or fruit, food, whatever) you just make the test collision using GMS2 built in function in the object panel option to test if it collides with player to do stuff and just random its position. You never need to destroy any object or create new one, just its position.
So the fruit object will add to the fruit counter for you use to increase the snake body.
Now for collision you must track 2 types of collision, (the fruit collision is already done), the walls which are tiles mapped in the tile layer. And the collision with the body which is in the ds_grid you made, it has the track of the body there.
in the same FOR function you will test both at the same time so you be analogically consistent with the two maps.
when you test tile collision at [1,1] for example it will also test at the same position in the ds_grid for the body part, either of them throws a collision process, and you do whatever you like...other than that the snake will walk.
Sry if iv got confused. I can do better, but i'm really in a hurry, hope you could get the trick part as to track the body part and make it grow.
Try finding the way by yourself, it is a very good game to practice programming skills!!
another one is Tetris!!