Gamemaker studio 2.3: new gml features

Версии приложения

Изначально была одна версия программы, но впоследствии приложение разделилось на две редакции: упрощенную (Lite) и профессиональную (Pro). Профессиональная версия расширяет возможности игрового редактора, добавляя, например, функции:

  • создания многопользовательского режима;
  • импортирования и экспортирования ресурсов для совмещения разных проектов;
  • продвинутого редактирования изображений и анимаций;
  • расширенных средств программирования.

Профессиональная редакция также может работать в Windows 7 и других версиях. При запуске в ней отсутствуют всплывающие надписи, призывающие к обновлению до версии Pro, а в создаваемых программах нет логотипов.

Разделение приложения на Lite и Pro актуально для версии 8.0.

Используемые принципы игростроения

Возможностей редактора хватает для создания игр, подобных тетрису, арконоиду, пэкмену и т.д. Можно создать и красивые аркады, если задействовать творческий потенциал на всю мощь – функции приложения это позволяют. Все элементы, используемые программой для создания игры, называются ресурсами. К ним относятся:

  • спрайты;
  • объекты;
  • комнаты или уровни;
  • звуки;
  • фоны;
  • пути;
  • скрипты;
  • шрифты;
  • тайм-лайны.

Наиболее важными и одновременно простыми в усвоении являются первые пять ресурсов. Остальные четыре требуют дополнительного изучения, они помогают усовершенствовать игру.

Спрайтами называются изображения, которые используются для отображения на экране объектов. Другими словами – это картинки или анимации. Их можно нарисовать в самой программе или загрузить из внешних источников, например, большой встроенной библиотеки. Они могут иметь формат .png или .gif.

Объекты – основная составляющая игр. Это герои, враги, стены, препятствия, окружающие предметы мира и т.д. Объектам могут задаваться действия, например, реакции на нажатие кнопок клавиатуры, мыши или джойстика, реакции на столкновения с другими объектами, действия по умолчанию и т.д. При создании объектов используются принципы объектно-ориентированного программирования, но простота игрового редактора позволяет использовать эти принципы без их глубокого изучения.

Комнаты или уровни – это локации, в которых происходят игровые действия, и в которых находятся объекты. Комнаты плоские, двухмерные, но они могут имитировать и 3D-графику. Уровни можно оформить любым образом, использовать объекты-стены и декорации, загружать фоны и т.д. Можно настроить комнату так, чтобы при выходе все объекты в ней сохранялись или сбрасывались.

Фоны могут создаваться в самом редакторе игр, можно их загружать и с внешних источников. Вместо изображения можно применить только один цвет. Фоны используются и для других целей, не только в качестве задников.

Программа имеет библиотеку встроенных звуков. Совершая действия, объекты могут издавать те или иные звуки. Кроме встроенных эффектов, можно использовать загруженные звуковые файлы. Кроме спецэффектов, можно загружать и фоновую музыку.

Этих ресурсов достаточно для создания несложных, но увлекательных игр, которые запустятся даже на Windows 10. На воплощение задумки может понадобиться около часа. Чтобы игра засияла новыми гранями и стала глубже и интереснее, все ее элементы можно настроить скриптами, а для придания игровым функциям гибкости используются пути и тайм-лайны. Эти элементы требуют некоторых знаний об информационных технологиях, однако они не обязательны.

Runtime Changes

Many functions have been added in GameMaker Studio 2, the following sections outline those that have been added and those that have been removed, please consult the manual (Help -> Open Manual) for further info.

Our Windows Desktop Runner has also changed from using DX9 to using DX11 this may mean that there are some compatibility issues that may need to be addressed, there are some known issues at present

  • No Anti Aliasing implemented — all functions return 0 for the number of anti aliasing levels, we will implement this in the future
  • Line drawing — unfortunately line drawing is not consistently implemented by hardware vendors, this means that between different manufacturers and different drivers from the same manufacturer you may get different results, we reccomend that you do not rely on line drawing in released games, but the functions are still there for you to try.
  • Windows XP is no longer supported for games created using GameMaker Studio 2.

