Как написать игру на 1с
На хабре не очень много уроков по созданию игр, почему бы не поддержать отечественных девелоперов?
Представляю вам свои уроки, которые учат создавать игры на C++ с использованием SDL!
Что нужно знать
- Хотя бы начальные знания C++ (использовать будем Visual Studio)
- Терпение
О чем эта часть?
- Мы создадим каркас для всех игр, в качестве отрисовщика будем использовать SDL. Это библиотека для графики.
В следующих постах будет больше экшена, это лишь подготовка :)
Почему SDL?
Я выбрал эту библиотеку как наиболее легкую и быструю в освоении. Действительно, от первой прочитанной статьи по OpenGL или DirectX до стотысячного переиздания змейки пройдет немало времени.
Теперь можно стартовать.
1.1. Начало начал
Скачиваем SDL с официального сайта.
Создаем проект Win32 в Visual Studio, подключаем lib'ы и includ'ы SDL (если вы не умеете этого делать, то гугл вам в помощь!)
Также необходимо использовать многобайтную кодировку символов. Для этого идем в Проект->Свойства->Свойства конфигурации->Набор символов->Использовать многобайтную кодировку.
Создаем файл main.cpp
Пока что он ничего не делает.
Царь и бог каркаса — класс Game
Game.h
Создаем файл Project.h, он нам очень пригодится в будущем
Уже чуточку получше, но все равно как-то не густо.
1.2. Графика
Создаем аж 2 класса — Graphics для отрисовки графики и Image для отрисовки картинок
SDL_Surface — класс из SDL для хранения информации об картинке
Рассмотрим Graphics
NewImage — есть 2 варианта загрузки картинки. Первый вариант просто грузит картинку, а второй после этого еще и дает прозрачность картинке. Если у нас красный фон в картинке, то вводим r=255,g=0,b=0
DrawImage — тоже 2 варианта отрисовки картинки. Первый рисует всю картинку целиком, второй только часть картинки. startX, startY — координаты начала части картинки. endX, endY — конечные координаты части картинки. Этот метод рисования применяется, если используются атласы картинок. Вот пример атласа:
(изображение взято из веб-ресурса interesnoe.info)
Рассмотрим Image
Он просто держит свой сурфейс и дает право доступа к своим закрытым членам классу Graphics, а он изменяет сурфейс.
По сути, это обертка над SDL_Surface. Также он дает размер картинки
В конструкторе инициализируется SDL и создается экран.
Функция Flip должна вызываться каждый раз после отрисовки картинок, она представляет получившееся на экран и чистит экран в черный цвет для дальнешней отрисовки.
Остальные функции малоинтересны, рекомендую разобраться в них самому
Нет, вы все правильно делаете, этот файл и должен быть таким :)
Надо изменить Game.h, Game.cpp и main.cpp
Game.h
Тут мы добавляем указатель на Graphics и в Execute добавляем размер экрана
Ничего особенного, разве что не пропустите функцию SDL_Quit для очистки SDL
Тут мы создаем экран размером 500 на 350.
1.3. Ввод
Надо поработать со вводом с клавиатуры
SDL_Event — класс какого-нибудь события, его мы держим в Input'е для того, чтобы не создавать объект этого класса каждый цикл
Ниже расположены методы, не представляющие особого интереса. Примечание: методы с окончанием Down вызываются, когда клавиша была нажата, а с окончанием Up — когда опущена.
Здесь мы обрабатываем наш объект событий в функции Update, а остальные функции просто проверяют тип события и его значения.
Изменяем теперь Game.h и Game.cpp
Как видно, мы добавили указатель на Input и создали методы-возвращатели Graphics и Input
1.4. Итоги
Это был первый урок. Если вы дошли до этого места, я вас поздравляю! У вас есть воля, присущая программисту :) Смотрите ссылки в начале статьи на последующие уроки для того, чтобы узнать еще много нового!
Сел смотреть видео про расчет зарплаты, но, в третий раз уснув, решил немного отвлечься.
Спойлер: в итоге расчету зарплаты ничего не досталось.
Во время просмотра видео в голову почему-то пришел вопрос: можно ли в 1С как-то получать нажатия клавиш, хоть в каком-то виде? Оказалось, что на команды можно в качестве горячих клавиш вешать просто клавиши, без CTRL, ALT, SHIFT.
В общем, расскажу весь процесс разработки по порядку, сразу уточнив - опыта написания "Змейки" на других языках не имею, как в неё играть - особо не помню, написал в целом случайно.
- Создаем внешнюю обработку
- Добавляем управляемую форму
- Добавляем команды для поворота влево, вправо, вверх, вниз и назначаем на них горячие клавиши. Я использую WASD
- В качестве вьюпорта на клиенте получается использовать только ТабличныйДокумент, поэтому сразу добавляем его на форму. Для такой простой игры возможности по рисованию линий в табличном документе не пригодятся, будем просто раскрашивать ячейки
- Изначально я хранил координаты в реквизитах формы и закрашивал одну ячейку после каждого нажатия на клавишу, но в итоге в обработчиках нажатий осталось только изменение направления движения, которое я хранию по-одинэсному, просто текстовой строкой - "Влево"
- Сегменты змейки хранятся в массиве, массив каждый раз копируется в новый, чтобы реализовать перемещение (На мой взгляд, правильная альтернатива - связный список)
- Обновление игрового мира (в нашем случае - перемещение змейки) производится отдельной функцией, которую можно вызывать при нажатии на клавиши (больше для отладки) или по таймеру. Обработка ожидания в 1С, к сожалению, имеет разрешение всего 0.1 секунды, но я оставил её. Третий вариант - игровой цикл, Game loop.
- Добавляем добавление монеток (у меня массив монеток, могу себе позволить добавлять несколько штук сразу)
- Реализуем проверку столкновений с границей, хвостом и монетами
- По факту этой проверки если нужно завершаем игру
- Всё! В итоге получился модуль размером в 340 строк, но это я себе ни в чём не отказывал.
- Устанавливаем git (1C (BSL) Extension Pack ) и GitLens.
- Добавляем удаленный репозиторий - можно это сделать на сайте гитхаб, например.
- Затем связываем удаленный репозиторий с локальным
git remote add necro - Далее во время работы повторяются следующие шаги:
- Положить (или изменить) обработку в каталоге репозитория
- Проиндексировать файлы git add .
- Коммит git commit
- Отправка в удаленный репозиторий git push
Написанная Active-X компонента встраивается на форму обработки 1С (тестировалось на 1С 8.0, 8.1, 8.2, 8.3 не управляемые формы, 1С 7.7.). Компонента предназначена для моделирования игрового поля (вывод, движение спрайтов - фреймов, обработка коллизий, управление спрайтами-фреймами и т.д.) при разработки логики игры на встроенном языке 1С. Приложен пример обработки в которой реализована игра "Бита".
Реализованы методы (описаны в отдельном файле):
- вывод примитивов на форму компоненты - пиксель, линия, прямоугольник, овал. Вывод текста.
- создание фреймов (фрейм - это, например, изображение машины или биты и пр.), вывод на экран, изменение положения фреймов в экране, работа с теневым экраном атрибутов, уничтожение фреймов и т.д.
- считывание, установка координат фреймов по ID фрейма
- анализ коллизий объектов между собой (удар объектов друг по другу)
- задание фрейму режимов неведимости, типа фрейма и т.д.
В разработке - разработка интерфейса для работы с OpenGL, работа с шейдерами, разработка функций вывода видео на форму компоненты в заданных местах через DirectShow, вращение фрейма, масштабирование фрейма, разработка функции Goto - идти фрейму по вектору.
ВНИМАНИЕ . Перед регистрацией компоненты необходимо отключить UAC в винде и перезагрузить комп. Потом можно включить.
Специальные предложения
(3) По-моему, на 1С писать игры - это всё равно, что на Unity делать приложение для учёта деятельности предприятия - теоретически возможно, но зачем?
К тому же 1С тут вообще не при чём - всё в компоненте отдельной сделано, из 1С только команды подаются.
(6) Ну, не хотите - не скачивайте и не используйте. Я же Вам насильно не рекомендую это использовать. Кому надо - могут придумать как в своей деятельности это использовать. А разговоры надо или не надо нужно или не нужно - так это из серии - что круче - ассемблер или 1С? - каждому свое. Можно ведь написать граф. интерфейс в обработке по управлению, например, графами - куча всего где можно это использовать. А игры - так это одна из областей.
(7) не надо так агрессивно воспринимать критику, тем более, что и критики как таковой не было.
Напишите об этих областях - и будет вам низкий поклон. Данная статья называется "Разработка игр на языке 1С. ". Об этом я и писал, что, во-первых, для разработки игр есть куча специальных инструментов, во-вторых, к языку 1С эта "разработка игр" имеет такое же отношение как грузчик к экономическому развитию - очень уж посредственное.
Нет, не из серии. Из этой серии был бы абстрактный вопрос - что круче, Юнити или 1С. Но вопрос задан в конкретном контексте - разработка игр. Вы на ассемблере тоже игры пишете?
(9) Да нет, агрессии нет. Если что не так - простите. Наверно, не тот слоган выбрал для ответа. Я в том смысле, что каждая разработка должна оцениваться не с позиции надобности / не надобности, а с позиции возможности применения.
По поводу ассемблера - да, писал игры (долго, но работали игры очень быстро - это просто было ради урока).
По поводу областей - например:
1) для моделирования связей сущностей (на экране) моделирование по принципу взял и бросил (типа IDEF0, FDF, IDEF3 - опять же обращаю Ваше внимание, я не пишу что надо тут же делать IDEF на 1С - просто как пример).
2) для разработки интерактивного алгоритма взаимодействия пользователя и программы 1С. Например - на форму компоненты вывести кнопки(другие элементы), при нажатии производится смена расположения кнопок, вывод интерактивных помощников на экран (боты?) их состав, вид, какие - то элементы могут быть подсвечены, другие картинки выведены, и т.д.
3) при обработке раскроя можно интерактивно выводить процесс раскроя листа, интерактивно дать пользователю управлять ходом раскроя
Дальше можно еще придумать много чего
(9) Ну вот - уже пишут ( ann guskova (acanta) ) - про диаграмму Ганта, у которой можно перемещать блоки, и обрабатывать события перемещения - начала/окончания. Также из своей практики вспомнил - состояния исполнения заказов - графически представлять, и при нажатии/щелчке мыши обрабатывать события для отображения информации. Сами из своей практики можете далее накидать.
(1) Тем более, из под 1С COM - портами управлять можем, под Arduino писать тоже могем, так почему же игры не писать? :-)
(5) Да, можно. Можно получать координаты мыши, признак нажатия на кнопку мыши, координаты и передвигать спрайты - кубики.
(10) Да, можно с помощью компоненты отрисовывать диаграмму, и при щелчке мыши пепемещать блоки и отлавливать эти события
ActiveX тупиковая ветка развития. Тем более для 1С, которая почти полностью переходит в веб. Вы опоздали лет на 10 :)
ActiveX это круто, кроссплатформенная технология будущего !
Молодцы, продолжайте в том же духе !
(14) сомнительно, что 1С откажется от поддержки COM до перехода на какую-нибудь 1С 9.0. от Windows тоже клиенты вряд ли откажутся, если глобальный форс-мажор не случится. а значит ни куда ни кто не опоздал. кроссплатформенность это не более, чем плюшка. есть, хорошо, а нет, то и так сойдет. к ней надо стремиться, но без нее пока можно обойтись.
ActiveX работает только в толстом.
Соответственно, про тонкий и веб можно забыть.
(16) Добрый день. Ну, это ведь обходится. Можно написать программу которая будет транслировать изображение из 1С в оконный интерфейс удаленного клиента + все реакции на нажатие и пр. Если интересно - можем на эту тему пообщаться.
Сейчас все конфигурации разрабатываются в тонком клиенте.
Использование ActiveX в толстом заставляет пользователя переключаться между режимами тонкий/толстый.
Хочешь это = запускай так, а хочешь другое = запускай это же, но уже по другому.
Костылей можно всяких напридумывать, только как этим пользоваться и сопровождать.
Тем более, повторяюсь, я рассматриваю в контексте разработки коммерческих решений, которые будут оцениваться на костыльность потенциальными покупателями.
(21) Да я не об этом - знаете программу Ammy - Admin? вот так же и сделать можно - у клиента запускается программа - окно - и в этом окне отображается окно из удаленного сервера - и вся работа идет, фактически, на удаленном сервере - а клиент и сервер обменивается событиями нажатия кнопок и сжатой видеоинформацией. А на сервере также стоит планировщик - который раздает контекст окон и принимает события от клиентов.
Наше решение тоже базировалось на ActiveX собственной разработки для моделирования.
В итоге клиенты начали требовать работу через веб и эту ветку разработки пришлось бросить.
Нашли решение, как располагать визуальные элементы на форме тонкого клиента, но это тоже тупиковый путь, потому что нельзя работать через браузер, а это основной вектор развития сегодняшнего дня.
Итого
Вся графика должна быть реализована через JS + HTML + CSS на поле HTML документа, а все компоненты для системного взаимодействия должны быть реализованы через NativeDLL библиотеки. Сейчас IE10 предоставляет достаточно хороший функционал для решения задач.
Писать коммерческие приложения в расчете на COM это тупик. Любой конкурент вас задавит одной возможностью работать через веб.
(17) А я и не предлагаю это как коммерческое решение. Кому интересно - пусть пользуется. А кому нет - пусть не пользуется :-). Да и конкурентов я не боюсь - т.к. конкурировать этой AX я ни с кем не хочу :-)
(17) Выводы едины (по ГРАФИКЕ в 1с) для любого 1с-ника который желает сделать кросс-платформенный интернет ориентированный, многопользовательский проект:
- Реализация графики на HTML5 Canvas + Js. = ПОЛНЕЙШАЯ кросс-платформерменность, кросс-браузерность, не зависимость от конкретного оборудования.
- В рамках 1с Конфигуратора реализация в 1с Тонком Клиенте
- В рамках форм - Управляемая форма, поле с типом = ПолеHTMLДокумента
- Обмен информацией между окном формы и HTML js кодом через события ПолеHTMLДокумента
- Возможность горячей замены js кода внутри окна 1с во время выполнения игрового цикла, который обновляет графику в ПолеHTMLДокумента
- Возможность программного изменения поведения, спрайтов, реакций и т.п. внутри кода 1с
- Полное управление js кодом из 1с и его обратная реакция = обмен информацией (нажатия на игровые объекты внутри HTML5 Canvas)
Я данные принципы выстрадал потом и кровью целый год.
Прошел те-же тернии, как и автор данного поста.
Я понял что Active-x это ТУПИК.
Для интернет-ориентированных проектов, которые запросто запускаются как обычные приложения ГДЕ УГОДНО (телефон, компьютер, планшет)
НУЖНО ОСВАИВАТЬ HTML5 + JavaScript
Что касается ЛОГИКИ интернет-игры в рамках 1с-Предприятия:
- МОЩНЕЙШАЯ структурированная логика многопланового развития проекта позволяет в кратчайшие сроки сделать из заготовки игры полноценный Интернет-проект
- Расширение до мощнейшего интернет-портала
- Возможность сделать собственный сайт в рамках единого проекта с автоматической поддержкой собственного интернет-сервера без сложностей с хостингами, требуется лишь покупка домена.
- Возможность сделать кросс-платформенный много-пользователький проект, развить его из заготовки.
- Мощнейшая возможность реализовать многоуровневую мощную и быструю логику с поддержкой сервера для расчета критически важных вычислений, поддержка множества видов Баз ДАнных (MS SQL, MySQL, SQLLite и т.п.)
Все это позволяет для ТЕХ КТО МЫСЛИТ МАСШАТАБНО
создать собственный интернет-проект.
Я уже создал собственный проект и на данный момент основная сложность для меня - реализация HTML5 + js графики.
Приходиться осваивать.
Остальное уже умею.
Всего 2 года назад я была 17-летней школьницей и ничего не знала о программировании. Это не помешало мне начать учиться и через несколько месяцев выпустить свою первую игру в Steam. Сегодня у меня более 10 игр для ПК, интернета и мобильных устройств и свыше 1,9 млн игроков.
Не важно, что вы умеете сейчас — при должном желании вы тоже сможете делать игры. Два года назад такое казалось невозможным: это было самое сложное, что я сделала в жизни, и оно того стоило. Теперь я понимаю, что в разработке игр, как и в любом другом деле, вы растёте только тогда, когда пробуете, ошибаетесь и совершенствуетесь.
Всему, что я знаю, я научилась сама, а теперь научу вас.
Чтобы сделать игру, нужно пройти 6 этапов:
- Концепция
- Графика
- Программирование
- Звук
- Подготовка к публикации
- Публикация
Концепция
Совет
У вас есть классная идея. Но как оформить её на бумаге?
У каждого свой путь. Одни составляют дизайн-документы по 60 страниц, другие напишут лист неразборчивых заметок. Не знаю, как удобнее для вас, но обязательно зафиксируйте следующее:
Когда приходит вдохновение, бросайте всё и пишите. В следующий раз, когда мысль уйдёт, не понадобится высасывать идеи из пальца.
Инструменты
- Заметки на Mac OS.
- Google Документы.
- Трелло.
- Google Диск.
- GitHub. Требуется git и Unity .gitignore.
- Unity Collab. Самый простой инструмент, но с ограничениями в бесплатной версии.
- Книга Джесси Шелл «Искусство геймдизайна».
- Сайт для разработчиков игр Gamasutra.
Графика
Совет
Если вы не умеете программировать, сначала прочтите раздел «Программирование». Вряд ли вы хотите потратить время на графику и выкинуть её потому, что под неё не написать код.
Даже если вы не умеете рисовать, игру можно сделать красивой, используя три визуальных принципа: цвет, форма и объём.
Thomas Was Alone — простая и прекрасная игра
Интерфейс
Подумайте, как сделать игру уникальной с помощью цветовой схемы, шрифтов и иконок без потери удобства для игрока. Понятна и читается ли важная информация?
Неудачный и удачный шрифт
2D-анимация
Анимацию можно реализовать двумя способами:
- Покадровая анимация. Когда вы отрисовываете каждый кадр. Для этого используйте таблицы спрайтов и Sprite Packer в Unity.
- Скелетная анимация. Отрисовывается каждая подвижная конечность, затем анимируется её позиция и повороты. Это быстрее, легче и тратит меньше оперативной памяти. Для 2D-анимации на Unity используйте пивоты (точки привязки) или плагин Anima 2D.
Что ещё может пригодиться
Советы, которые применимы не только к игровой графике, но и к другим программам:
Без тайлов и с тайлом
- 9-slice объекты с немасштабируемыми границами и масштабируемым центром позволяют увеличивать изображения без заполнения памяти.
Пятно расширяется, но углы остаются прежними
- Делайте разрешение каждого объекта таким, чтобы оно делилось на 4 или было степенью числа 2.
- В Photoshop вы можете сохранить каждый слой в отдельный файл через Файл > Экспорт > Быстрый экспорт в [формат изображения].
Инструменты
- Photoshop.
- Gimp.
- Paint Tool SAI — для графики в стиле аниме.
- Blender — мощное ПО со сложным обучением.
- Maya — для анимации.
- Max — для отрисовки.
-
— шрифты, иконки и прочее.
— высококачественные объекты, готовые к использованию в играх.
— огромная библиотека графики, созданной другими пользователями.
-
— закрытое сообщество дизайнеров.
— сообщество дизайнеров, к которому может присоединиться любой желающий.
— сообщество создателей инди-игр.
Программирование
Совет
Выберите игровой движок, среду разработки и начинайте погружаться в код.
-
Типы данных и переменные. В основе кода лежат данные, которые хранятся в переменных. Можно объявить переменную так:
int — тип данных, i — имя переменной, = 0 — значение переменной.
Используя оператор else, можно расширить условие и отобразить что делать, если условие не соответствует истине:
For-циклы похожи на while-циклы. Для while мы пишем так:
Равнозначный for-цикл будет таким:
Если в коде что-то идёт не так, на помощь приходят исключения. Они как бы говорят: «Так, погоди, здесь ты сделал что-то нелогичное. Перепроверь ещё раз».
О чём ещё надо знать:
Как и любому навыку, программированию нужно обучаться. И, возможно, это окажется довольно интересно.
Другие немаловажные основы программирования:
- Объектно-ориентированное программирование. Делает код более естественным.
- Соглашение об именовании. Называйте классы, методы и переменные так, чтобы вам и другим программистам была понятна их цель. Например, назовите функцию атаки ближнего боя,
- Сопрограммы. Позволяют начать выполнять действие, продолжать в течение нужного времени и затем прекратить. Я использую их для визуальных эффектов взрывов, резких движений.
- Класс ScriptableObject. Он хранит данные с меньшими затратами, чем базовый класс MonoBehaviour.
Инструменты
- Visual Studio Code (для MacOS) — не зависает, имеет встроенную справочную информацию и удобные «горячие» клавиши.
- Visual Studio (для Windows).
- MonoDevelop — устанавливается с Unity, иногда подвисает.
В Unity Asset Store, bitbucket и GitHub очень много бесплатных ассетов. В своих проектах я использую минимум по два. Они упрощают жизнь, но далеко не идеальны. Заметили ошибку — исправляйте и говорите разработчику о ней.
-
.
.
.
.
.
.
— работает над Unity, доступные проекты визуальных эффектов с открытым исходным кодом.
Совет
Аудио способно создавать настроение и погружать в игру, но для него нужна память.
Для начала решите: вы хотите звук? Если да, будет ли в игре музыка, звуковые эффекты, озвучка или повествование.
В любом случае потребуется запись и сведение таким образом, чтобы звук подходил под настроение игры. Например, Bastion использует органические и инструментальные звуки, хорошо вписывающиеся в мир игры. Crypt of the Necrodancer включил в себя смесь электронных ритмов и восьмибитного рока, чтобы передать темп и яркость игры.
Погружение решает. Если звуки не совпадают с настроением игры, игроку будет сложно погрузиться в ваш мир.
Инструменты
Приложения для работы с аудио:
- Logic Pro (только для MacOS). Цена 200 $.
- FL Studio. Цена 99–899 $. Есть бесплатная демоверсия.
- Reaper. Цена 60–225 $.
- Audacity. Бесплатная программа. Имеет мало возможностей, но полезен для чистки аудио.
-
. Здесь можно найти бесконечно много звуков и музыки под лицензией Creative Commons. Начните с этого плейлиста. Использовать можно бесплатно, но не забудьте указать авторство.
.
.
Подготовка к публикации
Совет
Существует небольшая вероятность — на 99,99 процентов, что в игре есть ошибки. А это значит, что самое время заняться баг-тестом.
Как тестировать игру на баги?
- Дайте другим поиграть в игру. Желательно вместе с вами, на случай, если они столкнутся с ошибкой и не смогут понять или объяснить её.
- Проверьте игру на разных платформах. В редакторе может не быть проблем, но работает ли она там, где её будут запускать? Будьте особенно внимательны с Linux и Android.
- Проверьте консоль на исключения. Если нашли исключение, найдите файл и строку, где сработало исключение. Если оно звучит по-марсиански, поищите решение в сети, и подумайте, почему именно в этой строке срабатывает исключение.
- Напишите в консоль. Попробуйте вывести логи (системные файлы) в предполагаемых местах ошибки. Введите разные переменные и сверьте полученные значения с ожидаемыми. При несовпадении — исправляйте.
- Проверьте логи. Системные записи вашего проекта дадут больше информации, чем консоль. Прочтите строки, где сработало исключение. Гуглите всё, что не знаете.
- Поспите. Всё починится с утра. Это просто плохой сон :)
Типичные ошибки
В чём дело: функция выполняется с несуществующей (null) переменной.
Быстрое решение: проверьте, является ли переменная null.
Примечание: Проверьте, какие кавычки вы используете.
" //правильные кавычки;
" //ненужные кавычки, они принесут вам немало ошибок.
Советы по оптимизации
- Установите нужную частоту кадров. Для визуальной новеллы хватит 20 кадров в секунду, а вот для шутера нужны 60. Низкая частота кадров тратит меньше времени на отрисовку.
- Анимация / система частиц / выборочная обработка. Объекты, невидимые для камеры игрока, не обрабатываются. Персонажи анимируются, частицы обновляются, 3D-модели обрабатываются только в поле зрения игрока.
- Сжатие текстур и звуков. Для сжатия текстур используйте Crunch. Потоковая музыка и распаковка звуковых эффектов перегружают игру. Попробуйте снизить качество аудио. Сжатие может заметно снизить качество объектов.
- Не позволяйте Raycast касаться лишних объектов. Raycast похожи на маленькие лучи, выстреливающие из ваших пальцев или мыши, когда вы касаетесь экрана или кликаете. Найдите объекты, которые не должны реагировать на действия игрока и удалите их из вычислений Raycast.
- Используйте объектный пул. Частое создание и удаление большого количества объектов снижает производительность. Вместо этого, объедините их в список, очередь или другую структуру. Например, пули должны объединяться в один массив.
- Оптимизируйте шейдеры. Задайте материал для каждого визуализатора. Игре не придётся создавать новые материалы в начале игры, что сэкономит ресурсы. Пусть визуализатор включает только то, что функционально необходимо.
- Используйте AssetBundles (дословно «комплекты активов») вместо старой системы Resources в Unity. AssetBundles экспортирует ваши файлы из Unity и помещает в один файл, экономя оперативную память.
Инструменты (только для Unity)
Публикация
Совет
Самое время показать всему миру своё творение.
Продвижение — самая волнительная стадия. Если вы сомневаетесь, вам поможет сообщество гейм-дизайнеров. Помните, что вы не одиноки, и раз прошли так много, нужно завершить дело до конца.
Если хотите, чтобы все узнали об игре, напишите анонсы для игровых медиа, участвуйте в фестивалях и конференциях.
Отправьте описание игры в прессу за неделю до выхода — дайте людям время написать о ней. Может случиться, что о ней не станут писать, но помните: журналисты любят красивые истории о разработчиках, уникальную или противоречивую идею и медиа-кит.
- Найдите в сети контакты авторов, которые вам нравятся: почта, страница в LinkedIn, Твиттер.
- Найдите почту издания в разделе «О нас» или внизу страницы.
- Игра станет популярна на платформах.
- Вы напишете напрямую. Не говорите о себе, кратко, красиво и убедительно расскажите про игру. Используйте гифки и скриншоты для привлечения внимания.
Письмо видеоблогеру Markiplier, чей канал насчитывает более 21 миллиона подписчиков
Это прекрасный инструмент для продвижения: Agar.io обрела популярность на 4chan, Butterfly Soup подскочила в загрузках после внимания в Твиттере.
Как лучше: публиковаться через издателя или самому. Хотите пойти по пути Hotline Miami, выпущенной Devolver Digital, или перенять опыт Farmville и Doki Doki Literature Club?
Чтобы сотрудничать с издателем, нужно сначала его найти. После этого будет небольшой ворох бумажной работы, зато вы получите достаточно средств для развития игры.
Если собираетесь издаваться самостоятельно, готовьтесь тратить немало времени на изучение маркетинга. Вы можете провалить кампанию по продвижению, но в процессе наберётесь ценных знаний и сэкономите деньги.
Количество установок игры растёт
Получилось! Теперь расслабьтесь, возьмите что-нибудь вкусное и отдохните. Вы работали не покладая рук и заслужили это.
Главное, что вы сделали игру и многому научились. Сейчас этого достаточно, и всегда есть возможность попробовать ещё раз с новыми знаниями.
Инструменты
Сервис presskit() помогает разработчикам оформить описание игры для прессы.
Платформы для публикации:
-
(PC) — 100 $ за публикацию.
(PC).
(PC) — бесплатная публикация после разрешения.
(MacOS) — 100 $ в год, требуется учётная запись разработчика Apple.
(PC / Web) — бесплатная публикация.
(PC/Web) — бесплатная публикация.
— бесплатная публикация.
(Web) — бесплатная публикация.
(Web) — бесплатная публикация.
(Web) — бесплатная публикация на сайте, заканчивающемся на «___.github.io».
(Web/Mobile) — бесплатная публикация.
(Mobile) — 25 $ за публикацию.
(Mobile) — требуется учётная запись разработчика Apple.
-
. Приём заявок до 1 октября.
. Международный фестиваль инди-игр. Приём заявок до мая–июня.
. Игровая премия Швеции. Приём заявок до июня.
. Приём заявок до декабря.
. Приём заявок до ноября.
Заключение
Нет простого пути создания игры. Есть только ваши решительность и усилия.
За каждым Half-Life, Minecraft и Uncharted лежат океаны крови, пота и слез.
Кен Левин, создатель Bioshock
Вы будете допускать ошибки, чувствовать себя в тупике и плакать. Это нормально — значит, вы растёте над собой.
Игра «Угадай число»
Здравствуйте! Помогите мне, пожалуйста. Нужно написать игру «Угадай число». Программа с помощью.
Игра Угадай число
Я создаю текстовую игру на Python. Цель такова: Компьютер загадывает число от 1 до 100, и игрок.
Игра Угадай число
Здравствуйте!Я только начинающий поэтому прошу сильно не бросаться камнями в мою сторону.Прошу.
Игра угадай число
Нужен только часть кода для этой игры. Есть загаданное число, а пользователь вводит в текстбох.
Решение
1. Создай форму с двумя закладками "Игра, Настройки".
2. В настройках задавай диапазон чисел и сохраняй значение
3. Определи диапазоны "Горячо. холодно и т.д." в зависимости от заданного диапазона
4. В игре при вводе числа проверяй в какой диапазон попало введенное число.
где лучше создавать форму?(понятное дело что в обработке) в управленческой или в обычной?
Добавлено через 4 часа 34 минуты
я плохо разбираюсь в 1С. помогите с кодом
Игра «Угадай число»
4. Игра «Угадай число». Компьютер загадывает число, человек отгадывает. Всего 5 попыток. (random)
Игра: “Угадай слово”
Игра: “Угадай слово” Подготовить массив из минимум 20 слов. В начале игры с помощью генератора.
Игра Угадай число в VS
Здравствуйте. Нужно создать прогр Угадай число на VS. Пользователь вводит интервал для числа, а.
Угадай число игра
Народ. Надо сделать игру:Пользователь загадывает трехзначное число. Если последние цифры чисел.
Игра угадай число
Помогите написать программу. уже целый день мучаюсь - никак не допрут, но мысли какие-то есть) .
Читайте также: