Бесплатные конструкторы игр | Gamin

Что вас ждет после публикации приложения

Так как приложение планировалось изначально без рейтинга, оно было полностью сделано на JavaScript, на клиентской стороне, т.е весь код доступен каждому и каждый «знающий» мог отправить свое число в место заработанного результата.

Основные фильтры на «важных» участках были выставлены. Но контроль входящего результата был слабый и мог прийти настоящий результат, а мог прийти и такой «999999». Причем приходил такой результат от школьников, которые пользовались программами для взлома типа «Charles», как мне радостно они сообщали в личку, со своих реальных аккаунтов и с реальных ip-адресов.

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

И еще, сервер отправляет сгенрированный ключ при первом обращении. Клиент же, должен его вернуть с результатом. Без этого ключа, результат не примется и если все соответствует, и все проходит проверку, то результат записывается в БД, и генерируется новый ключ, который опять отдается клиенту. Это сделано для того, чтобы повторно запрос с результатом не могли отправить, как делается в программе «Charles».

Тут, школьники уже отсеялись. В личку стали писать студенты, которые знают JavaScript.

После внедрения дополнительных проверок, вроде бы уже никто не пишет. Так как всего одна попытка и в случае чего бан аккаунта ВК.

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

Еще будут писать кидалы предлагающие купить у вас приложение от 3000руб и до 3000$, которых если погуглить, то можно будет наткнутся на не совсем лестные отзывы, о них.

Школьники, с разными деловыми предложениями, стать админом группы, или админом приложения. Будут еще спрашивать: «в какой программе ты создал эту игру».

Советчики, которые знают как лучше развивать ваше приложение.Тролли, куда же без них.

Что же из себя представляет “код” для аперо?

Не пугайся слова код, никаких “010010” из матрицы здесь не будет.

Код для Аперо – это обычный текст, размеченный особым образом.

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

Для этого создай тестовую онлайн игру для обучения здесь, назови например “Обучение” и описание, например: “Это моя игра, в ней я научусь создавать свои текстовые игры онлайн на платформе Аперо”. (Доступно только зарегистрированным пользователям)

Нажми кнопку “Создать!”, и игра появится в твоем списке разработки здесь. После этого появится блок для редактирования исходного кода, туда ты будешь вводить свой код. Там уже есть базовый исходный код для примера, но его можно удалить.

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

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

кнопка

Кнопка создается так:

КНОПКА(Вторая локация,Перейти на вторую локацию)

Что же произойдет после запуска? На экране появится кнопка с текстом “Перейти на вторую локацию”, которая будет видна игроку. А если он на нее нажмет, то попадет на локацию с именем “Вторая локация”, которая должна быть объявлена ниже.

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

А теперь вспомним, чему мы научились в этом уроке, и закрепим все это в следущем примере.

Первая локация
Этот текст из первой локации.
КНОПКА(Вторая локация,Перейти на вторую локацию)
СТОП

Вторая локация
А это текст из другой локации - "Вторая локация" .
КНОПКА(Первая локация,Вернуться обратно на 1-ю локацию)
СТОП

Запустим и посмотрим, что получится!

Кнопки работают, при нажатии мы можем перемещаться по локациям.

Уже даже этого достаточно, чтобы создавать свои простенькие текстовые онлайн игры! А теперь попробуй сам! Потренируйся, создай несколько локаций, создай в них по несколько кнопок, а не одну! На этом первый урок заканчивается, спасибо! В следующем уроке мы научимся создавать переменные и условия для развилок! [Урок 2. Создаем развилки в текстовых играх в разработке]

локации

Теперь нам нужно научиться переходить от выполнения одного куска кода к другому. Для этого надо разбить код на отдельные участки, или по-другому “локации”.

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

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

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

Не забывай в конце каждой локации писать строчку с командой СТОП.

Напишем парочку локаций:

Первая локация
Этот текст из первой локации.
СТОП


Вторая локация
Этот текст из второй локации.
СТОП

В коде выше есть две локации с именами “Первая локация” и “Вторая локация”.

Сначала код выполняется начиная с Первая локация и до команды СТОП

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

Blitz3d и darkbasic pro

Устаревшие игровые движки для создания 2D и 3D-игр. Языки программирования являются расширенными версиями Basic. Если вы не горите желанием изучать сложные игровые движки, то рекомендую начать с Blitz3D. Blitz3D в отличие от DarkBasic Pro является более оптимизированным движком и позволяет формировать рельеф по картам высот.

Читайте также  как удалить видео в ВК быстро и все сразу.

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

Кстати, в этом же архиве лежат две программы, которые легко и просто генерируют 3D-модели различных растений и деревьев.

Armory 3D – это игровой движок, который интегрируется в Blender, а EasyRPG – это свободный аналог RPG Maker 2000/2003. Это две разные программы, но объединяет их одна особенность: вы можете пощупать их, но для полноценного производства игр они пока не пригодны. Можете ещё глянуть R48 вместо EasyRPG Editor.

Lazarus – это свободный аналог Delphi, в качестве языка программирования используется Object Pascal. Lazarus, от слова, вообще не предназначен для создания игр, однако вы можете глянуть GLScene или Castle Game Engine.

DevelNext – это, по сути, тот же Delphi, только красивее, с PHP и большим количеством инструментов и возможностей для создания игр.

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

1. В них можно легко делать визуальные новеллы, квесты и прочие point-and-click игры. Эти среды предоставляют чрезвычайную гибкость, а потому вы можете придумать для своих игр уникальные и необычные игровые механики.

2. Эти среды умеют то, чего не умеют игровые движки. Мне, например, однажды приспичило для своей хоррор игры сделать возможность вывода документа на печать, если игрок найдёт секрет в игре и у него есть принтер. Godot Engine не умеет работать с принтерами, зато это можно реализовать в Lazarus, а в Godot написать функцию запуска стороннего приложения.

Gamefroot

Gamefroot – онлайн сервис для создания 2D мини-игр. В его основе – полноценный игровой движок на базе HTML5.

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

Есть в Gamefroot и специальный модуль для написания скрипта с пояснением алгоритмов и логики.

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

Для работы с сервисом регистрация необязательна. Однако авторизованным пользователям открываются дополнительные шаблоны и элементы.

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

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

Русского языка здесь нет, но чтобы начать делать игру с нуля , достаточно автоперевода браузера.

Proprofs

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

Сайт ProProfs также не имеет русского языка, но это легко исправить с помощью машинного перевода. Однако не все игровые модули поддерживают кириллицу.

Как пользоваться сервисом:

  1. Чтобы начать проект, пройдите регистрацию на сайте. После чего нажмите на главном экране кнопку «Создать свою первую викторину»;ProProfs Quiz Maker
  2. Выберите вариант «Создать личную викторину»;создание личной викторины
  3. Выберите шаблон (модуль).выбор шаблона для игры

В программе доступны следующие модули:

  • паззл;
  • кроссворд;
  • угадывание слов;
  • ответы на вопросы;
  • тесты.

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

Подписка на самый дешевый тарифный план ProProfs стоит 25$ в месяц (примерно 1700 рублей).

Ren’py

Ren’Py – программа для создания визуальных новелл с использованием 2Д и 3Д моделей. Ее движок базируется на собственном языке программирования, который достаточно просто освоить. Вся необходимая документация представлена на сайте разработчика.

После недолгой загрузки появится окно игры, проходя которую вы освоите функционал.

С помощью Ren’Py можно создавать дистрибутивы игр для запуска не только на компьютере с Windows, но и на других платформах:

  • iOS;
  • Android;
  • Web (запуск в браузере).

Также здесь есть возможность быстро извлечь текстовое содержимое сценария для перевода.

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

Rpgmaker

Название этого приложения говорит само за себя. RPGMaker VX Ace – средство разработки классических 2D ролевых игр. Создавать на ее основе продукты других жанров не получится. Для работы с этой платформой также не требуется специальных знаний, все управление ведется через интерфейс.

Несмотря на кажущуюся простоту, с помощью RPGMaker можно создавать большие игровые миры, наполненные персонажами и событиями.

К базовой версии приложения можно загрузить дополнительный модуль Game Character Hub: Portfolio Edition, который дает возможность разрабатывать новые персонажи и наборы сценариев.

Движок поддерживает воспроизведение трехмерной анимации небольшого размера. При необходимости скрипт игры можно изменить в любом текстовом редакторе.

Сейчас RPGMaker VX Ace можно купить в Steam со скидкой 85% за 179 рублей. Русского языка в стоковой версии нет, но при желании можно установить русификатор.

Второй этап

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

  • Перейти по ссылке .
  • Указать название и платформу, на которой проводилась разработка – в нашем случае это будет «Встраиваемое приложение».
  • Добавить описание.
  • Указать тип добавляемого объекта – игра, приложение, VK Apps и т.п.
  • Обозначит категорию: аркады, шутеры, стратегии и т.д.
  • Кликнуть по кнопке «Перейти к загрузке».

