Как написать игру

Как я собственную первую игру писал

Всем привет. Это мой первый длиннопост, так что особо не пинайте.

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

Итак, глава 1: первые позывы.

Мне тогда еще было 12 лет, я был юн, глуп, и сильно хотел выпендриться перед друзьями. Я считал, что написав игру, буду смотреться действительно круто в их глазах. Я начал рыться на просторах интернета, в поиске лёгкой возможности создания игры. Запросы в Google были в тематике:"как выполнить игру за полчаса с блек-джеком и возможностью грабить караваны". Конечно, результатов это не принесло. Я, обиженный на весь этот временный мир, забил на данную идею года на 2.

Глава 2: Слишкам трудна.

Итак, мне 14 лет. Я с новыми силами начал искать возможность создать игру. Цель была уже не понтануться, а сделать что-нибудь для себя, чем потом можно будет важничать. Запросы в Google уже стали более корректны, но всё-равно детские, в тематике: "как выполнить игру для чайников". Корректировка запросов в Google, доставила собственные плоды. Я уже узнал Что такое GameMaker, FPSCreator, ну и Unity. К GameMaker’у, я даже не притронулся, потому что не монаршее это дело 2д игры делать (хотелось то ведь как и раньше "грабить караваны"). FPSCreator быстро надоел из-за скудного арсенала возможностей (или из-за скудного арсенала моего мозга), ну а в Unity я сколько душе угодно поигрался с редактором ландшафта, и забил, потому что обучать языки программирования для меня было "слишкам трудна". В конце концов, на идею забил еще на 2 года.

Глава 3: "а можно к андроиду библиотеку Swing привинтить?"

Мальчику уже 16, вырос, возмужал, возникли собственные интересы, которые требовали наличных средств. И здесь я опять задался целью создать игру, однако уже с целью получить в первый день +100500млн$, на мелкие расходы. И здесь заверте. Т.к. я вырос намного больше, и серой массы в голове еще немного добавилось, запросы в Google так-же скорректировались, и были ориентировочно такими: "Как выполнить игру под андроид, на каком языке программирования пишутся программы под андроид". Андроид подобрал вследствие того, что у меня был мобильник на данной ОС. Здесь я уже выяснил, что приложения на андроид пишутся на Java с маленькой долей XML. Я начал активно обучать Java, работал по книжке, выучил ключевые операторы, и даже написал собственный первый калькулятор)). Когда понял, что дальше я в книге ничего не понимаю (Герберт Шилдт был, если не ошибаюсь), я начал читать уроки по программированию собственно под андроид. С любовью создавал GUI В первые вариантах Android Studio, но потом понял, что дальше, развитие идёт не в ту сторону, и опять забил еще на годик.

Глава 4:Как же я был не прав.

И так, мне уже 17 лет. И опять у меня появилось желание создать игру(В этом случае конечное и продолжается это стремление уже год). В этом случае, целью стало самообразование, и получение опыта в игрострое. Думал я, думал, и решил в конце концов применять движок. С самого начала останавливался на LibGDX, но ввиду отсутствия туториалов на русском (они есть, однако их довольно мало), перешел на Unity. К данному времени Unity стала бесплатной для инди разработчиков. Я начал с серии видеоуроков, автор которых знал, ну совсем немного больше, чем я. Из данных уроков я уловил ключевые принципы работы Unity, а прочие проблемы решал уже по мере их возникновения, путём энергичного гугления. Начать решил с простенькой 2D игры, в который вы играете за вертолёт, который уничтожает иные вертолёты, которые летят ему навстречу. Вот скрин

создания игры

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

создания игры

Вообще, при разработке этой игры, мне сильно помогло то, что до этого я учил Java, они с C# аналогичные, и сильно посчастливилось, что тогда мне стало плнятно принципы ООП. Так, как я с детских времен не дружу с графикой (никогда не умел рисовать), все ресурсы я брал на iconfinder’е. Хорошо там есть бесплатные. Вот и сделал я первую версию игры. Вертолёты летают, ракеты стреляют и убивают врага, но всё-равно есть ощущение недоделанности

семь дней

Решил я опубликоваться на Гугл Play. Заплатил 25 баксов, за аккаунт разработчика, выложил игру и дал ссылку всем друзьям. Игру скачало 6 человек. Мне было как-то не жалко, ведь делал я её в целях самообразования, но всё-равно остаётся ощущение какой-то недоделанности.