Возможности

Изначально автор приложения – Марк Овермарс – хотел создать обучающую программу, которая объясняла бы студентам принципы программирования. Однако постепенно разработка превратилась в игровой редактор. Он развивается уже более 15 лет, обрастая функционалом, что позволяет:

  • придумывать 2D-игры;
  • создавать презентации;
  • рисовать анимацию;
  • использовать программу в учебных целях.

Интерфейс приложения интуитивно понятен, окно содержит привычные для обычных пользователей строки меню и панели кнопок. В меню находится раздел справки, где можно увидеть обучающий ролик, объясняющий всю суть программы.

View Ports

  • room_set_viewport(room_ind,vind,vis,xport,yport,wport,hport) — set the viewport for a specific view in a specific room
  • room_get_viewport(room_ind,vind) — get the viewport for a specific view in a specific room (returns array — xport, — yport, — wport, — hport)
  • room_get_camera(room_ind,vind) — get the camera for a specific view in a specific room
  • room_set_camera(room_ind,vind,camera) — set the camera for a specific view in a specific room
  • view_get_camera(view) — get the camera for a view in the current room
  • view_get_visible(view) — get the visible status for a the view in the current room
  • view_get_xport(view) — get the xport for the view in the current room
  • view_get_yport(view) — get the yport for the view in the current room
  • view_get_wport(view) — get the wport for the view in the current room
  • view_get_hport(view) — get the hport for the view in the current room
  • view_get_surface_id(view) — get the surface_id for the requested view in the current room
  • view_set_camera(view,camera) — set the camera for a view in the current room
  • view_set_visible(view,visible) — enable or disable the visibility of a view in the current room
  • view_set_xport(view,xport) — set the xport of the view in the current room
  • view_set_yport(view,yport) — set the yport of the view in the current room
  • view_set_wport(view,wport) — set the wport of the view in the current room
  • view_set_hport(view,hport) — set the hport of the view in the current room
  • view_set_surface_id(view,surface_id) — set the surface_id for the view in the current room

Summary

Well, we’ve come to the end of this rather long blog post, and as you can see we’ve been working hard to improve the GameMaker Language and bring it up to par with other more common programming languages, We hope that these new features are of use to you, and that they help your workflow and enable you to make bigger and better games! Note that all the features discussed here are available from GameMaker Studio 2.3 onwards, and we recommend that you read the manual fully before using any of them, as there are details and nuances related to their use that we just haven’t got the space to talk about here. Also note that the 2.3 update includes a number of changes and improvements to the GameMaker Studio IDE which we’ll discuss a separate blog post.

Happy GameMaking!

Учебные ресурсы

Уроки инди-разработчиков

Список уроков Chevy Ray — Chevy Ray является разработчиком Flash-игрового движка FlashPunk, частый соперник на Ludum Dare и разработчик нескольких классных игр. Он написал несколько уроков по GameMaker, и это подборка тех его материалов, которые он считает лучшими. Уроки охватывают такие темы, как масштабирование вида, оптимизация скорости, параллакс-скроллинг.

Серия уроков Derek Yu’s  — Derek Yu является членом TIGSource и разработчиком Spelunky. Эта серия уроков для более старой версии GameMaker, но вы по-прежнему можете легко пройти ее. Это полное пошаговое руководство по созданию космической сайд-скроллер стрелялки; по мере создания вы узнаете, как работают игровые объекты, как создавать прокручивающиеся фоны, как создавать спрайт шрифты и множество других замечательных тем. Обязательно к прочтению.

Другие уроки и руководства

Официальные уроки — официальные уроки посвящены созданию нескольких игр разных стилей (некоторые из них 3D-игры, поэтому эти уроки могут быть особенно глубокими, если вы будете использовать GM:S). Кроме того, имеется урок по созданию многопользовательских игр, который, по моему мнению, является одним из лучших в Интернете по изучению создания многопользовательской игры в GM:S.

Я рекомендую их для людей, которые хотят разработать определенный тип игры и желают узнать как разрабатывать игры подобного типа, но если вы ищете урок для начинающих, я рекомендую уроки Derek Yu’s.

Также ознакомьтесь с официальными и неофициальными руководствами, поскольку они дают большой справочный материал.

Maths

  • matrix_build_identity() — return an identity matrix
  • matrix_build_lookat(xfrom,yfrom,zfrom,xto,yto,zto,xup,yup,zup) — builds a «look-at» (view) matrix for a camera at position (xfrom, yfrom, zfrom) and looking at a point (xto, yto, zto) with an up vector of (xup, yup, zup)
  • matrix_build_projection_ortho(width,height,znear,zfar) — build an orthographic projection matrix with width, height and a z range from znear to zfar
  • matrix_build_projection_perspective(width,height,znear,zfar) — build a perspective matrix with width, height and a z range from znear to zfar
  • matrix_build_projection_perspective_fov(fov_y,aspect,znear,zfar)- build a perspective matrix with field of view ange fov_y and an aspect ration and a z range from znear to zfar
  • matrix_transform_vertex(matrix, x, y, z, ) — multiply the given vector (x,y,z,w) by the matrix NOTE: if no w component given then it is treated as 1
  • matrix_stack_push(optional_matrix) — push matrix onto the matrix stack
  • matrix_stack_pop() — pop matrix from the top of the matrix stack
  • matrix_stack_set(matrix) — set the given matrix as the top of the matrix stacl
  • matrix_stack_clear() — clear the matrix stack
  • matrix_stack_top() — return the value at the top of the matrix
  • matrix_stack_is_empty() — return true if matrix stack is empty, false otherwise

Receiving Data

The next thing to tackle, is what happens when the client sends some data to the server. This comes in to the Async Network Event with a socket ID that isn’t the server’s, but a client socket that we’ve already connected with and added to our client DS map. This means all we need to do in the server network event code, is check that it’s not the server socket, and if it’s not then lookup the instance ID associated with the socket in the ds_map and start reading the data into there. So, conceptually we’ll have with something like this:

var eventid = async_load;
// Check the incoming socket ID against the socket ID we stored when we created the server
if server == eventid
{
// Incoming data is from the server so it's a connect/disconnect event and we can deal with it here
}
else if eventid != global.client // Don't deal with data coming from the client running on the device that also runs the server
{
// Deal with received data here from connected clients
}

We’ve covered detecting connect and disconnect, so what about the part where we receive the data? To start with, we want to get the data from the map:

var sock = async_load;
var inst = Clients;
var buff = async_load;
var cmd = buffer_read(buff, buffer_s16);

We have the client socket ID, the instances associated with the socket and the packet of data sent in the buffer. We also read the first bytes of data from the buffer as that will hold our event type value so we can tell whether this is a command for the player, or a ping, or the player name, etc… We would then check this in a or in an chain and act appropriately, for example:

switch (cmd)
{
case KEY_CMD:
    // Read the key that was sent
    var key = buffer_read(buff, buffer_s16 );
    // And it's up/down state
    var updown = buffer_read(buff, buffer_s16 );
    // translate keypress into an index for our player array.
    if key == vk_left  key = LEFT_KEY;
    else if key == vk_right key = RIGHT_KEY;
    else if key == vk_space key = JUMP_KEY;
    if updown == 0 inst.keys = false else inst.keys = true;
    break;
case NAME_CMD:
    inst.PlayerName = buffer_read(buff, buffer_string);    
    break;
case PING_CMD
    break;
}

Обучение GameMaker: Studio

GM:S предлагает два различных способа создавать игры. Первый это так называемый интерфейс Drag and Drop (сокращённо DnD). Он довольно мощный и позволяет создавать сложную логику. Однако, он не такой мощный, как второй вариант: использование языка программирования GameMaker Language (сокращённо GML). GML — это прекрасный язык сценариев, который может делать все, что может делать DND, и многое другое.

Начало работы

После того, как
вы загрузили версию движка GM:S которая соответствует вашим потребностям, вам следует ознакомиться с учебными материалами,
которые поставляются вместе с GM:S. Их можно найти во вкладке Tutorials после того, как вы откроете GM:S.

В начале уроков будет показано, как использовать drag and drop интерфейс, а более поздние руководства начинают охватывать язык программирования GML. Самое приятное в предложенных уроках — это то, что они фактически добавляют окно к
интерфейсу, в котором вы узнаете, как создавать каждую игру, поэтому вам
не нужно обращаться к веб-странице — все доступно изложено для вас в GM:S!

Я рекомендую
проработать столько, сколько вам нужно, до тех пор, пока вы не
почувствуете, что у вас есть четкое представление об общем процессе
работы и инструментах, которые предлагает движок GM:S. Дополнительные уроки вы можете найти на вики сайте YoYo games по адресу http://wiki.yoyogames.com/index.php/GameMaker:Studio_Tutorials включая некоторые более продвинутые руководства.

Для самого продвинутого обучения можно посмотреть демки на вкладке Demos после запуска GM:S. Они не откроют окно обучения, но они предоставляют доступ ко всему используемому исходному коду, чтобы можно было просматривать его, запускать отладчик и наблюдать за тем, что происходит, так что вы получите хорошее представление как использовать их методы в своих играх.

Руководство

Руководство по GM:S можно найти в меню Help в разделе Contents…. Это должно быть первым местом, где вы будете искать ответы на свои вопросы, если сразу перейти на форумы, люди по всей вероятности огорчат вас за то, что вы просто не проверили справку. Существует также онлайн-руководство, которое можно найти по адресу docs.yoyogames.com

Руководство в программе GM:S

Если вы выполняете поиск как в прилагаемом руководстве, так и в онлайн-руководстве и не можете найти ответы, не бойтесь! На reddit существует большое сообщество /r/gamemaker и есть официальные форумы. Кроме того, имеется отличный сайт полон инди-разработчиков, некоторые из них часто используют GM:S на форумах TIG. Эти сообщества полны полезных людей, поэтому не бойтесь задавать свои вопросы!

Structs

The next new feature that we want to discuss in GameMaker Studio 2.3 is the creation of structs. A struct is — to put it simply — a variable that holds a collection of other variables — you can think of it as a kind of «light-weight object». The variables that a struct holds can be of any data type and these variables can be read from and written to after the initial struct declaration, and you can also add more variables to a struct after it has been declared. It should also be noted that the contents of a struct are independent of the instance or script that created it, and as such you can — if you wish — use the built-in variable names like or and . One of the benefits of using structs is that (unlike instances), after the initial creation, structs have no processing overhead while they exist, although they will take up space in memory. The struct syntax is as follows:

So, an example of this in practice would be:

The above creates an instance scope struct in the variable «mystruct» and populates it with some values (structs can be created at local, instance and global scope, just like any other variable). Note that you don’t have to populate the contents of a struct when it is created initially and you can create an empty struct by simply doing this:

This struct can then be added to at a later point in the game code. Here is an example of a struct with various variables and data types:

You’ll notice in the above code that you can also define methods and use runtime functions in structs, and that you can use expressions consisting of any variable previously defined within the context of the struct itself, as well as any variable defined within the scope of the struct itself.

Once a struct has been defined, you can access the data within using the «point» notation, like this:

You can also perform operations on the variables within a structure or use them in functions, just as you would any other variable. For example:

Finally, structs can have other structs nested inside of them, like this:

To access such nested structs you would still use the point notation, like this:

When a struct is no longer required it can be removed from memory using the operator, which is another new GML feature added in the 2.3 update. This de-references the struct and hints to the garbage collector that it may be available for collection. This is not strictly required as the garbage collector may do this automatically in the following game steps if the struct is no longer referenced in your code, but it is good practice to do so and we recommend it (for example, call delete in the Clean Up event of an instance to explicitly tell the garbage collector that an instance scope struct is to be deleted).

Also note that structs can be created using functions, which requires the use of the operator and the keyword (two more new features to GML), as shown in the following example:

Here we are creating the function and telling GameMaker Studio 2 that this is a function for making a struct by adding the keyword after the definition. You can then call this function like this:

Now the variable v1 will reference a struct with the variables x and y and the static method variable .

Note that there are other additional functions for structs, specifically:

Check the manual for details of how these functions should be used.

Полное описание программы GameMaker Studio

С Гейм Мейкер Студио создать игру интересную, захватывающую своим сюжетом вполне реально. Программа имеет довольно простой и одновременно удобный интерфейс, в нем есть всё, с чем вам придётся иметь дело: шрифты, звуки, изображения и музыка, а также другие ресурсы, которые понадобятся для создания игр.

Среди молодых людей всё больше набирает популярность разработка компьютерных игр и видео игр. Не секрет, что многие геймеры просто мечтают создать свою уникальную игру. Большая часть пользователей задаются вопросом: как создавать компьютерные игры, каково быть разработчиком игр?

В наше время процесс разработки компьютерной игры стал максимально простым благодаря специальным программам игростроения. Для кого-то создание игр стало работой и приносить доход, а для кого-то хобби.

Game Maker не требует от пользователя знать какой либо язык программирования. Система Drag and Drop (бери и бросай) облегчает процесс создания игры, а подключаемые библиотеки (*.dll файл) могут расширить возможности программы в разы.

Особенности программы GameMaker Studio Free:
— бесплатная в отличие от других версий конструктора (Professional, Master Collection);
— кроссплатформенность;
— свой язык программирования, который напоминает JavaScript. Это GML (Game Maker Language);
— неограниченный выбор жанра игры;
— подключаемые дополнительные библиотеки;
— возможность создать 3D игру.

Подсказки:
*При первом запуске старых версии Вам предложат обновить программу, нажмите remind me later — напомнить позже.
*Не рекомендую настраивать автоматическое обновление для руссифицированной версии.
*Для использования программы требуется регистрация.
*Русификация версии 2.0.6.146: скачать русификатор GameMaker Studio 2.0.6.146 (ссылка ниже).
Распакуйте архив с русификатором. Скопируйте файл russian.csv из архива в папку Languages, которая находится в папке с установленной программой, по умолчанию это путь C:\Program Files\GameMaker Studio 2\Languages. В верхнем меню интерфейса программы выберите File->Preferences->General Settings->Русский. (см. верхний скриншот). Теперь GameMaker Studio 2 на русском!

*Русификация версии 1.2.1135: скачать русификатор GameMaker Studio 1.2.1135 (ссылка немного ниже).
Распакуйте архив с русификатором. Откройте новый проект — new-> create. В верхнем меню интерфейса программы выберите Help->Open GameMaker in Explorer. (см. скриншот). Откроется директория расположения программы на вашем жёстком диске. Переместите или скопируйте файлы из папки руссификатора в эту директорию. Перезапустите, GameMaker будет на русском.

Рекомендуемые системные требования: Оперативная память: 4 ГБ; Graphics: 128 MB; DirectX: 9.0; 1Gb свободного места на жестком диске

Название приложения: Автор/Разработчик: Версия/сборка: Дата обновления: Размер скачиваемого файла: Операционная система: Наличие русского языка: Распространяется: GameMaker: Studiowww.yoyogames.com2.2.0.343 Standard free2020-01-26179 МБWindows 10, 8, 7, Vista, XPрусификаторбесплатно (Free)

Скачать Game Maker Studio v.2.0.6.146руссификатор GameMaker Studio 2.0.6.146Скачать Game Maker Studio v.1.2.1135руссификатор для v.1.2.1135

Где я могу получить GameMaker: Studio?

Основной сайт движка GM:S — это http://www.yoyogames.com/. Вы можете загрузить бесплатную версию или приобрести одну из лицензионных версий.

Ниже приведено сравнение различных версий GameMaker, взятых с веб-сайта YoYo Games:

Как вы видите, бесплатная версия (Studio) довольно ограничена, но это отличный способ увидеть рабочий процесс и расположение инструментов, а также потратить некоторое время на изучение языка.

Обновление: Бесплатная версия GameMaker: Studio теперь та же, что и стандартная версия! Для получения дополнительной информации см. GameMaker: Studio будет бесплатной.

Стандартная версия отлично подходит для разработчиков одиночек, которые только планируют разработку компьютерных игр; Профессиональная версия идеально подходит для небольшой команды разработчиков планирующих переходить в конечном итоге на кроссплатформенную разработку, поскольку они могут добавлять различные модули с течением времени после получения некоторого дохода; и Master Collection отлично подойдет для небольших команд, которые являются частью созданных студий, и хотели бы использовать кроссплатформенную разработку с самого начала.

GM:S также
доступен в Steam, но я бы рекомендовал не покупать его там, так как
YoYo Games не знает, что вы его приобрели, и,
следовательно обладателям их продукта будет больше хлопот в отделе обслуживания клиентов. Кроме
того, они иногда предлагают дешевые апгрейды для тех, у кого уже есть определенная версия GM:S, и они не могут дать то же обновление пользователям купившим в Steam. Кроме того, если вы покупаете у Steam, то необходимо войти в Steam, чтобы запустить GM:S, а это может раздражать.

Connecting / Disconnecting

How will the server get the data that the client sends out? As already mentioned, we’ll be using the Asynchronous Network Event in the «oServer» object:

The Async Network event creates a new and assigns to hold it, and this allows us to look up everything we need, and this lets us decide on the current course of action.

