Game Maker - создание игр | HellRoom Games
Апрель 23, 2025, 11:53:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1] 2   Вниз
  Печать  
Автор Тема: [GMS] Ошибки раннера и компилятора (описание и причины)  (Прочитано 38499 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MusNik
KeeVee Games
GM Pro user
*

Репутация: 733
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+500 репутации]За отличную игру Rock painting story!За помощь в развитии форума!За отличные статьи по Game Maker!...
API: GameMaker Studio 2
Сообщений: 3241



WWW
« : Ноябрь 24, 2012, 23:27:17 »

Когда-то давно меня посещала мысль собрать команду для перевода справки GMS, но сознав, что все ленивые ж вряд ли её соберу, стал потихоньку (очень) переводить её.

Одним из наиболее важных аспектов, я считаю ошибки. Те, которые делают все, и которые далеко не всем понятны. Ниже перевод разделов "Compile Errors" и "Runner Errors" из справки GameMaker: Studio с примечаниями.



Ошибки компиляции

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

Во время создания игры, очень легко забыть объявить переменную, или неправильно использовать переменную, строкового типа, как вещественную и т.д. .. Эти ошибки будут найдены GameMaker: Studio и игра/компиляция остановится. Откроется окно с ошибкой, как и где она была обнаружена, так как показано на изображении ниже:


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

P.S. Также эти ошибки могут показываться в редакторе кода, или в меню "Check all scripts".

>Unknown function or script
>Unable to find script
>Execute script action is not bound to a script
>Failed to parse action_execute_script() - incorrect number of arguments received
>Trying to set a read only variable
>Constant is invalid here
>Malformed ... statement
>Keyword Until expected
>If requires a then statement
>Statement in a switch MUST appear after case or default
>Break used without context
>Continue used without context
>Calling a function that needs an instance and no instance is available
>Calling a function that needs an \"other\" and no \"other\" is available
>Argument naming error, {n} arguments but no reference found to {a}
>Wrong type of arguments for ...
>Division by 0
>Modulo by 0
>Cannot compare arguments
>Symbol ... expected
>Assignment operator expected
>Unexpected symbol in expression
>Only 1 or 2 dimensional arrays are supported
>Variable name expected



Ошибки раннера

Здесь вы можете увидеть ошибки, которые могут появится у раннера виртуальной машины

Даже после проверки синтаксиса в редакторе кода, а затем проверки самим компилятором, могут быть ещё случаи, когда что-то может пойти не так. В большинстве случаев это вызовет VM (Virtual Machine) ошибки, которые выглядят так:


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

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

Преобразования
  • DoConv :: Execution Error. Это означает ошибку в преобразовании одного типа данных в другой.
Прибавление
  • DoAdd :: Execution Error. Что-то пошло не так при использовании сложения (+) в выражении.
Умножение
  • DoMul :: Execution Error. Что-то пошло не так при использовании умножения (*) в выражении.
Вычитание
  • DoSub :: Execution Error. Что-то пошло не так при использовании вычитания (-) в выражении.
  • DoSub :: Execution Engine - Cannot operate on string type. Вы пытаетесь отнять неправильный тип переменных (например ,вычесть строку из вещественного).
Деление
  • DoDiv :: Execution Error. Что-то пошло не так при использовании деления (/ или div) в выражении.
  • DoDiv :: Execution Engine - Cannot operate on string type. Вы пытаетесь разделить неправильный тип переменных (например, разделить строку на вещественное).
  • DoDiv :: Divide by zero. Вы пытаетесь делить на ноль.
Остаток
  • DoMod :: Execution Error. Что-то пошло не так при использовании деления по модулю (mod) в выражении.
  • DoMod :: Execution Engine - Cannot operate on string type. Вы пытаетесь разделить по модулю неправильный тип переменных (например, разделить строку на вещественное).
Побитовое И (AND)
  • DoAnd :: Execution Error. Что-то пошло не так при использовании "&" в выражении.
  • DoAnd :: Execution Engine - Cannot operate on string type. Вы пытаетесь использовать "&" с неправильным типом переменных (например, строку и вещественное).
Побитовое ИЛИ (OR)
  • DoOr :: Execution Error. Что-то пошло не так при использовании "|" в выражении.
  • DoOr :: Execution Engine - Cannot operate on string type. Вы пытаетесь использовать "|" с неправильным типом переменных (например, строку и вещественное).
Побитовое исключающее ИЛИ (XOR)
  • DoXor :: Execution Error. Что-то пошло не так при использовании "^" в выражении.
  • DoXor :: Execution Engine - Cannot operate on string type. Вы пытаетесь использовать "^" с неправильным типом переменных (например, строку и вещественное).
Битовый сдвиг влево
  • DoShl :: Execution Error. Что-то пошло не так при использовании сдвига влево "<<" для величины.
  • DoShl :: Execution Engine - Cannot operate on string type. Вы пытаетесь использовать сдвиг влево с неправильным типом переменных (например, пытаясь "сдвинуть" строку).
Битовый сдвиг вправо
  • DoShr :: Execution Error. Что-то пошло не так при использовании сдвига влево ">>" для величины.
  • DoShr :: Execution Engine - Cannot operate on string type. Вы пытаетесь использовать сдвиг вправо с неправильным типом переменных (например, пытаясь "сдвинуть" строку).
Отрицательные числа (-)
  • DoNeg :: Execution Error. Вы пытаетесь превратить переменную в отрицательную, когда её тип не позволяет проводить такие операции.
Отрицание (not)
  • DoNot :: Execution Error. Вы пытаетесь отрицать переменную, когда её тип не позволяет проводить такие операции.
Stack Push
  • Push :: Execution Error - Variable Index out of range (var). Значение переменной превысило максимальное разрешённое в раннере
  • Push :: Execution Error - Variable Get (var). Данная переменная не определена или неизвестна.
Stack Pop
  • Pop :: Execution Error - Variable Index out of range (var). Значение переменной превысило максимальное разрешённое в раннере
  • Pop :: Execution Error - Variable Get (var). Данная переменная не определена или неизвестна.
With
  • Cannot use global in with statement. Вы пытались использовать глобальные переменные (которые не относятся к какому-либо id экземпляра) с "with" оператором.
  • Cannot use local in with statement.  Вы пытались использовать локальные переменные, помеченные "var", (которые не относятся к какому-либо id экземпляра) с "with" оператором.
Основные
  • DoCall :: Execution Engine type error. Это неизвестная ошибка в виртуальной машине. Вам следует подать отчет о баге если она произойдет
  • Stack Overflow... Переполнение стека происходит, когда слишком много памяти используется при вызове стека и когда игра пытается использовать больше пространства, чем доступно на стеке (то есть, когда он пытается получить доступ к памяти за пределами границ стека, что является по существу переполнением буфера). Стек переполнился, в результате сбоя программы. Перезагрузите компьютер и GameMaker: Studio, и если ошибка не устранится, пожалуйста, свяжитесь с поддержкой и / или сообщите об ошибке (как описано выше).

При написании использовалась справка GMS,
а также тема, об ошибках прошлых версий.
Особые благодарности Hummer и Dmitry.
Спасибо за внимание, МусНик
« Последнее редактирование: Июнь 15, 2013, 12:45:20 от MusNik » Записан

Vendet
Гл. Администратор
*

Репутация: 772
Offline Offline

Пол: Мужской
API: Unity 3D
Сообщений: 3949


HellRoom Games


WWW
« Ответ #1 : Ноябрь 25, 2012, 10:16:44 »

Круто  вот только почему тема находится в обычном разделе статей а не в статьи по GM?
Записан
MusNik
KeeVee Games
GM Pro user
*

Репутация: 733
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+500 репутации]За отличную игру Rock painting story!За помощь в развитии форума!За отличные статьи по Game Maker!...
API: GameMaker Studio 2
Сообщений: 3241



WWW
« Ответ #2 : Ноябрь 25, 2012, 16:14:59 »

Спасибо Ага, спасибо, что перенесли.

Улучшил раздел ошибок компиляции, для более удобного поиска, посредством браузера. Спасибо Dmitry.
Записан

PelmeshkO
GM Pro user
*

Репутация: 67
Offline Offline

Пол: Мужской
Награды:
За постоянность! [200 дней на форуме]
API: GameMaker Studio
Сообщений: 314

Stay hungry. Stay foolish.


« Ответ #3 : Ноябрь 25, 2012, 16:18:35 »

Полезная статья, добавил в закладки. Молодец
Записан

"Великое начинается с малого..."
Dattatreya75
Активный участник
*****

Репутация: 9
Offline Offline

API: Game Maker 8.0 Pro
Сообщений: 345



« Ответ #4 : Июль 07, 2013, 23:44:20 »

Перебрался на новую версию ГМС сначала 1.1.1058, но из-за большого количества ошибок откатился на 1.1.1044.
Проблема такая... АПК Раннер ЁЁ не запускается на устройстве... пробовал все версии, выдает ошибку... Error - io error, retrying URL

Мало того, перестал запускаться при компиляции эмулятор BlueStacks. Вижу по коннектам, что ГМС при компиляции пытается зацепиться за ADB, но потом слетает и запускает миниВебСервет, ничего не могу сделать... остается только тестировать под виндозой или копировать АПК и перекидывать по ЮСБи.

ну, или от вас услышать способ спасения... ))

Добавлено: Июль 08, 2013, 07:37:50
Хочу всех предупредить! Не обновляйте версии до 1.1.1044 и выше... тестирую  эти две версии на компьютере и прихожу к печальному выводу, что у последних версий реальные проблемы с компилятором. Реальные проблемы и ошибки работы программы выяснить сразу практически невозможно, ну можно еще по экспериментировать на своих пользователях, последствия вы сами себе представляете...

Из-за ошибок компилятора на запускается ADB + не все компилирует + компилирует так, что скорее всего половина доступных функций стороннеро SDK работать не будет или будет работать с ошибками...

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

Еще пришел к такому печальному выводу... из 100% функций в SDK, которые упаковываются в наши АПК, нам дают пользоваться только 10% при лучшем раскладе, все остальное лежит мертвым грузом и не функционирует.

Пришел к еще одному выводу, что можно обойти ГМС и начать использовать самостоятельно нужные функции из SDK, но для этого нужно научиться расшифровывать файл game.droid, в который запихивают конвертированных исходный код программы и исходные функции из SDK.
Поэтому сижу с дебаггером и пытаюсь понять как они делают компиляцию...
Записан
MusNik
KeeVee Games
GM Pro user
*

Репутация: 733
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+500 репутации]За отличную игру Rock painting story!За помощь в развитии форума!За отличные статьи по Game Maker!...
API: GameMaker Studio 2
Сообщений: 3241



WWW
« Ответ #5 : Июль 08, 2013, 15:59:33 »

Если что, у меня лично, все версии после 1.1.1044 (вплоть до самой последней) работают идеально. Но это вряд ли уже имеет какое-то значение.
Записан

Dattatreya75
Активный участник
*****

Репутация: 9
Offline Offline

API: Game Maker 8.0 Pro
Сообщений: 345



« Ответ #6 : Июль 09, 2013, 04:43:01 »

Версия 1.1.1044 и 1.1.1055 работают некорректно из-за нового компилятора ЁЁ, тестировал три дня... не хочу описывать список проблем которые обнаружил, но могу сказать что их очень много, самая главная ошибка для меня, что новый rкомпилятор ЁЁ не запускает ADB.
Записан
MusNik
KeeVee Games
GM Pro user
*

Репутация: 733
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+500 репутации]За отличную игру Rock painting story!За помощь в развитии форума!За отличные статьи по Game Maker!...
API: GameMaker Studio 2
Сообщений: 3241



WWW
« Ответ #7 : Июль 09, 2013, 14:10:32 »

Во-первых, у меня работает ADB.
Во-вторых, "новый компилятор" только под виндой.
Записан

Dmi7ry
Гл. Администратор
*

Репутация: 1379
Offline Offline

Пол: Мужской
Награды:
5000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+1000 репутации]За помощь в развитии форума!Знаток Game Maker!За помощь новичкам!
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626



WWW
« Ответ #8 : Июль 09, 2013, 14:12:49 »

Во-первых, у меня работает ADB.
Во-вторых, "новый компилятор" только под виндой.
И в-третьих, идёт как отдельная платформа, а не взамен предыдущей.
Записан

- А какой, собственно, командой процессора колобок ест черта?
- Командой EAT...
Справка и FAQ в правом верхнем углу...
MusNik
KeeVee Games
GM Pro user
*

Репутация: 733
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+500 репутации]За отличную игру Rock painting story!За помощь в развитии форума!За отличные статьи по Game Maker!...
API: GameMaker Studio 2
Сообщений: 3241



WWW
« Ответ #9 : Июль 09, 2013, 14:16:47 »

Во-первых, у меня работает ADB.
Во-вторых, "новый компилятор" только под виндой.
И в-третьих, идёт как отдельная платформа, а не взамен предыдущей.
Да, спасибо, забыл уточнить про Windows YYC
Записан

Dattatreya75
Активный участник
*****

Репутация: 9
Offline Offline

API: Game Maker 8.0 Pro
Сообщений: 345



« Ответ #10 : Июль 09, 2013, 17:16:26 »

Удалось запустить компилятор на версии 1.1.1044, даже ADB заработал, но все также рекламные баннера не на своем месте и все также отключены два процессора из списка.

Проблему с процессорами решить можно, как говорил ранее, а вот что делать с баннерами... самому пересчитывать погрешность и устанавливать новые координаты?
Записан
OlegWock
Посетитель
**

Репутация: 3
Offline Offline

Пол: Мужской
API: GameMaker Studio Master
Деятельность: Пишу стихи и рассказы, изучаю GM: Studio и Construct 2
Сообщений: 24

И да, я кун. Просто люблю Кону-тян :3


« Ответ #11 : Ноябрь 20, 2013, 00:00:57 »

Спасибище! Очень полезная статья.
И еще, не подскажете новичку как репутацию повышать? 
Записан


Dmi7ry
Гл. Администратор
*

Репутация: 1379
Offline Offline

Пол: Мужской
Награды:
5000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+1000 репутации]За помощь в развитии форума!Знаток Game Maker!За помощь новичкам!
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626



WWW
« Ответ #12 : Ноябрь 20, 2013, 04:26:47 »

И еще, не подскажете новичку как репутацию повышать? 
смотрите картинку

reputation.png
[GMS] Ошибки раннера и компилятора (описание и причины)
* reputation.png (29.46 Кб, 851x253 - просмотрено 5706 раз.)
Записан

- А какой, собственно, командой процессора колобок ест черта?
- Командой EAT...
Справка и FAQ в правом верхнем углу...
grindcoreopera
Новичок
*

Репутация: 0
Offline Offline

API: GameMaker Studio Master
Сообщений: 1


« Ответ #13 : Январь 07, 2014, 14:43:51 »

DoSet :: Invalid comparison type

причина в моем случае:
при записи/чтении в файл забыл поменять тип данных и в массив записались числа, а не символы
итого получил типа: if <real> != <string>
Записан
onChyk
«Старожил форума»
******

Репутация: 170
Offline Offline

Пол: Мужской
API: GameMaker Studio Master
Деятельность: Программист GML AAA класса, пиксель-художник, геймдизайнер
Сообщений: 2318



WWW
« Ответ #14 : Август 01, 2014, 20:19:51 »

Поставил новый GMS стабильную версию, т.е. 1.3.1347, запустил проект с ГМ8(на GMS 1.2.xxxx он запускался), и тут вылезает:
Код:
In Object object0, in Event CreateEvent action number 1 at line 5 : Assignment operator expected
In Object object0, in Event CreateEvent action number 1 at line 5 : symbol } expected
In Object object0, in Event CreateEvent action number 1 at line 5 : malformed assignment statement
Compile Failed - Please check the Compile window for any additional information
Вроде бы, всё ясно - переводится это "некорректный оператор присваивания", т.е. я не так создал переменную, но что против этого делать - не пойму. Вот моя 5-я строка:
Код:
var _x _y _spr _surf _c;
Специалисты, помогите! Dmi7ry, FanTom, Sparrowlace, я вызываю вас!
Записан

Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.246 секунд. Запросов: 34.