Глава 5: Что дальше

Главную историю я вам поведал. Дальше планирую поэтапно совершенствовать игру, добавляя новые фишки. К примеру в настоящий момент делаю внутриигровой магазин. Т.е. при убийстве врага вы получаете определенное кол-во наличных средств, которые можете израсходовать на новые пушки, новый вертолёт или смену заднего фона. Быстрее всего выйдет колхозно, т.к. с графикой я абсолютно не дружу, а на iconfinder’е нет подходящих картинок, но я не унываю. Вот вам скрин меню, которое еще не вышло

создания игры

Знаю, смотрится убого, но я старался. Если среди вас есть декораторы, готовые работать за еду идею, пишите — буду очень рад)).

Разработка игр. С чего начинать?

игра

Что должны просчитывать будущие изготовители игр? С какого языка начать обучение? К чему стремиться? На кого равняться? И что предстоит проделать обязательно?

Большинство поклонников рок-музыки когда нибудь берут в руки гитару. Фанаты спорта страстно мечтают о выходе на поле для игры в футбол, баскетбольную площадку или корт для занятий тенисом. Ну а те, кто сделал сотни угонов в GTA, провел десятки часов в компьютерных клубах за Counter-Strike или достиг немалых успехов в MMORPG, наверное думают о карьере разработчика игр.

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

К чему стремиться?

Перед тем как идти в супермаркет вы составляете перечень покупок (хотя бы в голове). Перед выездом в второй конец города – ложите маршрут. Ну а прежде чем обучаться разработке игр, лучше задаться вопросом: чем конкретно вы желаете заниматься? Создавать мобильные приложения или браузерные игры? Работать в большой компании или небольшой? Профессионально заниматься разработкой игр или посвящать этому свободное от работы время? И если первое, то что волнует вас больше: создание интерфейса, отшлифовка геймплея или написание скриптов?

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

Какой язык обучать?

Более того, от цели зависит и ответ на животрепещущий вопрос: с какого языка программирования стоит начинать?

Так, будущим разработчикам игр вроде Minecraft и мобильных приложений под Android необходимо обратить большое внимание на Java. Для начала рекомендуем пройти интенсив "Основы Java-программирования", тем более, что это бесплатно. Тем, кто заглядывается в сторону iOS – на Objective-C. Для браузерных игр иногда хватает знания Ruby-On-Rails. Для очень маленьких и обычных временами достаточно HTML. В изготовлении Flash-игр применяется ActionScript, а для написания скриптов разной сложности вам потребуется JavaScript или, возможно, не очень популярная Lua. Для создания же маленьких консольных игр требуется знание C#.

Что до наиболее крупнобюджетных игр (как говорят иначе класса AAA), то большое количество из них оборудованы собственным или заимствованным у сотрудников "движком". Нередко, тем не менее, весь "движок" или его подавляющая часть написана на C++. Конкретно данный язык употреблялся при разработке большинства популярных "игрушек" – от Doom 3 и Call Of Duty до FIFA и The Sims. Тогда как классика вроде Quake была написана на C.

Тем не менее, в освоении C++ есть и закавыка – излишняя сложность. Неспроста ведь говорят, что приниматься за C++, не зная иных языков, – все равно, что начинать изучение математики с линейных уравнений.

Достаточно ли одного языка?

Одна из прелестей программирования – возможность непрерывного саморазвития. В создании же игр (особенно больших) самосовершенствование, также изучение как можно большего количества языков, – не каприз, а важная необходимость. Так, квалифицированные изготовители, трудящиеся на пользу гигантов индустрии игр, нередко встречаются с необходимостью по очереди писать на 7-8 языках. При этом, кроме указанных выше языков, им приходится изучать, например, Python либо и совсем SQL (как вы понимаете, для создания баз данных).

Благодаря этому, если вы все таки захотели связать судьбу с производством больших игр, готовьтесь стать "полиглотом". Более того, чем больше языков вы освоите, тем более оригинальные и различные задачи перед вами поставят. Ну и, разумеется, шансы на получение работы мечты ощутимо увеличатся.

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

Фактически все квалифицированные изготовители не зависимо от регалий и таланта начинали с маленьких приложений: настольных игр, вариантов популярных "игрушек", простеньких "флэшек". Тогда они не думали о больших выставках вроде E3, а накапливали неоценимый опыт. Отчего же не сделать тоже? Не обязательно при этом писать архисложный код. Для дебюта достаточно применения специализированных программ для создания игр (например, Game Maker). Ведь даже благодаря несложному инструментарию вы существенно облегчите себе жизнь. Самое первое, в миниатюре поймете логику и структуру фактически любого игрового приложения. Второе, набьете шишки, которые заживут во время перехода к серьезным проектам. Напоследок, третье, обогатите фотографии. Ведь даже обычная "игрушка" просит большое количество времени, терпения и искусства для выдумки концепции, написании кода и устранения багов. Более того, демонстрирует, что с производством игр вы знакомы не только в сухой теории.

Что брать за ориентир?

Тот, кто мечтает стать писателем, прочтёт сотни книг прежде чем напишет хотя бы одно слово. Мастера игры на фортепиано на зубок знают отличные произведения Штрауса, Шопена и Бетховена. Знаменитые же художники перед большими выставками наизусть заучивали историю искусств.

В создании игр действует тот же принцип. Вы не сумеете формироваться в вакууме. Благодаря этому играйте, вдохновляйтесь мастерами и, как губка, впитываете лучшее. При этом постарайтесь смотреть на приложения не глазами "геймера", а взором разработчика. Говоря иначе: транспонируйте игру. Задумайтесь, почему в этот момент времени "бот" побежал налево, а не назад? Из-за каких факторов меняется сила и точность удара в спортивном симуляторе? Как создать "эффект усталости" при продолжительном беге персонажа? Как выполнить таким образом, чтобы во время дождя игрок слышал звук капель, а не свиной визг? В общем, проникайте в суть. Попытайтесь воспроизвести в голове методы, с которыми сталкиваетесь во время игры. Уж поверьте, аналогичный конструктивный подход поможет вам в будущей нелегкой, но чертовски увлекательной карьере разработчика игр.

Как создать RPG-игру за семь дней с нуля и без бюджета. Часть I

RPG за семь дней? С нуля? Это вообще возможно?
Я рискнул, и я сделал это.

На просторах интернета полно информационных ресурсов, доступных очень маленьким, независимым (indi) разработчикам игр . На одном таком общественном форуме, в процессе спора, я имел неосмотрительность ляпнуть, что, если мне дадут неделю времени, компьютер со свежеустановленной Windows, и прекрасное соединение с Интернет, я смогу создать достойную игру, не потратив на это ни цента. Нет, она разумеется не сумеет конкурировать с Halo 2 или чем-то того же уровня(если бы я мог создать такую игру за семь дней, я бы давно бросил работу), однако она будет довольно интересной и играбельной.

Tom Bampton, автор аннуитетных обзоров игр в номинации «Игра на день» (www.gameinaday.com), сказал: "Дерзай!" Потом он добавил добавочное требование — я должен сделать это, не применяя существующие игровые движки. Мне можно применять исключительно ключевые библиотеки / API.

В первую очередь я уклонился от такой идеи. У меня не было лишнего времени, чтобы на 7 дней отстранится от разработки текущего игрового проекта на работе. Но потом я подумал: да черт с ним, ведь Что такое неделя? В обычной компании, к примеру в Е.А., рабочая неделя составляет 40 часов. Так отчего же не сделать игру не за календарную неделю, а за 40 чистых часов? Это уже реальнее, — но я не хотел создавать следующий тетрис или арканоид. А как насчет ролевой игры — одного из достаточно сложных игровых жанров? Это реально?

Я знал, что это будет чрезвычайно сложно. Но я принял вызов.

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

Так вот, как я создал игру на протяжении одной недели с нуля, и без бюджета. Если вам лень читать, и вы желаете поскорее посмотреть в конец повествования, чтобы выяснить, как смотрится окончательный продукт, все посмотреть его баги, вы можете скачать версию игры для Windows тут : http://www.rampantgames.com/hackenslash.html

ПЛАНИРОВАНИЕ
Цель
Создать олдскульную RPG в тематике устаревших игр начала 80-х, с видом "сверху вниз", к примеру как The Temple of Apshai, Ultima III, и Telengard. Игрок будет перемещаться через комнаты в обычном подземелье, сражаясь с самыми разными монстрами при помощи «меча и магии». Поэтапно он будет улучшать собственные возможности получая опыт, повышая уровень, приобретая магическое обмундирование.

Однако, игра будет состоять не только из самого ведение военных действий. Игрок тоже будет иметь шанс прокрасться мимо монстров, или вступить с ними в беседы. Будут закрытые двери и сундуки, и уникальные специфики подземелья, имеющие случайные эффекты. В игре не будет длинных описаний или диалогов, — как правило это будет стереотипный hack & slash. Вы будете перемещаться по пути, пока не станете более сильным, чтобы встретится лицом к лицу с окончательным боссом, сделать quest, и успешно вернуться домой (в вашу стартовую комнату).

Правило № 1: Время разработки ограничено одной неделей (включающей 40 часов)
На разработку игры должно быть затрачено в сумме не больше 40 часов. Они будут включать время, которое потрачено на непосредственную работу над игрой и на ее обдумывание. Перерывы в создании больше, чем десять минут, не будут предусматриваться. Это будет "замечательная" рабочая неделя из 40 очень производительных часов.

За 40 часов будет выполнена полнофункциональная альфа-версия. Последующее допиливание, такое как финальная отладка игры, создание инсталятора для распространения в общее время предусматриваться не будут, никакой новый функционал на данном шаге добавлен не будет. Документирование процесса разработки также не принимается во внимание.

Правило № 2: Применять исключительно бесплатные инструменты
Кроме ПО, которое поставляется с установкой Windows, применяется только свободный софт, если есть возможность с открытым исходным кодом. Смысл этого — показать, что не требуются не дешёвые (или пускай даже недорогие) инструменты для разработки игры. На оборудование, такое как сканер, микрофон и цифровая фотокамера, это правило не действует — если у вас их нет, можем считать, что их можно у кого-то взять в долг.

Правило № 3: Нет движкам, только типовые библиотеки / API
Игра должна быть сделана "с нуля" без применения существующих игровых движков. Никакого обмана, и создания игры или каких-то ее частей при помощи конструкторов игр или применения аналогичного ПО.

• Python 2,3 (http://www.python.org/)
• PythonWin
• PyGame (http://www.pygame.org/)
• Py2exe – чтобы собрать что выйдет в исполняемый файл для распространения. (http://starship.python.net/crew/theller/py2exe/)

• Gimp 2,0 (http://gimp-win.sourceforge.net/)
• MS Paint (тот что идет с Windows) — для вставки скриншотов, охваченных клавишей PrintScreen (GIMP из-за чего то уклонился это делать)
• Бесплатные текстуры были взяты (http://www.textureartist.net/textures/index.htm) и (http://www.mayang.com/textures/)

Audacity (http://audacity.sourceforge.net/) плюс мой микрофон или бесплатные.

Распорядок (План) работ
Расписания составляют, чтобы их потом нарушать, но все же они необходимы, чтобы контролировать прогресс и строки, и вносить корректировки если для этого есть необходимость.

Час 1-10: Базисная архитектура
Проектирование движка и центральных элементов. Получить отображения мира на экране. Я должен осуществить возможность переместить тестового игрока во всем мире, и смотреть на вещи, а потом превратить то, что выйдет, в игровой редактор.

Час 11-20: Возможности игрока
Реализация всех ключевых возможности для игрока — перемещение, атака, открытие дверей, смерть, выбор вещей и применение инвентаря. Создать каркас представления всех объектов во внешней среде, для тестирования возможностей игрока вместе с миром.

Час 21-30: Оживление мира
Добавить ИИ, игровые события, ловушки, эффекты. К концу данного этапа я обязан иметь достаточно полное техно-демо, включающее все главные особенности игры.

Час 31-40: Добавление контента и правил
Получить из техно-демки полную игру. Добавить все добавочное содержание. Достигнуть законченности и баланса игровой механики. Зашлифовать все, на что хватит времени, добавить эффекты, анимацию и т.д.

После 40 часов: Испытание и релиз игры
Испытать, и удалить найденные ошибки (не добавляя хорошие возможности!) Собрать все в кучу, и положить в интернете. Окончить документацию.

Дневник разработчика Hackenslash: Игра за семь дней

Час 1 – Необузданное проектирование и основные классы
Этот час был проведен за разработкой отдельных базисных классов для игры — и применения их в последующем планировании. Мир будет представлен в виде очередности комнат, объединенных порталом. Все в мире основывается на помещениях, сродни тому, как это было в устаревших адвенчурах или MUDах. Большинство объектов в игре продемонстрированы как " GameObject ", который имеет позицию и содержание (также содержит и иные объекты — карта содержит комнаты, в комнате может быть сундук, в сундуке — меч . и, я думаю, меч содержит пару комнат, но мы так делать не станем.)

• Я создаю объекты creature (существо) и player (Игрок)
• Я генерирую комплект аксессуаров для существ, и внедряю их в класс. По всей видимости я задрот, который играет очень много в РПГ игры. Я пока еще не знаю точно, как станет смотреться и работать игровая механика.
• Я делаю объект room (комната), наследуемый от GameObject. У комнаты есть ширина, высота, и стены — и на данный момент больше ничего.

Поэтапно я начинаю понимать, как все будет работать, и вношу нужные исправления. Я даже не пытаюсь применять PyGame на этом этапе, и программа не демонстрирует ничего, не считая консоли. Но я чувствую, что все что сделано — большой прогресс!

Час 2 — PyGame 101
Цель этого часа — инициализация PyGame, ну и начать хоть что-нибудь рисовать на экране. В действительности, я провожу очень много времени за чтением документации PyGame, стараясь выяснить что там и как, потому как у меня практически нет опыта применения PyGame или SDL.

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

Час 3 — Если бы стены имели уши, я б их сильно отругал.
Цель этой часа – отметить контуры комнаты поверхностями стен, и отобразить это на все еще черном экране. Чтобы выполнить это, мне необходима комната, и мне необходима графика. Приходится много сидеть над GIMPом, правя загруженные из интернета текстуры, так чтобы они трансформировались в подходящие тайлы. Я создаю класс менеджера текстур. И я заполняю структуру образца комнаты. Я также потратил чуть выше времени, просматривая документацию PyGame, чтобы отыскать что-нибудь еще, что можно применить, дабы сделать работу легче.

Час прошёл. А у меня все тот же черный экран. Стен как не было, так и нет.

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

игра

Не имея досконального плана проекта, на самом деле довольно нетрудно ошибиться, когда сделав конкретную работу Вы спрашиваете "Что дальше?" Я решил, что если рисунок одной комнаты отлично, то изобразить две – вдвойне лучше.

• Для хранения созданных комнат я создал файл "minidungeon".
• Я начать прибавлять логику порталов "portals" — отверстий в стенках, для перехода в остальные комнаты (и предоставляющих всю информацию о смещении, нужную для правильного отображения соседних комнат).

Час 5 — Hackenslash получает больше комнат

• Я изменил наименование окна на "Hackenslash!". Просто вследствие того, что это круто.
• Я создал карту объектов для хранения комнат, и класс MapMaster содержащий несколько карт.
• Я добавил вторую комнату и подключил к первой через портал.
• Смежные комнаты подключены к текущей через порталы, и сейчас отображаются на экране.
• Я исправил некоторые ошибки отсечения, чтобы правильно отображались стены, отчасти выходящие за пределы окна.

Час 6 — за который мы улучшаем скил рисования

• Добавил класс дверей, а еще настроил карты для расположения двери (дверь должна быть общей для 2-ух комнат). (Правка: Жаль, что я никогда это так и не применял!)
• Я создал еще 3 тайла стен, соединил их в одно изображение.
• Графический вид стен меняется в зависимости от типа.
• Я делаю обычную графику для вида сверху вниз.

Часы 7-8 – Вращения и восклицания!

• Я разобрался, как в PyGame поворачивать растровые изображения.
• Я добился плавного вращения тестового игрока. Много регулировок нужно для корректировки угла вращения.
• Я выяснил, как применять шрифты в PyGame, и я создаю несколько классов для отображения и анимации текста.
• Добавил класс для автоматической отделки текста, потому как эта практичность будет часто применяться в дальнейшем.

игра

Часы 9-11 – Елементы — бррр!

И вот снова, мне необходимо обсудить вопрос "Что дальше?".

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

Я решил, что детали могут занимать больше, чем один тайл, и могут быть повернуты на любой градус. (Правка: В ретроспективе, очень тупое решение — я провел большое количество времени на его реализацию, но оно оказалось практически бесполезным.)

семь дней

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

Часы 12 — 13 — Нам необходим Лут!

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

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

Я сильно отстаю от графика, что же мне делать?
Черный фон кажется чрезмерно уродливым, благодаря этому я замостил полы в середине комнаты коврами — отдельными тайлами.

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

Зато уровень сейчас смотрится круто. Ну, как минимум круче, чем черный.

создания игры

Часы 15-16 — Click! Click!

• Я занялся управлением мышью и обработкой событий.
• Добавил управление персонажем мышью. Движение пока происходит рывками, нет плавной прокрутки уровня.
• Игрок может выходить за пределы комнаты, отсутствует проверка столкновений.
• Я исправил несколько ошибок.
• Помучил GIMP и создал привлекательные лестницы.
.
На разработку уже потрачено практически 17 часов, так что я начинаю чуть-чуть нервничать. Я прошёл 2/5 пути создания игры, — окончился второй "рабочий день" разработки. То, что у меня уже сделано поражает, но я понимаю, что сделать осталось много больше. У меня есть еще 4-ре часа, чтобы окончить ключевые возможности игрока, и вложится в график. Это будет не легко . но я все равно не жалею, что потратил лишнее время на рисование графики!

Час 17 – Медленно перемещаемся, пока не стукнемся лбом о стенку

• Большинство времени затрачено на доводку графики и корректировка ошибок.
• Добавлено нахождения столкновений и плавная прокрутка, во время движения игрока.
• Игрок сейчас может делать пару шагов (оборотов) в ответ на действие грызуны.

Час 18 — Переступаем пороги

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

Час 19 — Лестница в небо, Дьявольское меню

Мой брат вызвался сделать музыку для игры. Он сделал музыку для Void War, и вышло очень хорошо. Это напомнило мне, что необходимо сделать воссоздание звука (и музыки). Как бы в PyGame это сделать очень просто, благодаря этому оно не должно занять большое количество времени. (Правка:. Я так и не отыскал для данного времени, к большому сожалению в Hackenslash вы не услышите ни единого звука.)

Моя следующая цель находится в отделке взаимного действия с существами и предметами. Мне сильно нравится, как это сделано в The Sims и Neverwinter Nights, когда вы хотите взаимодействовать с игровым объектом, рождается контекстное меню. Я планирую осуществить что-нибудь подобное.

• Учу лестницы переместить игрока в новую комнату.
• Я чуть-чуть проштудировал Интернет и документацию PyGame, ища, нет ли где открытых начальных кодов аналогичного меню на PyGame. И не отыскал ничего.
• Я начал делать свое меню.

Часы 20 — 21 — Что там с меню?

• Я продолжаю работать над меню. Меню может быть легко подключено к объекту, точнее объект как бы порождает меню, что дало возможность легко осуществить обратную связь для отделки выбора игрока.
• Я начал работату над меню вещей. Оно уже рождается в необходимом месте, и дает возможность выбирать какой-либо пункт, однако при нажатии пока ничего не выполняет, не прекращает работу только кнопка закрытия меню.

создания игры

Час 22 – Уснуть в процессе

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

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

Час 23 — Боевые параметры!

• Я изменяю (ну практически только начал работу) некоторые из предметов класса, сделанные в первый час.
• В правом верхнем углу я создаю панель, на которой будут отображаться параметры игрока.
• Я оптимизировал это окно, превратив его в изображение, которое рисуется быстрее, чем шрифты. Изменения этого изображения происходит собственно тогда, когда изменяются связанные с ним параметры персонажа.

создания игры

Час 24 — Меню игрока

• Я закончил оптимизации для окна показателей.
• Создал всплывающее меню, которое рождается, когда игрок кликнет на персонажа.
• Я создал быстрое меню для применения зелий, кастования заклинаний и т. д.
• Я исправил некоторые ошибки в работе меню.

Час 25 – До(раз)пиливаю стены и полы

Этим утром у меня в мозгу возникла идея (неужто у меня такой большой мозг, что в него вмещается столько идей?) как удалить проблематику перекрытия стен в соседних помещениях (см. описание восемнадцатого часа). Что, если я буду рисовать только половинки стен? Подобным образом перекрытия не будет вообще, и не надо прибавлять непростую логику для определения и исправления перекрытий.

игра

Я начинаю работу над реализацией такой идеи. К большому сожалению, в действительности придуманное упрощение намного больше затрудняет отрисовку комнаты (в особенности полов), и осуществить его можно не очень быстро, как я надеялся. Для создания и отлаживание данной конструкции было затрачено где то час. Но оно того стоило.

Отлаживая код, я обнаружил еще пару ошибок, которые связаны с переходом между комнатами.

Я только что осознал, что прошло более чем 3/5 отведенного на разработку времени, и что осталось меньше пятнадцати часов, чтобы окончить игру. Посмотрев распорядок нужных предназначений игры, и прикинув, что на реализацию каждой необходимо в среднем час, мне стало плнятно, что на реализацию всего мне необходимо около двадцати пяти часов. На десять часов больше, чем есть. Проект официально под угрозой срыва.

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

• Двери: Вырезано! Я очень хочу сделать двери в игре. Жалко прощаться с этой функцией — тем более, что я уже какое то время работал на ней. Но остается еще очень много работ, к примеру ИИ. И, пожалуй, потребуется 2-3 часа, чтобы заставить их работать, а их у меня нет.
• Инвентарь: облегчить! Забудьте о добавочном инвентаре, и возможности смены оружия по вашему желанию. Все, что выбрано и не стало текущим оснащением, будет сразу пересчитано в наличные средства.
• Ловушки: облегчить! Я желал бы иметь очень много ловушек с интересными и разными результатами их активации. Не участь. Ловушки станет иметь простой оптический эффект, наносить урон и на время повышать вероятность нарваться на нечаянного монстра
• Луки (стрелковое оружие): Вырезано! В игре будет только оружие ближнего боя, на расстоянии можно нападать заклинаниями.
• Сохранение / загрузка игры: облегчить! Сберечь можно лишь персонажа, а не состояние мира. (ПРАВКА: Я и этого не сделал!)
• Система частиц: Отложить! Создание системы частиц перемещено в самый низ перечня приоритетов. Я сомневаюсь, что придется их делать. Хочется сделать потрясающие оптические эффекты при помощи частиц для заклинаний . но, быстрее всего, этого никогда не будет.
• Заклинания: облегчить! У меня была серьезная идея о заклинаниях: их можно было бы отыскать в виде свитков, и кол-во более десятка. Это грустно, но будет только пару заклинаний: Излечение, Урон, Ослабление, Усиление, и Регенерация. При повышении уровня, можно позволить игроку улучшить заклинания за счёт увеличения числа магических очков.
• Анимация монстров и игроков: Вырезано! Я никудышный дизайнер, чтобы выполнить это очень быстро.

Решая, что я не буду делать (или то, что отложу на после), не меньше главное сделать вывод, что необходимо сделать обязательно.

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

Превосходно, с преимуществами разобрались, продолжим разработку.

Час 26 — Бросим кости

Я работаю над механикой «игральных костей», — механизма, благодаря которому в игру будет внесен компонент случайности. Потому как у нас нет ограничения настоящих костей, мы можем получать случайное количество любого желаемого диапазона. К примеру от 1 до 33, или от 6 до 17. Так что я могу кинуть кости, сопоставить то, что выпало со своей атакой и защитой врага. Если выпавшее количество выше защиты, атака удалась.

К примеру, предположим, что у меня общее значение атаки 15. Я атакую монстра, у которого 10 защиты. Мои шансы 15 из 25 (25 =15 +10), или 3 из 5. Так игра будет генерить случайное количество между 1 и 25, и если оно больше десяти, я выиграю.

Для вычисления нанесённого урона применяется несколько иной способ. Я добавил защищающемуся параметр «броня», а атакующему "урон". Я генерирую случайное количество от 1 до их суммы, а потом вычитаю броню. Если результат меньше единицы, урон не наносится. В другом случае, он равён получившемуся результату. Подобным образом, если монстр, с уроном равным 10 атакует игрока с 5 очками брони, игра будет генерить количество от 1 до 15, из которого вычтет 5, то, что выйдет, и есть нанесённый урон.

Это разъяснение и описание заняло времени больше, чем его реализация.

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

Автор: Jay Barnson, служащий Rampant Games
Перевод: nilrem (перевод свободный)

Игра на Unity за 10 минут для Андроид и ПК / Как создать свою игру / Урок C#


Комментариев нет, будьте первым кто его оставит

Вам нужно войти, чтобы оставить комментарий.