История компьютерных игр
Создание первого ракетного симулятора и первой компьютерной игры. Создание игровых движков для упрощения и ускорения разработки игр. Особенности работы с простыми и неподвижными элементами игрового пространства. Создание игр без программирования.
Рубрика | Производство и технологии |
Вид | реферат |
Язык | русский |
Дата добавления | 18.11.2015 |
Размер файла | 52,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
История компьютерных игр
Фактически первой компьютерной, или видео игрой можно считать Rocket Simulator или Ракетный Симулятор. Ракетный симулятор -- развлекательный аппарат на базе электронно-лучевой трубки, имитирующий управление полётом ракеты. Томас Т. Голдсмит-мл. и Эстл Рэй Манн разработали устройство в 1947 году.
Ракетный симулятор, считающийся самой ранней из известных интерактивных электронных игр, явился предвестником компьютерных игр. Однако сам аппарат не имел цифрового процессора для обработки информации, а использовал аналоговые цепи для управления электронно-лучевой трубкой и формирования изображения на экране. По виду он напоминал радар времён Второй мировой войны, а для прицеливания использовались экранные наложения.
25 января 1947 года авторы изобретения подали заявку на патент, который был ими получен 14 декабря 1948 года. Однако в массовое производство и продажу аппарат так и не поступил.
Следующее важное событие произошло в 1952 году - была создана первая компьютерная игра, которая выводилась на растровый дисплей и обрабатывалась в вычислителе, а не с помощью аналоговых цепей. Игру назвали OXO (крестики нолики) -- компьютерная игра для компьютера EDSAC, представляющая собой крестики-нолики. Разработана в 1952 году А. С. Дугласом как иллюстрация к кандидатской диссертации на тему взаимодействия человека и компьютера.
В OXO человек играл против компьютера, выставляя крестик или нолик в нужную клетку поля с помощью дискового номеронабирателя. Вывод осуществлялся на растровый дисплей размерностью 35 Ч 16 точек. Символ и очередность хода выбирались игроком до начала игры.
OXO не получила широкого распространения, так как EDSAC был уникальным компьютером, находящимся в библиотеке Кембриджского университета.
Первым сетевым шутером является Empiмre (рус. Империя) -- компьютерная игра для системы PLATO, созданная в 1973 году Джоном Далеске. Игра с большой долей вероятности является первой в жанре сетевого многопользовательского шутера, а также одним из первых сетевых экшенов. Хотя терминалы PLATO имели тач-панели для ввода данных, у них отсутствовал манипулятор, поэтому управление в игре осуществлялось путём набора текста. Команды для смены курса или стрельбы вводились в градусах: 0 означал правую сторону, 90 -- верх, 270 -- низ. Кнопки также могли использоваться со «стрелками». К терминалам были подключены монохромные дисплеи с разрешением 512x512 пикселов; для отображения графики можно было загружать специальный набор символов.
Первым 3D шутером можно считать Maze War -- видеоигра 1973 года, изначально созданная для Imlac PDS-1 Стивом Колли в Исследовательском центре Эймса NASA. Наряду с Empire и Spasim стала одной из прародительниц современных шутеров от первого лица, а также первой игрой с режимом deathmatch.
В Maze War игроки перемещаются по лабиринту; доступна возможность перемещения вперёд, назад, поворачиваться направо и налево (каждый раз на 90°), а также заглядывать в дверные проёмы. В игре используется простая тайловая графика -- таким образом, игрок перемещается по невидимым квадратам. Другие участники игры представлены на экране в виде глазных яблок. При появлении соперника на экране, игрок может стрелять в него. За каждое убийство начисляются очки, а за каждую смерть -- снимаются. В некоторых версиях Maze War (например, портированная версия для X11) были внедрены чит-коды, которые позволяли видеть местоположение других игроков. Также в некоторых версиях в лабиринте могла иногда появиться утка.
Игровые движки
Игры усложнялись это привело к тому, что стали появляться игровые движки - структуры облегчающие разработку игр. Инструментарий, называемый игровыми движками, создан для упрощения и ускорения разработки игр, чтобы не писать всё «с нуля». В данном контексте будет фигурировать несколько понятий движков, но чаще всего это игровые и графические. Важно понимать разницу между графическим движком, игровым движком и вспомогательной библиотекой игрового движка. Игровой движок -- это тот модуль игры, который включает в себя игровую логику. Например, игра Pac-Man, кроме всего остального, содержит код, который отрисовывает частично заполненный желтый круг -- главного героя (относится к графическому движку); и код, который увеличивает баллы, когда игрок съедает охотника-призрака, жёлтые точки, бонусы и другое (относится к игровому движку). 1979 год - «ZIL» Первый в мире игровой движок разработанный компанией Infocom.
1987 год - Freescape Первый 3-D движок разработанный компанией Incetive Software.
Unreal Engine
Многие движки создавались для одной единственной игры, что делало невозможным использовать этот движок в дальнейшем. Такое положение было убыточным, однако в 1998 году компания Epic Games выпускает движок ставший основой для сотен игр, и при всей простоте был невероятно мощной средой разработки. Написанный на языке C++, движок позволяет создавать игры для большинства операционных систем и платформ: Microsoft Windows, Linux, Mac OS и Mac OS X; консолей Xbox, Xbox 360, PlayStation 2, PlayStation 3, PSP, PS Vita, Wii, Dreamcast, GameCube и других, а также на различных портативных устройствах, например, устройствах Apple (iPad, iPhone), управляемых системой iOS и прочих. (Впервые работа с iOS была представлена в 2009 году, в 2010 году продемонстрирована работа движка на устройстве с системой webOS).
Для упрощения портирования движок использует модульную систему зависимых компонентов. Поддерживает различные системы рендеринга: Direct3D, OpenGL, Pixomatic, воспроизведения звука: EAX, OpenAL, DirectSound3D, средства голосового воспроизведения текста, распознавание речи, модули для работы с сетью и поддержки различных устройств ввода.
Для игры по сети поддерживаются технологии Windows Live, Xbox Live, GameSpy и прочие, включая до 64 игроков (клиентов) одновременно. Таким образом, движок адаптировали и для применения в играх жанра MMORPG (один из примеров: Lineage II).
Все элементы игрового движка представлены в виде объектов, имеющих набор характеристик, и класса, который определяет доступные характеристики. В свою очередь, любой класс является «дочерним» классом object. Среди основных классов и объектов можно выделить следующие:
Актер (actor) -- родительский класс, содержащий все объекты, которые имеют отношение к игровому процессу и имеют пространственные координаты.
Пешка (pawn) -- физическая модель игрока или объекта, управляемого искусственным интеллектом. Название происходит от англ. pawn -- тот, кем манипулируют (или пешка, поэтому такой объект без какой-либо модели выглядит как пешка). Метод управления описан специальным объектом, такой объект называется контроллером. Контроллер искусственного интеллекта описывает лишь общее поведение пешки во время игрового процесса, а такие параметры как «здоровье» (количество повреждений, после которых пешка перестает функционировать) или, например, расстояние, на котором пешка обращает внимание на звуки. задаются для каждого объекта отдельно.
Мир, уровень (world, game level) -- объект, характеризующий общие свойства «пространства», например, силу тяжести и туман, в котором располагаются все акторы. Также может содержать в себе параметры игрового процесса, как, например, игровой режим, для которого предназначен уровень.
Для работы с простыми и, как правило, неподвижными элементами игрового пространства (например, стены) используется двоичное разбиение пространства -- все пространство делится на «заполненное» и «пустое». В «пустой» части пространства располагаются все объекты, а также только в ней может находиться «точка наблюдения» при отрисовке сцены. Возможность полного или частичного помещения объектов в «заполненную» часть пространства не исключается, однако может привести к неправильной обработке таких объектов (например, расчёт физического взаимодействия) или неправильной отрисовки в случае помещения туда «точки наблюдения» (например, эффект «зала зеркал»). Все пешки, попадающие в «заполненную» часть пространства, сразу «погибают».
Зонирование. В камеру не попадает ни один портал (пунктирная линия) красной зоны, поэтому объекты в ней не обрабатываются вовсе.
Поверхность (surface) является основным элементом двоичного дерева пространства. Эти элементы создаются на грани пересечения между «заполненной» и «пустой» частями пространства. Группа элементов двоичного дерева пространства называется нодом (node, рус. узел). Этот термин, как правило, употребляется в контексте node count -- количество нодов на экране или в игровом пространстве вообще. Количество нодов, одновременно видимых на экране влияет на производительность при прорисовке сцены. Если какой-то нод не попадает на экран или перекрывается целиком другими нодами, он не обсчитывается -- это служит для повышения производительности, особенно в закрытых пространствах. Разбиение всего пространства на группы нодов называется зонированием.
Для этого иногда используются порталы -- невидимые поверхности, которые служат для того чтобы вручную разделить крупный нод на два меньших. Кроме порталов используются антипорталы.
Описание «заполненных» и «пустых» частей пространства выполняется с помощью набора замкнутых трехмерных объектов, составленных из не пересекающихся поверхностей -- брашей (brush, рус. кисть). Этот принцип построения пространства называется конструктивной сплошной геометрией. Геометрия может быть «аддитивной» (все пространство изначально «пустое») и «вычитательной» (изначально заполненное материей пространство).
Браши делятся на три типа:
Сплошные (solid) -- полноценно участвуют в двоичном разбиении пространства.
Аддитивные (additive) -- «заполняют» двоичное пространство.
Вычитательные (substractive) -- «вырезают» объёмы в пространстве.
Полу-сплошные (semi-solid) -- не влияют напрямую на двоичное дерево пространства, однако влияют на её физическую модель. Могут только «заполнять» пространство. Служат для создания «невидимых» препятствий, а также снижения числа полигонов и нодов.
Пустые (non-solid) -- только создают поверхности, не влияют на двоичное дерево пространства. Используются преимущественно для создания объёмов (volume) -- часть пространства, которая обладает свойствами, отличными от свойств игрового мира. Объёмы имеют приоритет, свойства объёма с большим приоритетом применяются к находящимся в нём актерам. Игровой мир всегда имеет минимальный приоритет. При помощи объёмов можно изменить гравитацию, вязкость, туман и тому подобное. Объёмы, начиная с версии движка Unreal Engine 2, используются для создания воды (но не водной поверхности).
Индустрия компьютерных игр
Индустрия компьютерных игр зародилась в середине 1970-х годов как движение энтузиастов и за несколько десятилетий выросла из небольшого рынка в мейнстрим с годовой прибылью в 9,5 миллиардов долларов в США в 2007 году и 11,7 миллиардов в 2008 году (согласно ежегодным отчётам ESA). На рынке работают как крупные игроки, так и и небольшие фирмы и стартапы, а также независимые разработчики и сообщества.
Современные персональные компьютеры дали множество новшеств игровой индустрии. К числу самых значимых относят звуковые и графические карты, CD- и DVD-приводы, Unix и центральные процессоры.
Звуковые карты изначально были разработаны для интегрирования качественного цифрового звука в компьютерные игры, и только потом звуковое оборудование было усовершенствовано под нужды меломанов.
Графические карты, которые на заре компьютерной эпохи эволюционировали в направлении увеличения количества поддерживаемых цветов, позже стали развиваться для аппаратной поддержки графических интерфейсов пользователя (англ. GUI) и игр. Для GUI требовалось увеличение разрешения экрана, а для игр -- ускорение трёхмерной графики.
Изначально CD и DVD были разработаны как недорогой и достаточно надежный способ хранения и распространения любых данных. Впоследствии, когда эти технологии стали применяться в компьютерных играх, началось их развитие в сторону увеличения скорости чтения данных.
Современные игры -- одни из самых требовательных приложений на ПК. Многие мощные компьютеры покупаются геймерами, которые требуются для запуска новейших игр, в которых используются самые передовые технологии. Таким образом, игровая индустрия тесно связана с индустрией производства центральных процессоров и другие компонентов ПК, так как игры зачастую требуют более высоких аппаратных мощностей, чем бизнес-приложения.
Таким образом игровая индустрия - одна из самых перспективных отраслей информационных технологий. Многие люди подумали, а почему бы и им не заняться созданием компьютерных игр?
Инди проекты
Имнди-игра-- «независимая компьютерная игра»-- компьютерная игра, созданная отдельным разработчиком или небольшим коллективом без финансовой поддержки издателя компьютерных игр. Распространение осуществляется посредством каналов цифровой дистрибуции. Масштаб явлений, связанных с инди-играми, ощутимо возрастает со второй половины 2000-х годов, в основном ввиду развития новых способов онлайн-дистрибуции и средств разработки.
Общепринятого определения понятия «инди-игра» не существует. Но, зачастую, инди-игры имеют некоторые схожие особенности. Инди-игры создаются отдельными разработчиками, небольшими коллективами или маленькими независимыми компаниями. Также инди-игры обычно не такие масштабные, как массовые игры с полным финансированием. Разработчики инди-игр, как правило, не имеют финансовой поддержки от издателя (так как они предпочитают наименее рисковые игры с высоким бюджетом), и обычно обладают небольшим бюджетом, либо не обладают им вовсе. Ввиду своей независимости инди-разработчики не имеют операционных ограничений со стороны издателей или творческих ограничений и не нуждаются в одобрении издателя, что является обязательным для разработчиков массовых игр. Как следствие, решения геймдизайнера также не ограничиваются бюджетом проекта. Более того, чем меньше коллектив, тем ярче выражается индивидуальность конкретного разработчика.
Создание игр без программирования
игра симулятор компьютерный программирование
В 2011 году США признала игры видом искусства. Игры несут в себе некую мысль и идею, которую автор пытается до нас донести; у игры есть сюжет повествующий нам о судьбе главного героя, показывающий нам его формирование, становление, знакомящий нас с миром героя. Всё это присуще другим видам общепринятого искусства: книгам, фильмам, музыке, картинам, скульптуре. По факту игры позволяю ощутить, буквально ощупать и прочувствовать каждую деталь и звено в мире главного персонажа, как это сделано в книгах, и при этом наслаждаться обширными панорамами событий, видеть во всей красе мир, как это было реализовано в кино. Но в отличии от этих видов искусства в игру добавляется такой элемент, как гемплей. Вы уже не просто смотрите на главного героя с большого экрана, или читаете о том, что он делал со страниц книги, а сами становитесь этим героем, вы вершите те подвиги, что предназначались персонажу, вы решаете, что делать, вы теперь герой!
В связи с этим созданием компьютерных игр занялись люди искусства, которые мало понимали в программировании, так необходимом для геймдевелопинга.
Для таких людей были созданы до жути простые и в тоже время мощные среды разработок.
Одной из таких является Unity
Unity
Unity -- это инструмент для разработки двух- и трёхмерных приложений и игр, работающий под операционными системами Windows и OS X. Созданные с помощью Unity приложения работают под операционными системами Windows, OS X, Windows Phone, Android, Apple iOS, Linux, а также на игровых приставках Wii, PlayStation 3, PlayStation 4, Xbox 360, Xbox One. Есть возможность создавать приложения для запуска в браузерах с помощью специального подключаемого модуля Unity (Unity Web Player), а также с помощью реализации технологии WebGL. Ранее была экспериментальная поддержка реализации проектов в рамках модуля Adobe Flash Player, но позже команда разработчиков Unity приняла сложное решение по отказу от этого.
Приложения, созданные с помощью Unity, поддерживают DirectX и OpenGL. Активно движок используется как крупными разработчиками (Blizzard, EA, QuartSoft, Ubisoft), так и девелоперами Indie-игр (например, ремейк Мор. Утопия (Pathologic), Kerbal Space Program, Slender: The Eight Pages, Slender: The Arrival, Surgeon Simulator 2013 и т. п.) в силу наличия бесплатной версии, удобного интерфейса и простоты работы с движком.
Редактор Unity имеет простой Drag&Drop интерфейс, который легко настраивать, состоящий из различных окон, благодаря чему можно производить отладку игры прямо в редакторе. Движок поддерживает три сценарных языка: C#, JavaScript (модификация), Boo (диалект Python). Редактор поддерживает DirectX 11 и HDR. Расчёты физики производит физический движок PhysX от NVIDIA.
Проект в Unity делится на сцены (уровни) -- отдельные файлы, содержащие свои игровые миры со своим набором объектов, сценариев, и настроек. Сцены могут содержать в себе как, собственно, объекты (модели), так и пустые игровые объекты -- объекты, которые не имеют модели («пустышки»). Объекты, в свою очередь содержат наборы компонентов, с которыми и взаимодействуют скрипты. Также у объектов есть название (в Unity допускается наличие двух и более объектов с одинаковым названиями), может быть тег (метка) и слой, на котором он должен отображаться. Так, у любого объекта на сцене обязательно присутствует компонент Transform -- он хранит в себе координаты местоположения, поворота, и размеров объекта по всем трём осям. У объектов с видимой геометрией также по умолчанию присутствует компонент Mesh Renderer, делающий модель объекта видимой.
К объектам можно применять коллизии (в Unity т. н. коллайдеры -- collider). Существует несколько типов коллайдеров:
Character controller -- вид физической модели, созданный специально под использование его для игровых персонажей;
Box collider (физическая модель образует куб, в который попадает вся модель объекта);
Sphere collider (физическая модель образует сферу, в которую попадает вся модель объекта);
Capsule collider (физическая модель образует капсулу, в которую попадает модель объекта. В отличие от предыдущего типа размеры можно менять и по одной, и по трём осям сразу);
Mesh collider (физическая модель полностью повторяет реальную геометрию объекта);
Wheel collider (физическая модель колеса);
Terrain collider -- тип физической модели, созданный специально для использования на объекте типа Terrain -- земля, генерируемая редактором Unity с возможностями скульптинга и окрашивания местности.
Также Unity поддерживает физику твёрдых тел и ткани, а также физику типа Ragdoll (тряпичная кукла). В редакторе имеется система наследования объектов; дочерние объекты будут повторять все изменения позиции, поворота и масштаба родительского объекта. Скрипты в редакторе прикрепляются к объектам в виде отдельных компонентов.
При импорте текстуры в Unity можно сгенерировать alpha-канал, mip-уровни, normal-map, light-map, карту отражений, однако непосредственно на модель текстуру прикрепить нельзя -- будет создан материал, которому будет назначен шейдер, и затем материал прикрепится к модели. Редактор Unity поддерживает написание и редактирование шейдеров. Редактор Unity имеет компонент для создания анимации, но также анимацию можно создать предварительно в 3D-редакторе и импортировать вместе с моделью, а затем разбить на файлы.
Помимо пустого игрового объекта и моделей, на сцену можно добавлять ещё такие объекты типа GameObject:
Система частиц;
Камера;
GUI текст;
GUI текстура;
3D текст;
Точечный свет;
Направленный свет;
Освещение территории;
Источник света, имитирующий солнце;
Стандартные примитивы;
Деревья;
Terrain (земля).
Unity 3D поддерживает систему Level Of Detail (сокр. LOD), суть которой заключается в том, что на дальнем расстоянии от игрока высокодетализированные модели заменяются на менее детализированные, и наоборот, а также систему Occlusion culling, суть которой в том, что у объектов, не попадающиих в поле зрения камеры не визуализируется геометрия и коллизия, что снижает нагрузку на центральный процессор и позволяет оптимизировать проект. При компиляции проекта создается исполняемый (.exe) файл игры (для Windows), а в отдельной папке -- данные игры (включая все игровые уровни и динамически подключаемые библиотеки).
Движок поддерживает множество популярных форматов, таких как:
.3ds,.max,.obj,.fbx,.dae,.ma,.mb для трёхмерных моделей;
.mp3,.wmv,.ogg для звуковых файлов;
.bmp,.gif,.png,.tga,.psd,.tif,.dds для изображений;
.mov,.ovg для видеофайлов.
Модели, звуки, текстуры, материалы, скрипты можно запаковывать в формат.unityassets и передавать другим разработчикам, или выкладывать в свободный доступ. Этот же формат используется во внутреннем магазине Unity Asset Store, в котором разработчики могут бесплатно и за деньги выкладывать в общий доступ различные элементы, нужные при создании игр. Чтобы использовать Unity Asset Store, необходимо иметь аккаунт разработчика Unity. Unity имеет все нужные компоненты для создания мультиплеера. Также можно использовать подходящий пользователю способ контроля версий. К примеру, Tortoise SVN или Source Gear.
Тем не менее Unity требует не слабой подготовки и начинающему будет очень трудно создать игру в одиночку на таком движке. Поэтому были созданы движки не требующие программирования вовсе, где всё держится на выборе свойств объектах,как например Construct 2
Но он весьма и весьма ограничен, т.к. нельзя задавать иные свойства, кроме предусмотренных.
Тем не менее следующий движок даёт полноту возможности разработки 2-D игр без ограничений на задаваемые свойства, при сохранении относительной простоты пользования - Game Maker
Game Maker
Game Maker: Studio -- один из самых известных конструкторов игр. Написан на Delphi. Доступен для ОС Windows, 7-я версия программы также существовала в версии для Mac. Ведущий разработчик -- Марк Овермарс.
Система рассчитана в основном на создание двухмерных (2D) игр любых жанров. Также подойдёт для создания различных презентаций и т. п. Начиная с 6-й версии появилась ограниченная возможность работать с 3D.
Может быть рекомендован для изучения программирования. Будучи профессором утрехтского университета Марк Овермарс начал разрабатывать Game Maker как учебное пособие для своих студентов.
Game Maker распространяется на условиях Shareware, бесплатная версия ограничена в функциональности, а при запуске откомпилированных в ней игр показывается логотип программы.
Однако Game Maker Studio после регистрации и обновления до Standart версии (Бесплатно) почти не имеет ограничений и не показывает логотип студии при запуске игры.
Создание игры в Game Maker не требует предварительного знакомства с каким либо из языков программирования.
Интерфейс Game maker объединяет в себе редакторы спрайтов, объектов, комнат, скриптов, а также тайм-лайнов (последовательностей действий с привязкой по времени) и путей (маршрутов) движения.
Игра в Game maker строится как набор игровых объектов. За их внешний вид отвечают спрайты, а поведение задаётся путём описания реакций на события. Для этого можно использовать графическое представление программ (близкое к блок-схемам) в виде последовательности иконок-действий. Программирование с помощью действий происходит в режиме drag-n-drop. Например, для того чтобы начать условный оператор, нужно перетащить на панель действий восьмиугольник с иконкой, обозначающей тип проверки, а затем, возможно, ввести какие-либо значения в появившуюся форму. Для более продвинутых пользователей имеется скриптовый язык GML похожий на JavaScript, имеется возможность создания собственных библиотек действий, используя Library Maker.
Понятие объекта в GameMaker в основном соответствует понятию класса в объектно-ориентированном программировании, объекты могут наследовать друг от друга. Экземпляры объектов могут быть размещены в игровом пространстве с помощью редактора комнат, или же созданы динамически. Если в текущей комнате существует только один экземпляр объекта, к нему можно обращаться, используя родовое имя объекта, класса, если же таких экземпляров несколько, для обращения к конкретному экземпляру мы должны знать его числовой идентификатор, используя его в качестве ссылки на объект.
Язык GML включает в себя средства загрузки и использования внешних динамических библиотек, что позволяет расширять Game Maker процедурами и функциями, написанными на других языках. Внешние DLL, вместе с gml обвязкой могут быть собраны в пакет расширения GameMaker.
У данного движка есть целый ряд достоинств и недостатков:
+ кроссплатформенность;
+ гибкая ценовая категория, базовая версия Game Maker: Studio абсолютно бесплатна;
+ собственный упрощенный язык программирования Game Maker Language (GML);
+ интеграция со Steam;
+ поддержка множества интернет-площадок «из коробки» (Developer Services Portal);
? плохо оптимизирован для больших игр;
? несмотря на возможность работы с 3D, в Game Maker она крайне неудобна;
? сам Game Maker Language (GML) имеет ряд заметных недостатков, что, тем не менее, не помешает начинающим разработчикам.
Мой проект
Разрабатываемый мною проект принадлежит к разряду action RPG, но по факту это заготовка для большей игры прохождение которой должно занять не менее часа. Текущая версия игры проекта оценивается мною как базис, то есть имеется все необходимые элементы для создания игры, и всё, что остаётся - это наполнить игру контентом. Далее будет показано, как реализованы следующие элементы: инвентарь, поведение врагов, задание простейших функций объектам и так далее.
Инвентарь
Инвентарь оформляется не напрямую, а через связку - «событие - клавиша «i» нажата» - «действие - исполнить скрипт».
Для него используется следующий скрипт:
if global.dubina=true dub='#Дубина' else dub=''
if global.kinzhal=true kin='#Кинжал' else kin=''
if npc.mission=2 mis='#Молоко' else mis=''
menu=show_message_ext('Оружие: '+string(global.oruzhie)+'#Уровень: '+string(global.level)+'#Опыт: '+string(global.xp)+'#Есть:'+string(dub)+string(kin)
+string(mis),'Оружие','','Выход')
if menu=1
{if global.dubina=true dub='Дубина' else dub=''
if global.kinzhal=true kin='Кинжал' else kin=''oruzh=show_menu_pos(300,300,'Кулаки|'+string(dub)+'|'+string(kin),-1)
if oruzh=0 global.oruzhie=''
if oruzh=1 and dub='Дубина' global.oruzhie='Дубина'
if oruzh=2 and kin='Кинжал' global.oruzhie='Кинжал'
}
Команда «global.» в данном случае служит для обращения сразу ко всем объектам. Строка - «menu=show_message_ext('Оружие: '+string(global.oruzhie)+'#Уровень: '+string(global.level)+'#Опыт: '+string(global.xp)+'#Есть:'+string(dub)+string(kin)»
служит для отображения опыта. «oruzh» - это задаваемый оператор, в данном случае ответственный за количество наносимого урона героем, в зависимости от значений данного оператора, которые изменяются после определённого события,в данном случае наличия одного из предметов в инвентаре.
Перемещение
Оно осуществляется следующим образом - даётся событие щелчок ЛКМ и происходит действие - создание объекта «way» по следующему скрипту:
« with (way) instance_destroy()
instance_create(mouse_x,mouse_y,way)
move_towards_point(mouse_x,mouse_y,5)»
То есть герою задаётся движение к объекту - «way». Если герой находится на расстоянии меньше 5едениц, то объект разрушается.
«if distance_to_object(way)<5 {speed=0 with(way)instance_destroy()}
image_angle=direction"»
По факту направление задаёт следующей частью скрипта: «image_angle=direction» то есть изображение и есть направление движения.
Фаерболл
В данном случае задействованы 3 объекта - герой, враг и сам фаерболл. Для каждого из 3-х объектов действует свой скрипт, срабатывающий по принципу «событие - клавиша «ПКМ» нажата» - «действие - исполнить скрипт»
Для героя, который задаёт событие, скрипт выглядит вот так:
«if global.mana>=30 {global.mana-=30 instance_create(x,y,fireball)}»
Что примечательно - в языке GML уже встроено понятие маны и его не нужно расписывать. Действие «instance_create» - является стандартным и может служить событием.
Затем та же цепочка срабатывает для объекта фаербола. В данном случае событием выступило создание фаербола, а действием стало движение по заданной траектории.
3-м объектом становится враг. Для него событием, по той же цепочке, становится столкновение с объектом фаерболла, действием будет мгновенное уничтожение объекта фаерболла и изменение показателя “heal”на 50 единиц. В язык уже встроен данный показатель наряду с его синонимами.
Предметы восстановления
Сами объекты достаточно просто работают по схеме «событие-действие». В данном случае событием становится столкновение с героем и и последующие действие направленное на объект герой. Для объекта для восстановления здоровья скрипт выглядит вот так: «health+=40 ;instance_destroy()» для восстановления манны аналогично, лишь с изменением «health» на «mana».
Поведение врагов
Оно описано достаточно просто - если расстояние до объекта меньше 300 ед. то начать двигаться к нему. Если происходит событие - столкновение героя, то исполнить скрипт: «health-=1; other.speed=0», где показатель «health» - это урон наносимый врагом герою, а «speed» - это скорость нанесения урона, в данном случае показатель «0» означает, что за 1 одну секунду действие будет выполнено 1 раз, то есть постепенно.
Если герой совершает событие - нажата ЛКМ на враге, и герой находится на расстоянии менее 5 единиц, то врагу будет наносится урон. За всё за это отвечает следующий скрипт:
hero.image_speed=1
if distance_to_object(hero)<5{
if global.oruzhie='Кулаки' heal-=10
if global.oruzhie='Дубина' heal-=20
if global.oruzhie='Кинжал' heal-=40}.
Размещено на Allbest.ru
Подобные документы
Проектирование и автоматизация производственного процесса изготовления определенной книжной продукции. Создание сложных автоматизированных компьютерных издательских систем и компонентов. Оптимизация параметров проекта. Ресурсное планирование проекта.
курсовая работа [4,8 M], добавлен 25.11.2011Связь метрологии и стандартизации. Одни из первых стандартизированных унифицированных чертежей. Первые упоминания о стандартах в России. Создание первого центрального органа по стандартизации. Принятие в 1993 году Закона России "О стандартизации".
презентация [750,3 K], добавлен 16.04.2012Использование систем автоматизированного проектирования в швейной промышленности. Создание и внедрение в практику оснащенных современных электронно-вычислительных машин с развитыми терминальными устройствами. Конструирование одежды с элементами САПР.
курсовая работа [1,4 M], добавлен 12.04.2015История и этапы развития моторостроения за рубежом. Создание газового двигателя, определение его преимуществ и недостатков, сферы применения на современном этапе. События, разработки и достижения, произошедшие за последние десятилетия в этой отрасли.
контрольная работа [23,3 K], добавлен 24.07.2011Датчики физических величин в строительной технологии. Создание микроэлектронных устройств со встроенными функциональными элементами. Ознакомление с технологическими процессами изготовления, формования и тепловлажной обработки железобетонных труб.
реферат [68,4 K], добавлен 09.12.2013История создания пластиковых карт. Замена картонных карточек металлическими. Создание первой пластиковой карты с магнитной полосой. Виды пластиковых карт: дисконтные, клубные, банковские, телефонные, магнитные и идентификационные. Внешний вид карточек.
реферат [17,7 K], добавлен 25.02.2013Общая характеристика и особенности утилизации отходов ракетного топлива, в состав которого входит нитрат аммония. Понятие, сущность, классы, состав и баллистические свойства твердого ракетного топлива, а также его и описание основных методик утилизации.
курсовая работа [56,9 K], добавлен 11.10.2010Исходные данные для расчета жидкостного ракетного двигателя. Выбор значений давления в камере и на срезе сопла, жидкостного ракетного топлива (ЖРТ). Определение параметров ЖРТ и его продуктов сгорания. Конструктивная схема, система запуска двигателя.
курсовая работа [2,7 M], добавлен 07.09.2015Выбор твердого ракетного топлива и формы заряда ракетного двигателя, расчет их основных характеристик. Определение параметров воспламенителя и соплового блока. Вычисление изменения газового потока по длине сопла. Расчет элементов конструкции двигателя.
курсовая работа [329,8 K], добавлен 24.03.2013Создание технологической схемы малоотходной технологии производства покрытий. Расчет материальных балансов процессов. Выбор основного и вспомогательного оборудования для процессов получения покрытий, очистки СВ и воздуха. Основы процесса цинкования.
дипломная работа [1,2 M], добавлен 26.10.2014