Для дальнейшего продвижения потребуется выполнить привязку телефона посредством СМС. Затем ознакомиться и согласиться с правилами раздела. Когда все готово, перед пользователем отобразится панель управления. В ней получится добавить скриншоты игры, дать ссылку на пользовательское соглашение для игроков. Само добавление выполняется путем указания ссылки на iFrame и мобильную версию приложения.

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

Читайте также  Получаем информацию из профиля «ВКонтакте» через открытый API на jQuery | Pandoge

Выпуск дополнений

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

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

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

#

Графические редакторы

Редактор, который станет для вас аналогом Фотошопа. По функциональности почти не будет уступать, если вы установите плагин Layer Effects. Может импортировать формат Фотошопа .psd. Запускается быстро, работает шустро.

Не верьте тем кто говорит, что после Фотошопа невозможно пересесть на Гимп. Освоиться в последних версиях Гимп очень легко, у вас уйдёт на это буквально день-два своей жизни.

И раньше я действительно порекомендовал бы вам GIMP, но Krita умеет всё, что умеет GIMP, только больше и удобнее. Тем более она тоже читает .psd, заточена ещё для художников, а разработчикам игр дали удобные инструменты для создания бесшовных текстур.

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

Ещё мне понравилось прилипание кисти (на англ. “snap”, эта фишка изображена на гифке), чтобы быстро рисовать ровные прямые линии или идеальные круги, не пытаясь выверять движения мышки или стилуса на микроскопическом уровне.

Здесь уже выходила статья с перечислением редакторов для создания пиксель-арта. Однако там не была упомянута Pixelorama, созданная в Godot Engine :) Хорошая минималистичная программа, имеются кисти разных форм, можно создавать покадровую анимацию, можно рисовать в онлайне.

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

Забавный редактор, позволяющий рисовать в стиле ASCII-арт.

Залог успеха

Главным элементом, который практически в 100% случаев гарантирует успех, является идея. Именно от концепции будущей игры зависит ее популярность, а соответственно и получаемый доход.

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

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

  • HTML;
  • CSS, Adobe Flash;
  • Action Script;
  • JavaScript.

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

Змейка изнутри

Напомню, что речь идет о «змейке», далее ее код будет разбираться. Если вы решили сами написать змейку, то можете пропустить этот пункт, а то получится как в известной фразе: «убийца – дворецкий».

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

Сперва генерируется поле из простых div’ов. Координаты указаны в качестве идентификатора div’а, которые позволяют обратится к любой клетке. Далее создаем змейку на этом поле, путем выделения клеток, цветом и заносим координаты тела змейки, в многомерный массив.

Потом создается бонус(еда для змейки). Опять сохраняем в массив координаты бонуса.

После того когда бонус съеден, мы собираем пустые клетки в массив (без клеток на которых находится сама змейка) и из них, выбираем случайным образом другую клетку, и уже ее делаем бонусом. Если пустых клеток не обнаружено то пользователь – победитель.

При движении, в массиве, мы меняем только две клетки, заднюю – удаляем, а переднюю (незанятую змейкой), по направлению движения – красим в цвет змейки. И при каждом ходе проверяем, не столкнулись ли мы с хвостом, или с бонусом.

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

Пример:X=100. Y=200.Змейка движется сторону X , с нулевой позиции. 0,1,2,3..99, [если клетки нет и направление не меняется, то пишем в массив 0 по x]. А с Y, тоже самое.

Теперь разберем небольшую модификацию.

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

Здесь работают два таймера, с разной скоростью, которые передвигают бонус и змейку. Можно было бы сделать все в одном таймере, но тогда скорость была бы одинаковой, т.к. нужно проходить каждую клетку, не перепрыгивать.

Еще столкнулся с проблемой, что при движении навстречу друг к другу, бонуса и змейки, не происходит съедение первого. Из-за того что они независимо друг от друга движутся. Когда происходит проверка, бонус уже переместился на другую клетку.

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

Игровые движки

Примеры игр на Defold

Просто хороший 2D-движок с языком Lua. Больше нечего даже добавить, всё прекрасно описано на официальном сайте.

Примеры игр на Cocos Creator

Более молодой 2D-движок в сравнении с Defold. Китайский аналог Unity. Можно программировать как на JavaScript, так и на TypeScript. В этом году выйдет Cocos Creator 3.0 – отдельная версия для разработки 3D-игр.

Обзор возможностей движка

Российский игровой движок для создания 2D и 3D-игр. Раньше был конструктором игр, однако разработчик пересмотрел подход и года два назад на свет выкатил полностью переделанный продукт. Летом этого года движок и вовсе стал свободным и бесплатным. Довольно симпатичный движок, но пользователи отмечают низкую производительность движка и разработанных на ней игр.

Примеры игр на Godot

Конструкторы игр

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

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

Два конструктора, специально заточенных под создание 2D-игр в жанре Квест. От вас не потребуется больших знаний в области программирования, всё создаётся в “два клика”.

Конструктор №1 для создания игр в жанре “Визуальная новелла”. Прост в использовании и изначально настроен для создания стандартных романов. Однако знание языка программирования Python позволит вам создавать более сложные игровые механики. Именно на Ren’Py созданы такие известные игры как Бесконечное лето и Doki-Doki Literature Club.

Конструктор помощнее для создания 2D-игр в самых различных жанрах. Вместо программирования логика игры строится на основе простых “событий” и “реакций на события”. Немного напоминает другой, но проприетарный конструктор ClickTeam Fusion.

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

Если вы пока ничего не понимаете в программировании, то познать основы вам поможет Scratch, где код строится максимально дружелюбно при помощи мышки и визуальных блоков. А после Scratch можно перейти и на языки программирования, например, Pascal, Python или C#

Первые доработки и добавление приложения в каталог вконтакте

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

Из-за отсутствия кнопки «Превратить html-файл с игрой в популярное приложение» на этом этапе пришлось подумать, погуглить и почитать. Вариантов, к которым я пришел, было несколько:

1. Делать сайт с игрой.2. Размещать игру в социальных сетях.3. Делать мобильное приложение.

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

Сказано — сделано. Залил игру на виртуальный хостинг, зашел в раздел VK Developers на сайте Вконтакте, нашел ссылку для создания IFrame-приложения, заполнил информацию и лицезрел свою игру, подгружаемой в iframe. Пока приложение не пройдет проверку, оно не появится в каталоге приложений и видно только создателю.

Тут ко мне пришло осознание того, что приложение выглядит малопривлекательно не только с визуальной точки зрения, но и с функциональной. Последовал мозговой штурм, по результатам которого была добавлена возможность выбора размера уровня (3х3, 5х5, 7х7, 9х9, 10х10) и немного переработан интерфейс.

Первые проблемы

После добавления приложения во Вконтакт, оно доступно для установки по прямой ссылке, но недоступно в поиске и не выводится в общем каталоге.

https://www.youtube.com/watch?v=zreUT2jMR2k

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

После того как приложение успешно прошло модерацию, оно попадает на третью позицию в каталоге новых приложений и далее, спускается вниз, а вскоре совсем пропадает. Первые две позиции, в новых приложениях — вроде платные и стоят около 1000 голосов.

Существуют еще негласные правила о которых нигде не написано, их можно узнать только от проверяющего.Отправил игру на модерацию. Ждать ответа долго не пришлось:

И вот тут пришлось изучать их API, писать скрипт рейтинга, который взаимодействует с моей базой данных и дополнительный модуль на JS. Таким образом, мое тестовое приложение из одного файла эволюционировало в не совсем простое. Самим приложением занимался в свободное время. Когда сделал все что нужно было, отправил на повторную проверку, и лег спать.

Проснувшись утром увидел пришедшую смс’ку: «ваше приложение одобрено и добавлено в каталог… и еще чего-то там».

Сразу кинулся смотреть. Игру установили 57 человек, спустя минуту обновил страницу — 100 человек, 200, 300, 400. Просидел целый день нажимая F5. К вечеру, людей установивших приложение было около 2000. На следующий день – в два раза больше. Через пару дней азарт уже пропал и участников, воспринимал как простые цифры. Кстати, модератор вернул 10 голосов, спасибо ему больше.

Простой игровой бот для вк, создаем игру для вконтакте исходники! | часть 1 »

Статьи / PHP

Бесплатные конструкторы игр | Gamin

Данная статья, начало создания игровых механик для своего бота Вконтакте. Многие из вас завадались вопросом: А как создать игрового бота для ВК, давайте начнем создавать классного бота для совместных игр.

1. Подготовка.
Так как мы еще не определились что именно будет в нашем боте, мы будем создавать это ниже, мы подготовим наше сообщество для создания нового бота, а так же подключим сразу базу данных и сделаем регистрацию.
Бесплатные конструкторы игр | Gamin
Создаем новое сообщество, указываем название, тематику и по желанию свой сайт (если есть).

Бесплатные конструкторы игр | GaminБесплатные конструкторы игр | Gamin
Переходим в настройки и включаем сообщения сообщества, а так же создаем новое приветствие для новичков :), тут же в подразделе Настройки для бота не забываем включить их, и разрешить  добавлять его в беседу!

Теперь переходим к настройке скрипта, назовем это основной файл отвечающий за прием событий от вк и их дальнейшей обработки 
Если нет сервера, нужно приобрести, рекомендуем хостинг FirstVDS нам подойдет и обычный хостинг VDS-OVZ-Разминка, цена на время написания статьи всего 90 рублей в месяц. После заказа Вам придет на почту данные для авторизации на сервере. Использовать можете любой хостинг, на ваш вкус и цвет. Главное условие поддержка PHP 5.6 (желательно 7.0 ) и MySQL. Далее переходим на сервер, создаем любое доменное имя куда будем заливать скрипты. Мы будем использовать IP адрес. Если с с настройкой сервера не понятно, то почитайте эту статью на нашем сайте, где мы наглядно показываем как загрузить файлы на сервер.

После того как разобрались с сервером, нужно загрузить как раз необходимые библиотеки и основной файл, скачать ниже:
Бесплатные конструкторы игр | Gamin
panamera.rar

Для работы с PHP я использую PHPStorm, это платный продукт, но как получить его бесплатно, Вам, наверно, объяснять не нужно :)

Распаковываем архив на сервер и открываем наш файл bot.php и пишем код который останется неизменным и может использоваться при создании новых ботов.

<?php

require_once('simplevk-master/autoload.php'); // БЛИБЛИОТЕКИ
require './vendor/autoload.php';// БЛИБЛИОТЕКИ

use KrugozorDatabaseMysqlMysql as Mysql; // КЛАССЫ ДЛЯ РАБОТЫ С БД
use DigitalStarvk_apivk_api; // Основной класс
use DigitalStarvk_apiMessage; // Конструктор сообщений
use DigitalStarvk_apiVkApiException; // Обработка ошибок

$host = 'localhost'; // По умолчанию localhost или ваш IP адрес сервера
$name = ''; // логин для авторизации к БД
$pass = ''; // Пароль для авторизации к БД
$bdname = ''; // ИМЯ базы данных
$vk_key = ''; // Длинный ключ сообщества, который мы получим чуть позже
$confirm = ''; // СТРОКА которую должен вернуть сервер
$v = '5.103'; // Версия API, последняя на сегодняшнее число, оставлять таким если на новых работать в будущем не будет

$db = Mysql::create($host, $name, $pass)->setDatabaseName($bdname)->setCharset('utf8mb4');
$vk = vk_api::create($vk_key, $v)->setConfirm($confirm);
$my_msg = new Message($vk);
$data = json_decode(file_get_contents('php://input')); //Получает и декодирует JSON пришедший из ВК

$vk->sendOK();



// ТУТ УЖЕ БУДЕМ ПИСАТЬ КОД //

Здесь нам нужно заполнить следующие поля:

$host = ‘localhost’; // По умолчанию localhost или ваш IP адрес сервера
$name = ”; // логин для авторизации к БД
$pass = ”; // Пароль для авторизации к БД
$bdname = ”; // ИМЯ базы данных
$vk_key = ”; // Длинный ключ сообщества, который мы получим чуть позже
$confirm = ”; // СТРОКА которую должен вернуть сервер
$v = ‘5.103’; // Версия API, последняя на сегодняшнее число, оставлять таким если на новых работать в будущем не будет

Получение ключа сообщества:
Бесплатные конструкторы игр | GaminБесплатные конструкторы игр | GaminА так же в разделе Тип событий обязательно включите Входящие сообщения

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

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

2. Регистрация новых пользователей в боте.
Для создания игрового бота понадобится регистрация используя базу данных. Мы будем Использовать для этого обертку на родным MySQLi. Для начала создаем через PhpMyAdmin новую таблицу users с полями:
Бесплатные конструкторы игр | Gamin

Или используем запрос ниже:

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = " 00:00";

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `vk_id` int(11) NOT NULL,
  `nick` varchar(20) NOT NULL,
  `status` int(11) NOT NULL,
  `time` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `users`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `users`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

Переходим к самому интересному, написанию кода. 

Для начала как всегда, создание переменных которые чаще всего будут использоваться в боте:

// ТУТ УЖЕ БУДЕМ ПИСАТЬ КОД //

// Переменные для удобной работы в будущем
$id = $data->object->message->from_id; // ИД того кто написал
$peer_id = $data->object->message->peer_id; // Только для бесед (ид беседы)

$time = time();
$cmd = explode(" ", mb_strtolower($data->object->message->text)); // Команды
$message = $data->object->message->text; // Сообщение полученное ботом
$new_ids = current($data->object->message->fwd_messages)->from_id ?? $data->object->message->reply_message->from_id; // ИД того чье сообщение переслали 
$userinfo = $vk->userInfo($id);
// Закончили с переменными 

Бесплатные конструкторы игр | Gamin

Пишем первую проверку, на входящее сообщение, именно туда мы будем вносить весь код

if ($data->type == 'message_new') {
    
    // ТУТ все что будем делать дальше
    
}

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

Обращаемся к базе данных, что бы проверить есть ли такой пользователь в ней:

if ($id < 0){exit();} // ПРОВЕРЯЕМ что сообщение прислал юзер а не сообщество

if ($data->type == 'message_new') {

    $id_reg_check = $db->query('SELECT vk_id FROM users WHERE ids = ?i', $id)->fetch_assoc()['vk_id']; // Пытаемся получить пользователя который написал сообщение боту
    if (!$id_reg_check and $id > 0) { // Если вдруг запрос вернул NULL (0) это FALSE, то используя знак ! перед переменной, все начинаем работать наоборот, FALSE становится TRUE
        // Так же мы проверяем что $id больше нуля, что бы не отвечать другим ботам, но лучше в самом верху добавить такую проверку что бы не делать лишних обращений к БД!
        $db->query("INSERT INTO users (vk_id, nick, status, time) VALUES (?i, '?s', ?i, ?i)", $id, "$userinfo[first_name] $userinfo[last_name]", 0, $time);
        $vk->sendMessage ($peer_id, "Приветствую  тебя, @id$id ($userinfo[first_name] $userinfo[last_name]), ты теперь один из нас, вступай в ряды мощных панамеровцев!");
    }

}

Бесплатные конструкторы игр | Gamin

Давайте сразу добавим кнопки, ведь это удобно, так как у нас бот называется PANAMERA, давайте сделаем какую-нибудь автомобильную игру, где ваша задача получить Porshe PANAMERA, но не будем ограничиваться этим, а начнем развивать механику в разные направления.

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

$bonus = $vk->buttonText('⏰ Бонус!', 'green', ['command' => 'bonus']);

Далее:

if ($data->type == 'message_new') {
    if (isset($data->object->message->payload)) {  //получаем payload
        $payload = json_decode($data->object->message->payload, True); // Декодируем кнопки в массив
    } else {
        $payload = null; // Если пришел пустой массив кнопок, то присваиваем кнопке NULL
    }
    $payload = $payload['command'];

    $id_reg_check = $db->query('SELECT vk_id FROM users WHERE vk_id = ?i', $id)->fetch_assoc()['vk_id']; // Пытаемся получить пользователя который написал сообщение боту
    if (!$id_reg_check and $id > 0) { // Если вдруг запрос вернул NULL (0) это FALSE, то используя знак ! перед переменной, все начинаем работать наоборот, FALSE становится TRUE
        // Так же мы проверяем что $id больше нуля, что бы не отвечать другим ботам, но лучше в самом верху добавить такую проверку что бы не делать лашних обращений к БД!
        $db->query("INSERT INTO users (vk_id, nick, status, time) VALUES (?i, '?s', ?i, ?i)", $id, "$userinfo[first_name] $userinfo[last_name]", 0, $time);


        $vk->sendButton($peer_id, "Приветствую  тебя, @id$id ($userinfo[first_name] $userinfo[last_name]), ты теперь один из нас, вступай в ряды мощных панамеровцев!", [[$bonus]]);
    }

    
    // Давайте для обработки кнопки воспльзуемся SWITCH - CASE
    switch ($payload) // Проще говоря мы загрузили кнопки кнопки в свич, теперь проверяем что за кнопка была нажата и обрабатываем ее
    {
        case 'bonus';
            $vk->sendMessage($peer_id, "Вы взяли бонус, Вам выпало N монет");
        break;
        
    }
    
    
}

Бесплатные конструкторы игр | Gamin

Давайте протестируем регистрацию и ответ на нажатие кнопки:
Бесплатные конструкторы игр | Gamin
Ответил не сразу, в коде были допущены следующие ошибки:
ids заменить на vk_id и добавить переменную $userinfo = $vk->userInfo ($id);
Так как статья пишется параллельно созданию  бота, могут быть допущены ошибки, выше в исходных файлах они будут исправлены.

Бесплатные конструкторы игр | Gamin

Давайте сделаем что бы бонус начислялся на баланс. Добавляем 2 поля к таблице USERS:

ALTER TABLE `users` ADD `balance` INT NOT NULL AFTER `time`, ADD `time_bonus` INT NOT NULL AFTER `balance`;

переходим к коду и пишем следующую проверку и рандом:

 case 'bonus';
        $time_bonus = $id_reg_check = $db->query('SELECT time_bonus FROM users WHERE vk_id = ?i', $id)->fetch_assoc()['time_bonus'];
        if ($time_bonus < $time){
            //    21600 минут = 6 часов
            $next_bonus = $time   21600; // Прибавляем 6 часов для следующего бонуса!
            $rand_money = mt_rand(100, 5000); // Рандомно выбираем число от 100 до 5000, используя встроенную функцию PHP mt_rand
            $db->query('UPDATE users SET time_bonus = ?i, balance = balance   ?i WHERE vk_id = ?i',$next_bonus, $rand_money, $id); // Обновляем данные
            $vk->sendMessage($peer_id, "Вы взяли бонус, Вам выпало $rand_money монет");
        } else { // Иначе сообщим о том что бонус уже взят!

            $next_bonus = date("d.m в H:i:s",$time_bonus);
            $vk->sendMessage($peer_id,"Вы уже брали бонус ранее, следующий будет доступен "$next_bonus"");
        }

        break;

Проверяем:
Бесплатные конструкторы игр | Gamin
Так это выглядит в базе данных:
Бесплатные конструкторы игр | Gamin
Отлично у нас есть деньги, пора бы начать их и тратить :) самое распространенное в играх конечно же казино, давайте сделаем что-то подобное, самое простейшее казино. Пока мы еще не придумали игровые механики для нашего игрового бота, сделаем фарм денег.

Как будет работать наше казино:
Казино все, казино 100, казино 1кк и прочие, означающие ставки. Погнали делать команду:

    if ($cmd[0] == 'казино'){ // Первая команда

        if (!$cmd[1]){ // если вторая команда пустая она вернет FALSE
            $vk->sendMessage($peer_id, 'Вы не указали ставку!');
        }elseif ($cmd[1] == 'все' or $cmd[1] == 'всё'){ // Если указано все

            $balance = $db->query('SELECT balance FROM users WHERE vk_id = ?i', $id)->fetch_assoc()['balance']; // вытягиваем весь баланс

            if($balance == 0) {
                $vk->sendMessage($peer_id, 'У Вас нет денег :(');
            } else {
                $result = mt_rand(1, 4); // 1 - проиграл половину, 2 - победа x1.5, 3 - победа x2, 4 - проиграл все
                $win_money = ($result == 1 ? $balance / 2 : ($result == 2 ? $balance * 1.5 : ($result == 3 ? $balance * 2 : 0)));
                $win_nowin = ($result == 1 ? 'проиграли половину' : ($result == 2 ? 'выиграли x1.5' : ($result == 3 ? 'выиграли x2' : 'проиграли все')));
                $vk->sendMessage($peer_id, "Вы $win_nowin, ваш баланс теперь составляет $win_money монет.");
                $db->query('UPDATE users SET balance = ?i WHERE vk_id = ?i', $win_money, $id); // Обновляем данные
            }
        } else {

         $sum =  str_replace(['к','k'], '000', $cmd[1]); // наши Кk превращаем в человеческий вид, заменяя их на нули :)
         $sum =  ltrim(mb_eregi_replace('[^0-9]', '', $sum),'0'); // удаляем лишние символы, лишние нули спереди и все что может поломать систему :), подробнее о функциях можно почитать в интернете
         $balance = $db->query('SELECT balance FROM users WHERE vk_id = ?i', $id)->fetch_assoc()['balance']; // вытягиваем весь баланс

            if($balance < $sum) {
                $vk->sendMessage($peer_id, 'У вас не достаточно денег');
            } else {
            $result = mt_rand(1, 4); // 1 - проиграл половину, 2 - победа x1.5, 3 - победа x2, 4 - проиграл все

            $win_money = ($result == 1 ?  $balance - ($sum / 2)  : ($result == 2 ? $balance   ($sum * 1.5) : ($result == 3 ? $balance   ($sum * 2) : $balance - $sum)));
            $win_nowin = ($result == 1 ? 'проиграли половину' : ($result == 2 ? 'выиграли x1.5' : ($result == 3 ? 'выиграли x2' : 'проиграли все')));

            $vk->sendMessage($peer_id, "Вы $win_nowin, ваш баланс теперь составляет $win_money монет.");
            $db->query('UPDATE users SET balance =  ?i WHERE vk_id = ?i',  $win_money, $id); // Обновляем данные
            }
        }


    }

Получилось довольно много кода, в будущем возможно мы еще вернемся для доработок, все зависит только от Вас, давайте попробуем это в действии:
Бесплатные конструкторы игр | Gamin
Получилось не плохо, теперь в нашем игровом боте есть казино!

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

Если статья понравилась, оцените ее лайком.

Исходники готового проекта:
panamera.rar

Ссылка на группу для теста

Самостоятельное создание приложения

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

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

Сервер, приложение, нагрузка

В качестве сервера выступал простенький VPS с такими характеристиками:

Debian 32-bit, RAM: 512mb, CPU: 500Mhz*2 – все это за 210 рублей в месяц.

Установленное ПО: Nginx – для раздачи статики, а для обработки данных, nginx перенаправляет запросы к Apache2 PHP MySQL.

Сама же игра написана на HTML(4.0) JavaScript и немного CSS, без использования фреймворков и без разных библиотек.

Все это было собрано из разных js/css модулей в один файл и пропущено через YUI Compressor для сжатия. В итоге был один html файл весом в 20-30кб, полноценная игра с рейтингом пару картинок, одна для фона, вторая — лоадер, для отображения загрузки.

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

Посетителей за все время:
image
image

Может для кого-то это и мало, а я честно говоря не ожидал что сервер выдержит. Напугали меня разные статьи, что мол сервера крутые нужны. А как оказалось, что и этого «много», используется 5-20% ресурсов из 100.

Загрузка процессора не поднималась выше 12% и то, если поднималась то на секунду и тут же становилось 0%, обычно прыгает с 0 до 4%.А использование RAM, не превышало 200Мб, даже когда буфер InnoDB с 8мб поднял до 32мб, на всякий случай.Возможно такие показатели из-за следующей архитектуры приложения, или из-за нетребовательных операций.

Создание игры для вконтакте

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

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

Николай и Евгений дошли до места, где появилась связь, сообщили в ЕДДС, что Барковская Татьяна Яковлевна найдена и требуется эвакуация, потом отправились за болотоходом. В это время инфорги подняли все оперативные службы, искали возможности для скорейшего вызволения Татьяны и Павла из леса. Но поисковики справились своими силами. В 2 часа ночи Николай и Евгений добрались на болотоходе до пострадавшей. Примерно в 7 утра Татьяну Яковлевну передали в скорую помощь.

Этапы создания игры

Существует несколько этапов создания развлекательных программ. Рассмотрим их подробно:

Этап I

https://www.youtube.com/watch?v=E7aaZwcax5M

Создание концепта. Данный этап необходим, чтобы «вживую» видеть собственную целевую аудиторию. Это вам поможет позиционировать свою игру.

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

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

Этап II

Создание прототипа игры. Вам требуется создать прототип так называемого «движка».

Этап III

Разработка альфа-версии. В это время программисты разрабатывают концепцию героев и общую графическую составляющую.

Этап IV

https://www.youtube.com/watch?v=6s-Odaut0ww

Создание бета-версии. Это важный момент. Должно быть готово практически все приложение и 70% всего контента. Пользователи уже могут испытать игру. В команду подбирают специалистов, проводящих тесты, и определяется время рекламной компании.

Этап V

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

Для разработки развлекательного приложения требуется обладать многими знаниями.

Итоги

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

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

  • выбрать платформу;
  • взять бумагу и карандаш и нарисовать свое виденье интерфейса игры (стартовый экран, экран выбора уровня, экран игры…);
  • записать правила игры и перечитать их несколько раз;
  • составить структурную схему взаимодействия между структурными частями игры (например, клиента с сервером), с указанием в какие моменты происходит каждое из них;
  • написать код рабочего прототипа игры так, чтобы потом этот код легко было использовать с учетом взаимодействий, выписанных в предыдущем пункте;
  • поиграть самому и дать поиграть друзьям с позитивным мышлением для получения первой обратной связи с точки зрения игровой механики (игра должна приносить удовольствие);
  • подумать над монетизацией для грамотного встраивания ее в игру;
  • сделать наброски основных этапов разработки, а затем максимально подробно расписать по пунктам что и в каком порядке делать;
  • если нужно, то начать искать людей, которые могут помочь сделать что-то лучше, чем можете вы сами;
  • периодически повторно выполнять пункты этого списка для улучшения детальности проработки проекта;
  • приступить к выполнению данного плана.
Понравилась статья? Поделиться с друзьями:
ТВОЙ ВК
Добавить комментарий

Adblock
detector