var eventid = async_load[? "id” );

Here we get the unique socket ID of the socket that threw the networking event. This can either be the server ID, or an attached client ID. If it’s the server ID then we have a special connection/disconnection event type being triggered, and it’s at this point that we can start creating new players for the attaching client or throwing them away if they disconnect.

So, to tell if it’s a connection or a disconnection, we’ll check the event “type” in the ds_map:

var t = async_load;

We can check now for one of the built-in GML constants, in this case we check to see if it’s . If it is, then we can get the new socket ID and IP of the connecting device:

if t == network_type_connect
{
 var sock = async_load;
 var ip = async_load;

The variable will hold the ID that has been assigned to the connecting client, which will remain the same for as long as the client stays connected. We can therefore use this as a lookup for any client data. We can now store the socket ID in a DS map that we’d initialise in the Create Event of our oServer instance, and associate with that socket an instance ID of a new player instance that we create:

 var inst = instance_create_layer(64,192, "Instance_Layer", oPlayer);
 ds_map_add(clients, sock, inst);
}

Now when a client is connected, we store the socket ID along with the instance ID in the DS map, and now, whenever some incoming data arrives from the client, we can simply lookup the instance using the incoming socket ID and then assign the data as needed.

To detect a disconnect we need to check and see if , then get the ID of the socket, look it up in the DS map, then delete that map entry and destroy the player instance associated with it:

if t == network_type_disconnect
{
var inst = Clients;
ds_map_delete(Clients, sock);
instance_destroy(inst, true);
}

Возможности

Структура игры, созданной в программе Game Maker, состоит из набора разнообразных объектов. Их дизайн редактируется с помощью спрайтов, а поведение описание реакции на те или иные действия игрока. Процесс создания напоминает работу с блок-схемами и использует режим drag-n-drop (перетаскивание специальных иконок с действиями в ячейки событий). Для совсем опытных юзеров создан свой собственный язык GML (напоминающий JavaScript). Он поддерживает синтаксис популярных языков (PHP, JS, Pascal), поэтому для написания кода можно использовать один из них. Это значительно расширяет возможности пользователя.

Программа имеет встроенный редактор позволяющий настроить поведение и внешний вид объектов, создать различные цели, которые надо выполнить игрокам, задать время для этого.

Обновление добавило поддержку HTML5. Это позволило разрабатывать приложения не только для компьютеров и мобильных телефонов, но и интернет браузеров.

Основные возможности:

  • создание двухмерных игр без знания основ программирования;
  • возможность использования режима drag-n-drop (дословный перевод – перетаскивай и бросай);
  • использование собственного скриптового языка GML (Game Maker Language), похожего на JavaScript;
  • создание собственных библиотек действий с помощью Library Maker.

Быстро и без особых усилий можно создать простую игру со своими правилами и целями. Благодаря этой программе пользователь может получить новые навыки и проявить творческие способности, даже без глубоких знаний языков программирования. Специалисты используют дополнительные скрипты, чтобы расширить возможности GM. Начинающие программисты используют ее для расширения своих знаний и получения опыта в сфере создания игр.

Встроенная система звуков поддерживает различные форматы аудиофайлов, но дополнительно созданы специальные DLL библиотеки.  Можно добавлять фоновую музыку или эффекты.

Системные требования очень простые и позволяют запустить GM на системах с операционной системой Windows XP и выше. Качественный русификатор позволит без проблем использовать все возможности и функции, а простой и дружественный интерфейс – быстрее разобраться даже неопытным пользователям.

Sockets

To start with, let’s talk about sockets. The actual definition of a socket is «one endpoint of a two-way communication link between two programs running on the network», so for a game being run on two different devices to talk to each other, each will need to have a socket connected to the other. We’ll be doing this initially using TCP/IP connections, which is what the internet is based on (IPv4 to be more precise). This in essence will let you connect one socket using an IP address (let’s say 192.168.1.10) to another socket on another IP address (say 192.168.1.11). Once connected, the two sockets can send data back and forth using the function and the Network Asynchronous Event in GameMaker Studio 2, but we’ll get more into that later in the tech blog.

IP addresses also have what are called ports. Instead of programs having to read and deal with every bit of network traffic coming into a device, IP addresses are linked with ports which are given a value ranging from 0 to 65535. This allows each program to «listen» to only a specific port number to get just the packets that are relevant to it, and not everything that’s coming in. This saves considerable CPU time, as it seriously cuts down on data processing. One thing you should note though, is that some ports are already in use by your system, and so you should try to pick an appropriate port number for your sockets. You can see a general list of port values and their uses http://en.wikipedia.org/wiki/ListofTCPandUDPportnumbers.

So to reiterate over what’s been said: A socket is a connection point bound to a port on an IP address. It can be either a client socket — and so can send and receive data — or it can be a server socket and “listen” to a port to get connection/disconnection information as well as send and receive data. This means that the typical flow of events in a game would be:

  • create a server socket
  • tell it to listen to a port
  • have a client try to connect to the socket
  • the server connects and creates a “link” between the client and server sockets

Once the link has been established the game can then freely send data back and forth.

Расширения

Если вам не хватает встроенных функций движка GameMaker, не волнуйтесь; он расширяемый! Бесплатная версия не позволяет использовать расширения, но в платной версии это возможно.

Что могут делать расширения?

Расширения добавляют новую функциональность, изначально не предусмотренную YoYo games. Вот некоторые примеры:

GiiMote — позволяет разработчику интегрировать WiiMote элементы управления в свою игру, добавляя функции, которые опрашивают состояние WiiMote (положение и нажатие кнопок).

FX Creator Extension — упрощает создание таких эффектов, как погода, лучи и брызги воды.

Взаимодействие с базами данных с помощью SQL — позволяет вашей игре подключиться к базе данных SQL, получить данные в виде строки, а затем использовать их в игре. Расширение
добавляет такие функции, как и так, что вы можете получить данные обратно в виде двух строк кода.

Одно серьезное ограничение — некоторые расширения несовместимы с мобильными платформами.

Как их установить

  1. Необходимо загрузить расширение — это должен быть файл .
  2. Щелкните правой кнопкой мыши папку Extensions в GM:S и выберите Add Existing Extension.
  3. Это должно вызвать диалоговое окно, и в правом нижнем углу вы увидите кнопку с надписью Install. Нажмите ее.
  4. Откроется другое диалоговое окно со списком установленных пакетов (возможно, пустым). Справа от этого окна есть кнопка, которая снова с надписью Install. Нажмите ее.
  5. Это открывает еще одно диалоговое окно; перейдите в папку, в которой сохранен файл , щелкните его и нажмите кнопку Open.

Становимся профессионалом

Несколько GameMaker игр стали коммерчески успешными, и есть много других великолепных GameMaker игр, которые являются прекрасными примерами того, что возможно создать используя GM:S.

Отточеные игры

Spelunky — оригинальная версия Spelunky была создана в GameMaker; более новая XBLA версия и новая ПК-версия игры, нет. Это коммерческий успех, версия, созданная в GameMaker, бесплатная.

A Nation of Wind — эта игра скрытый драгоценный камень и в нее стоит определенно поиграть.

Dustforce — вышла в Steam, это не был огромный коммерческий успех, но тем не менее, это отличная игра!

Light functions

  • draw_light_define_ambient(col) — set the ambient light colour for lighting, replacement for d3d_light_define_ambient
  • draw_light_define_direction(ind,dx,dy,dz,col) — set the light ind as a directional light for a given directional vector with colour, replacement for d3d_light_define_direction
  • draw_light_define_point(ind,x,y,z,range,col) — set the light ind as a point light for a given position and range with colour, replacement for d3d_light_define_point
  • draw_light_enable(ind,enable) — enable or disable a specific light
  • draw_set_lighting(enable) — enable or disable lighting
  • draw_light_get_ambient() — get the ambient light colour
  • draw_light_get(ind) — get the settings for a given light (returns array with — enabled/disabled, — light type (point or direction), — x, — y, — z, — w, — colour)
  • draw_get_lighting() — current status of lighting (enabled or disabled)

Для начинающих

Game maker studio подойдет для амбициозных людей с интересными идеями по созданию прототипа игры. Сейчас большая проблема хорошей идеи для создания игры является в её реализации, так как для этого необходимо знания языков программирования. Этот движок даёт возможность создания игры без прибегания к программированию, написанию скриптов.

Очень хорошо подойдет для первого тестового создания механики задуманной игры, так как главное для начала понять интересен ли будет сам gameplay, и только после тестирования можно будет приступать к подробному созданию и улучшению графической части игры. Вот для таких целей и подойдет Game maker studio, она даёт возможность быстро и легко реализовать такого рода задачу.

Drag and Drop (DnD ) это графическая среда разработки, которая идеально подходит для начинающих или тех, кто более визуально или художественно ориентированы. С помощью DnD возможно создать игры без написания скриптов, используя только интерфейс программы.

Так же для начинающих в работе Game maker studio поможет русифицированный интерфейс, который можно найти на форумах этого движка. На официальном так же присутствует большое количество документации и инструкций по работе с движком.

Animation Curves

The next new feature we want to discuss here is a new top-level resource called Animation Curves. An animation curve is an asset that contains one or more curves that represent how a value changes over time, and can use linear interpolation or smooth interpolation to go between different points in the curve. The values you set can be between -1 and 1 (by default) on the vertical axis and the duration along the horizontal axis is always normalised form 0 to 1, making it easy to target different time ranges using multipliers in your game code.

Animation curves are comprised of «channels» and each channel can have its own curve settings, which permits you to — for example — describe a spacial position with two channels for the x/y position, or a colour gradient with 4 channels to represent a colour format. Animation curve assets can be used when working with sequences and can also be accessed using code, making them a powerful tool when creating your games.

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий