SINILIAN SINILIAN

Jusper, из того с чем я уже столкнулся, так это четырех этапное заполнение бланков и анкет, на каждом этапе вагон всяких пунктов некоторые из которых вызывают сомнения в уместности таковых. Вроде сделано просто...

Jusper Jusper

Посмотрел ролик, услышал на мягком повороте звук трения колес, который напомнил мне, как в свое время я делал появления следа и звука. Очень интересно будет послушать про опыт Discord магазина, у меня все руки не доходят туда опубликоваться...

ruggaraxe ruggaraxe

Выглядит очень круто! Скорее бы обновление.

alexprey alexprey

SINILIAN, думаю еще рановато, но подготовиться стоит)

SINILIAN SINILIAN

Можно уже писать шутки о физике в юнити?

Jusper Jusper

Dreaman, правильно ли я понял, что визуал это как бы дом главного героя и типа за дверью тот самый мир по которому мы путешествуем?

Dreaman Dreaman

Mariya,

Закончила скульптинг домика главной героини!

Dreaman Dreaman

В игре "Mental State" сделан новый начальный экран с новым главным меню.
https://vk.com/mentalstate_game

Jusper Jusper

Mariya, отличный скульпт! Как раскрасишь текстурами, обязательно покажи :)

Mariya Mariya

Закончила скульптинг домика главной героини!

https://vk.com/magevisions

alexprey alexprey

Jusper, все бабки просто на контракты и ушли или сроки поджимали, сам же знаешь как это обычно бывает 😉

Jusper Jusper

alexprey, смешно. Вбухать такие бабки в контракты и не подготовить оптимизацию магаза :)
Просто, видимо EGS как и Unreal для владельцев самых топовых машин.

alexprey alexprey

Jusper, они видимо не планировали такой наплыв пользователей. Или по глупости. Бывает такое)

Jusper Jusper

Raised,

Стиму бы не помешал редизайн налоговой политики.

Raised Raised

Стиму бы не помешал редизайн налоговой политики.

alexprey alexprey

Jusper, меня обнесло мимо)

Jusper Jusper

alexprey, это ты еще мобильный клиент не видел, наверное.

alexprey alexprey

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

Jusper Jusper

alexprey,

Ого, статистика и в правду очень интересная... Значит ли это, что стимоводы не очень охотно хотят переходить на другую цифровую площадку? И связано ли это с баджами и наигранными часами?

alexprey alexprey

EfimovMax, да, при уточнении того, что в основном эта консольщики, выводы уже становится тяжелее делать :D

EfimovMax EfimovMax

alexprey, было ещё уточнение, что большинство из этих пользователей - консольщики. Какие выводы отсюда можно сделать непонятно, но ситуация интересная.

alexprey alexprey

Интересная статистика от Эпиков: 40% пользователей Epic Store не пользуются Steam вообще. Всего в магазине зарегистрировано 85 миллионов аккаунтов меньше чем за четыре месяца работы Epic Store.

Ого, статистика и в правду очень интересная...

EfimovMax EfimovMax

Jusper, в самом блоге про это не очень ясно: там сказано, что система автоматически фиксирует необычные активности, все обзоры блокируются и только после Valve оповещает разработчиков. Возможно, последнее слово именно за разработчиками ...

Jusper Jusper

Информация из комментов: эта система активируется самими разработчиками по их желанию.

vladwireframe vladwireframe

Опубликовали новый арт

"Я уверен, что причиной этому — он. Несколько раз я его видел. Это какой-то Туман, но явно не обычный. От одного взгляда на него меня воротит, одному черту известно, что творится внутри...

...
Mariya Mariya

Jusper, Спасибо!
Персонаж - это Cirno из Touhou Project, она ледяная фея отсюда и цветовая гамма. :)

Jusper Jusper

Mariya, выглядит довольно неплохо. Большой перебор синего, отсюда вопрос - есть ли пример окружения, где моделька будет использоваться?

Jusper Jusper

yo_serjio, первый это просто бомба!

rommio_g rommio_g

Jusper, в том-то и проблема, что на видео порой не хватает времени. В любом случае, в ближайшем будущем переделаю трейлер к игре, а то старый - совсем старый) Многие спрайты, в том числе анимации, были перерисованы...

Логотип проекта Game Maker

Основы GML: Переменные, условия, циклы.

Всем привет. Это будет мой первый урок, как на этом сайте, так и вообще, поэтому прошу оценить и, по возможности, указать на ошибки.
Итак, читатель, ты перешел к замечательному конструктору игр Game Maker! Но, как известно, начинающему игростроителю хочется более гибких вещей, чем кнопки и стандартные действия. На помощь нам приходит Game Maker Language (GML), о котором в последствии и пойдет речь.
Однако, мы не будем медлить, и приступим.

Организационный момент
Итак, цикл моих уроков будет требовать от вас:

  1. Начальные знания ГМ. Уметь худо-бедно делать игры на кнопках.
  2. Game Maker версии 8, Pro редакции. Я не запрещаю использовать другие версии, но все примеры наверняка будут работать в этой версии и выше.
  3. Голова на плечах, терпение и труд.

Если нам потребуется еще что-то по ходу пьесы, то я об этом предупрежу.

Вы готовы? Начнем-с!

Переменные

Первое понятие, которые вы должны усвоить - это _переменные_. Без них создание игры немыслимое дело. Так что это такое? Посмотрим на научное определение:
*Переменные* - это особый вид данных, способный хранить или изменять в себе определённое значение.
У каждой переменной есть своё _имя_. У имён переменных есть свои правила и ограничения

  1. Имя переменной может состоять только из букв латинского алфавита, цифр и символов подчёркивания _
  2. Первым символом в имени не может быть цифра
  3. В имени не может быть пробелов
  4. Максимальное длина имени - 64 символа

Чтобы запихнуть какое-либо значение в переменную, нам стоит прибегнуть к операции присваивания.

<переменная> = <выражение>;

Как она действует? Очень просто, она перекидывает все из правой части в левую.

Непонятно? Смотрим пример.

a=5; //Все верно.
b=a+15; //В выражении могут быть и арифм. действия. Когда мы вызываем переменную справа от знака присвоения, то она заменяет себя на значение, что в ней хранится. В данном случае это a=5, и фактически это выражение можно понять так b=5+15
c=a+b; //Выражение может состоять полностью из переменных.

Какие могут возникнуть ошибки:

123abc = 16; //Неприемлемо, ибо имя переменной не может начинаться с цифры.
vasya pupkin = 56; //В имени переменной не может быть пробела
привет = 1; //Переменную нельзя называть по-русски
c; //Что с? Ничего не происходит - это ошибка.
c 77;//Пропущен знак операции присваивания =
c=; //Неверная запись, в правой части обязательно должно что-то быть
=77;//Неверная запись, в левой части обязательно должно что-то быть

Но, не числами едиными жив человек. В ГМ существует 2 типа данных - числа и строки. Для чего это? Чтобы исключить возможность ошибок.
Чтобы дать понять, что это строка, надо заключить текст или цифры(!) в двойные или одинарные кавычки. Внимательно рассмотрите пример.

a=’Привет’; //Можно так
b=”Автор”; //А можно и так
c=’123’; //Это - строка
d=56+c; //Тут притаилась ошибка, ведь 56 - это число, а ‘123’ - строка
e='5'; //С этим все понятно, надеюсь
f=e+c; 

Последняя строка нуждается в объяснениях. Думаете, в переменной *f* будет '127'? Нет, в ней будет '5123'. Тут не действует переместительный закон сложения, потому что если бы мы написали f=c+e, то в переменной *f* было бы значение '1235'. Это важно понимать.

Условия

В жизни нам часто приходится сравнивать какие-то вещи. Что больше - 5 или 10? Кто выше - Петя или Вася? А кто из них сильнее? И другое. Такие проверки нам позволяет и GML с помощью оператора if, или оператор условия. Различают полный и не полный оператор, вот их конструкция:

//Полный
if (условие) {
      действия
} else {       
      действия
}

//Неполный
if (условие) {
      действия
}

Объясняю популярно, как это действует. ЕСЛИ (if) <условие> ИСТИННО, ТО ВЫПОЛНИТЬ <действия>. ИНАЧЕ (else) ВЫПОЛНИТЬ <действия>. В укороченной форме, очевидно, вторая часть отсекается. Рассмотрим на конкретном примере

a=50;
b=20;
if (a>b) {
    c=a-b;
} else {
    c=b-a;
}

Что этот кусок кода делает? Он сравнивает два числа, и из большего вычитает меньшее. Поскольку мы еще не умеем задавать случайные числа, то мы задали конкретные значения - 50 и 20. Как сравнивать числа с помощью знаком нам знакомо со школы, но давайте я вам напомню кое-что:

> - больше
< - меньше

= - больше или равно

<= - меньше или равно
!= - не равно
== - равно

Теперь поговорим о сложных условиях, так как не все так легко в нашем временном мире. Давайте поставим задачу:
Если переменные а и b равны *и* больше нуля, то их надо сложить, а иначе - вычесть.
Как бы эту задачу мы решили сейчас? Вот так:

a=50;
b=50;
if (a==b) {
    if (a+b>0) {
        с=a+b;
    }
} else {
    с=a-b;
}

Забыл упомянуть, что в условии могут быть еще условия, чем бы собственно сейчас и воспользовались. Как громоздко для решения такой простой задачи, может быть есть более изящный способ? Да, он есть. Смотрим:

a=50;
b=50;
if (a==b) && (a+b>0) {
    c=a+b;
} else {
    с=a-b;
}

Вот и все. Но что же означает

(a==b) && (a+b>0)

эта запись? Это так называемые сложные условия. && можно заменить союзом и. Существует также || - его можно заменить союзом или. Есть и другие бинарные операторы(&&, ||), но мы поговорим о них позже.

Циклы

А вот это уже серьезная тема. Для начала разберемся, зачем нам это надо. Например, мы ходим 10 раз прибавить к переменной a число 10. Конечно можно тупо в лоб, 10 раз повторить одну и ту же строчку. Но программист - ленивый и дальновидный человек, так и были изобретены циклы.
1. Цикл Repeat
Как же всё-таки решить нашу задачку? Прибегнем к помощи цикла repeat, и наш код приобретет вид:

a=0;
repeat(10) {
     a+=10;
}

В использовании, как видим, Repeat очень прост. Пишем ключевое слово repeat, в скобках пишем, сколько раз повторить, и в фигурных скобках пишем, какие действия. Что означает а+=10? Я же говорил, что программисты люди ленивые. И вместо такой записи:

а=а+10;

Можно использовать другую:

а+=10;

P.S. - Данная запись относится не только к сложению. То есть можно использовать и записи вида: a*=10, a/=10, a-=10

2. Циклы с пост-условием и с пред-условием
Все бы хорошо, но когда мы не знаем, сколько раз нам нужно выполнить то или иное действие? Что делать? Например, добавлять к переменной а число 10 до тех пор, пока а не станет равным 100. Мы конечно знаем, сколько раз надо это сделать, но в целях обучения притворимся, что не знаем =)
Так что же делать? Выход есть - воспользоваться циклами с условиями. Их существует всего два - While и Do...Until.
Решаем задачу с помощью цикла While:

a=0;
while (a!=100) {
     a+=10;
}

Цикл While называется циклом с пред-условием, поскольку сначала проверяется условие, а потом выполняются действия. Конструкция его ясна-понятна:

While (условие) {
   действия
}

Теперь рассмотрим решение задачи с помощью цикла Do...Until:

a=0;
do {
   a+=10;
} until (a!=100);

Да, цикл Do...Until работает как некоторые люди в наше время. Сначала он делает, а потом думает. Эта конструкция зовется циклом с пост-условием, по причине, описанной выше. Особого разбора здесь тоже не нужно:

do {
   действия
} until (условие)

А какая же между этими циклами разница, спросите вы? Ведь и тот, и другой, проверяет и делает. Но цикл While может не выполнится ни разу, а вот Do...Until хоть один раз, да сделает свое дело.

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

*break*
Если break используется в цикле for, while, repeat, switch, или в выражении with, то оно завершает выполнение цикла или оператора. Если break используется вне этих выражений, то оно заканчивает выполнение программы (не игры).

*continue*
Если continue используется в цикле for, while, repeat, или в выражении with, то выполнение цикла с текущим значением прерывается и происходит со следующим значением.

*exit*
exit просто завершает выполнение скрипта или части кода. (exit не завершает выполнение игры!)

P.S. Также существует еще один цикл - For (цикл-счётчик), но сейчас я его объяснять не буду. Когда доберемся до массивов, вы ощутите всю его мощь, а сейчас нет особого толку о нём рассказывать.

Заключение

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

a=20 div 6;

В переменной а окажется 3, поскольку 6 умещается полностью в числе 20 всего 3 раза.
Также можно узнать остаток от деления на какое-либо число:

a=20 mod 6;

Теперь в переменной а окажется 2, потому что это остаток от деления на 6. То есть, можно вывести формулу нахождения остатка:

a = b - b div num;

Где b - число, от которого мы хотим узнать остаток, а num - число, на которое делим.
Для того, чтобы материал укрепился, я прикреплю файл, в коде которого вы должны будете исправить ошибки. Вот и всё, встретимся в следующем уроке!
Ссылка

Здесь еще никто не оставил комментарий