JavaScript vs. C++ создание одной и той же 3D-игры на обоих языках


Оглавление (нажмите, чтобы открыть):

Простая игра 3D на C++

19.07.2014, 05:32

Простая игра
Скиньте мне в файле ворда какую то простую игру в С++. Пожалуйста:'(

MemoryPuzzle — простая игра в консоли
Я тут сделал свою первую нормальную консольную игру на С++. Это простая игра. Игра также известна.

Простая игра на С#
Добрый вечер, хочу создать простую игру чтобы понять основы: что к чему и с чем это едят. Не.

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

Простая игра
Мне надо написать игру лабиринт, но мои способности что в C#, что в C++ очень малы. вот все на что.

19.07.2014, 07:50 2 19.07.2014, 09:10 3 19.07.2014, 18:31 [ТС] 4
19.07.2014, 18:31
19.07.2014, 18:44 5
19.07.2014, 19:51 6

кстати ребят, тоже задумываюсь об обучении 3д, почитываю книжечку Ламот А. — Программирование трехмерных игр для Windows — 2004. Она вроде немного устарела, но математика там неплохая. Вопрос — насколько имеет смысл читать прикладные вещи в ней (например, тот же z-буфер ятп не сильно изменился, как и алгоритм Брэзенхема), или стоит просто посмотреть математическую часть и идти дальше? Ну и он про DX рассказывает, конечно. Какие есть отзывы на эту тему? Рад буду послушать.

Также если есть эксперты в треде по тому же Mantle — её перспективы тоже интересны.

С++ или Javascript? [закрыт]

Здравствуйте. Недавно я начал поверхностное изучение JS. Здесь я задал вопрос о нем, но мне сказали, что лучше заняться С++. Скажите, что практичнее, легче, даёт больше возможностей? Насколько я знаю, JS не требует ничего, а С++ требует компилятор. Если не сложно, посоветуйте вместе с аргументами и ссылками. Буду очень признателен.

Закрыт по причине того, что необходимо переформулировать вопрос так, чтобы можно было дать объективно верный ответ участниками Shilgen, VenZell, Nicolas Chabanovsky ♦ 20 апр ’15 в 7:10 .

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

8 ответов 8

Вообще, странное противопоставление. Это два разных языка, созданных для совершенно разных целей и имеющие совершенно разное предназначение. Если Вы только начинаете изучать программирование, то лучше, конечно, начать не с JS, поскольку это довольно узконаправленный язык. Лучше С++ или даже С, поскольку он проще и короче. Это языки общего назначения, JS в основном используется для веб-программирования. Применение его для других целей экзотика.

Для С/С++ нужен компилятор. Какой лучше выбрать здесь уже обсуждалось неоднократно. Но повторюсь. Для начинающий лучше, на мой взгляд, среда разработки Dev-C++. Простенькая, бесплатная, но довольно мощная. Использует компилятор gcc.

Создание игры «Жизнь» на C++

Место действия игры — «вселенная» — размеченная на клетки ограниченная плоскость. Каждая клетка на этой плоскости может быть «живой» или «мертвой» (пустой). У клетки есть 8 соседей — окружающие ее клетки.

Правила игры

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

  • В пустой клетке, рядом с которой ровно три живые клетки, зарождается жизнь.
  • Если у живой клетки есть две или три живые соседки, то эта клетки продолжает жить. Иначе, клетка умирает (от «одиночества» или «перенаселенности»).

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

Игровое поле

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

Первое поколение игры будет генерироваться случайным образом. Для этого воспользуемся библиотекой из C++ 11.

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

Клетки-соседи

Подсчетом количества живых клеток будет заниматься функция get_live_count .

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

Функция read_point_neighbors принимает указатель на двумерный массив (для записи результата) и координаты x , y точки, для которой ищем соседей.

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

Функция принимает ссылку на массив игрового поля и координаты x, y клетки.

Смена поколения

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

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

Функция print_world будет выводить на экран состояние игрового поля для каждого нового поколения.

Игровой цикл

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

Компиляция

Для компиляции проекта нужна поддержка C++ 11. В GCC 4.7 такая поддержка включается так:

Для включения поддержки C++ 11 в Dev C++, зайдите в меню «Tools → Compiler Options → (выберите ваш компилятор) → Settings → Code Generation». Установите значение опции «Language standard» на C++11.

В Visual Studio 2010 есть частичная поддержка C++ 11. По крайней мере, должен быть.

Пример работы игры размером 20 × 20 клеток:

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

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


Создание игры UWP на языке JavaScript Create a UWP game in JavaScript

Простая двухмерная игра UWP для Microsoft Store, написанная на языках JavaScript и CreateJS. A simple 2D UWP game for the Microsoft Store, written in JavaScript and CreateJS

Введение Introduction

Опубликовав приложение в Microsoft Store, вы сможете предоставлять его бесплатно или продавать миллионам пользователей разнообразных устройств. Publishing an app to the Microsoft Store means you can share it (or sell it!) with millions of people, on many different devices.

Чтобы приложение можно было опубликовать в Microsoft Store, оно должно быть написано как приложение универсальной платформы Windows (UWP). In order to publish your app to the Microsoft Store it must be written as a UWP (Universal Windows Platform) app. Однако UWP — очень гибкая платформа и поддерживает множество языков и технологий. However the UWP is extremely flexible, and supports a wide variety of languages and frameworks. Мы продемонстрируем это на примере простой игры, которая написана на языке JavaScript и использует несколько библиотек CreateJS. Также в примере показано, как рисовать спрайты, создавать игровой цикл, настраивать поддержку клавиатуры и мыши и адаптацию к различным размерам экрана. To prove the point, this sample is a simple game written in JavaScript, making use of several CreateJS libraries, and demonstrates how to draw sprites, create a game loop, support the keyboard and mouse, and adapt to different screen sizes.

Этот проект создается на языке JavaScript с помощью Visual Studio. This project is built with JavaScript using Visual Studio. Если внести некоторые небольшие изменения, его также можно разместить на веб-сайте или адаптировать для других платформ. With some minor changes, it can also hosted on a website or adapted to other platforms.

Примечание. Этот пример не претендует на то, чтобы считаться завершенной (или хорошей) игрой. Его цель — продемонстрировать, как с помощью JavaScript и сторонней библиотеки создать приложение, готовое к публикации в Microsoft Store. Note: This is a not a complete (or good!) game; it is designed to demonstrate using JavaScript and a third party library to make an app ready to publish to the Microsoft Store.

Требования Requirements

Для этого проекта понадобятся: To play with this project, you’ll need the following:

  • компьютер (или виртуальная машина) под управлением текущей версии Windows 10; A Windows computer (or a virtual machine) running the current version of Windows 10.
  • копия Visual Studio. A copy of Visual Studio. Бесплатный выпуск Visual Studio Community Edition можно скачать с домашней страницы Visual Studio. The free Visual Studio Community Edition can be downloaded from the Visual Studio homepage.

В этом проекте используется платформа CreateJS JavaScript. This project makes use of the CreateJS JavaScript framework. CreateJS — это бесплатный набор инструментов, выпущенный по лицензии MIT, который упрощает создание игр на основе спрайтов. CreateJS is a free set of tools, released under a MIT license, designed to make it easy to create sprite-based games. Библиотеки CreateJS уже присутствуют в проекте (ищите js/easeljs-0.8.2.min.js и js/preloadjs-0.6.2.min.js в представлении обозревателя решений). The CreateJS libraries are already present in the project (look for js/easeljs-0.8.2.min.js, and js/preloadjs-0.6.2.min.js in the Solution Explorer view). Дополнительные сведения о CreateJS можно получить на домашней странице CreateJS. More information about CreateJS can be found at the CreateJS home page.

Начало работы Getting started

Полный исходный код приложения хранится в репозитории GitHub. The complete source code for the app is stored on GitHub.

Самый простой способ начать с ним работу — перейти в этот репозиторий, нажать зеленую кнопку Clone or download (Клонировать или скачать), а затем — Open in Visual Studio (Открыть в Visual Studio). The simplest way to get started it to visit GitHub, click on the green Clone or download button, and select Open in Visual Studio.

Можно также скачать проект как ZIP-файл или использовать другие стандартные способы работы с проектами GitHub. You can also download the project as a zip file, or use any other standard ways to work with GitHub projects.

Загрузив проект в Visual Studio, вы увидите несколько файлов, в том числе следующие: Once the solution has been loaded into Visual Studio, you’ll see several files, including:

  • Images/ — папка, содержащая различные значки, требуемые для приложения UWP, а также лист спрайтов (SpriteSheet) игры и некоторые другие растровые изображения; Images/ — a folder containing the various icons required by UWP apps, as well as the game’s SpriteSheet and some other bitmaps.
  • js/ — папка, содержащая файлы JavaScrip; js/ — a folder containing the JavaScript files. main.js — наша игра, а остальные файлы — EaselJS и PreloadJS; The main.js file is our game, the other files are EaselJS and PreloadJS.
  • index.html — веб-страница с холстом, на котором размещены изображения игры. index.html — the webpage which contains the canvas object which hosts the game’s graphics.

Теперь можно запустить игру! Now you can run the game!

Нажмите клавишу F5, чтобы запустить приложение. Press F5 to start the app running. Перед вами должно открыться окно с нашим знакомым динозавром на фоне лаконичного ландшафта. You should see a window open, and our familiar dinosaur standing in an idyllic (if sparse) landscape. Теперь проанализируем приложение, объясним некоторые важные моменты и по ходу дела добавим остальные функции. We will now examine the app, explain some important parts, and unlock the rest of the features as we go.

Примечание. Что-то пошло не так? Note: Something go wrong? Убедитесь, что вы установили Visual Studio с поддержкой веб-страниц. Be sure you have installed Visual Studio with web support. Это можно проверить, создав новый проект. Если JavaScript не поддерживается, нужно будет переустановить Visual Studio, установив флажок Веб-инструменты Майкрософт для разработчиков. You can check by creating a new project — if there is no support for JavaScript, you will need to re-install Visual Studio and check the Microsoft Web Developer Tools box.

Пошаговое руководство Walkthough

Если вы запустили игру с помощью клавиши F5, наверняка вы задаетесь вопросом, что же сейчас происходит. If you started the game with F5, you’re probably wondering what is going on. А происходит совсем немного, так как значительная часть кода сейчас закомментирована. Пока вы видите только динозавра и предложение нажать клавишу «ПРОБЕЛ», которое, к тому же, не срабатывает. And the answer is «not a lot», as a lot of the code is currently commented-out. So far, all you’ll see is the dinosaur, and a ineffectual plea to press Space.

1. Настройка сцены 1. Setting the Stage

Открыв файл index.html, вы увидите, что он практически пуст. If you open and examine index.html, you’ll see it’s almost empty. Этот файл — веб-страница по умолчанию, которая содержит наше приложение. Он выполняет только две важные задачи. This file is the default web page that contains our app, and it does only two important things. Во-первых, он включает в себя исходный код JavaScript для библиотек CreateJS EaselJS и PreloadJS, а также main.js (наш собственный файл исходного кода). First, it includes the JavaScript source code for the EaselJS and PreloadJS CreateJS libraries, and also main.js (our own source code file). Во-вторых, он определяет тег — «холст», на котором будут отображаться все наши графические объекты. Second, it defines a tag, which is where all our graphics are going to appear. Объект — это стандартный компонент документа HTML5. A is a standard HTML5 document component. Мы присвоим ему имя (gameCanvas), чтобы наш код в main.js мог на него ссылаться. We give it a name (gameCanvas) so our code in main.js can reference it. Кстати, если вы собираетесь написать игру на языке JavaScript с нуля, вам также нужно будет скопировать файлы EaselJS и PreloadJS в свой проект, а затем создать объект canvas. By the way, if you are going to write your own JavaScript game from scratch, you too will need to copy the EaselJS and PreloadJS files into your solution, and then create a canvas object.

EaselJS предоставляет нам новый объект под названием stage (сцена). EaselJS provides us with a new object called a stage. Он связан с объектом canvas и используется для отображения текста и изображений. The stage is linked to the canvas, and is used for displaying images and text. Любой объект, который должен отображаться на сцене, сначала нужно добавить как дочерний элемент сцены следующим образом. Any object we want to be displayed on the stage must first be added as a child of the stage, like this:

Эту строку кода можно будет увидеть в main.js несколько раз. You will see that line of code appear several times in main.js

Кстати говоря, пришло время открыть main.js. Speaking of which, now is a good time to open main.js.

2. Загрузка растровых изображений 2. Loading the bitmaps

EaselJS предоставляет нам несколько различных типов графических объектов. EaselJS provides us with several different types of graphical objects. Мы можем создавать простые фигуры (такие, как синий прямоугольник — небо), растровые изображения (например, облака, которые мы собираемся добавить), текстовые объекты и спрайты. We can create simple shapes (such as the blue rectangle used for the sky), or bitmaps (such as the clouds we’re about to add), text objects, and sprites. Спрайты используют (SpriteSheet)[https://createjs.com/docs/easeljs/classes/SpriteSheet.html ]: одно растровое изображение, содержащее несколько изображений. Sprites use a (SpriteSheet)[https://createjs.com/docs/easeljs/classes/SpriteSheet.html]: a single bitmap containing multiple images. Например, этот SpriteSheet нужен для хранения разных кадров анимации с динозавром. For example, we use this SpriteSheet to store the different frame of dinosaur animation:

Мы делаем так, чтобы динозавр ходил. Для этого определяем различные кадры и частоту их смены в этом коде. We make the dinosaur walk, by defining the different frames and how fast they should be animated in this code:

А теперь добавим к сцене несколько маленьких пушистых облаков. Right now, we’re going to add some little fluffy clouds to the stage. Они будут плыть по экрану во время игры. Once the game is running, they’ll drift across the screen. Изображение облака уже содержится в проекте, в папке images. The image for the cloud is already in the solution, in the images folder.

Просмотрите файл main.js и найдите в нем функцию init() . Look through main.js until you find the init() function. Она вызывается при запуске игры. С нее мы и начнем настройку всех графических объектов. This is called when the game starts, and it’s where we begin to set up all our graphic objects.

Найдите следующий код и удалите комментарии (\) из строки, которая ссылается на изображение облака. Find the following code, and remove the comments (\) from the line that references the cloud image.

JavaScript нуждается в небольшой помощи при загрузке таких ресурсов, как изображения. Поэтому мы используем LoadQueue — функцию библиотеки CreateJS, предназначенную для предварительной загрузки изображений. JavaScript needs a little help when it comes to loading resources such as images, and so we’re using a feature of the CreateJS library that can preload images, called a LoadQueue. Мы не знаем точно, сколько времени займет загрузка изображений, поэтому будем использовать LoadQueue. We can’t be sure how long it will take the images to load, so we use the LoadQueue to take care of it. Эта функция сообщит нам, когда изображения будут доступны. Once the images are available, the queue will tell us they are ready. Для этого сначала мы создадим новый объект, который перечисляет все наши изображения, а затем создадим объект LoadQueue. In order to do that, we first create a new object that lists all our images, and then we create a LoadQueue object. В коде ниже видно, как настроить вызов функции loadingComplete() , когда все готово. You’ll see in the code below how it is set-up to call a function called loadingComplete() when everything is ready.

Когда функция loadingComplete() вызвана, это значит, что изображения загружены и готовы к использованию. When the function loadingComplete() is called, the images are loaded and ready to use. Вы увидите закомментированный раздел для создания облаков; теперь их растровое изображение доступно. You’ll see a commented-out section that creates the clouds, now their bitmap is available. Удалите комментарии, чтобы он выглядел следующим образом. Remove the comments, so it looks like this:

Этот код создает три объекта-облака с помощью нашего предварительно загруженного изображения, определяет их расположение и добавляет к сцене. This code creates three cloud objects each using our pre-loaded image, defines their location, and then adds them to the stage.

Запустите приложение снова (нажав клавишу F5), и вы увидите, что на небе появились облака. Run the app again (press F5) and you’ll see our clouds have appeared.

3. Перемещение облаков 3. Moving the clouds

Теперь сделаем так, чтобы облака плыли. Now we’re going to make the clouds move. Секрет перемещения облаков — да и чего угодно — заключается в использовании функции ticker, которая вызывается много раз за секунду. The secret to moving clouds — and moving anything, in fact — is to set-up a ticker function that is repeatedly called multiple times a second. Каждый раз при вызове этой функции она перерисовывает графический элемент, немного сдвигая его расположение. Every time this function is called, it redraws the graphics in a slightly different place.

Соответствующий код уже есть в файле \*\*main.js\*\*. Он предоставлен библиотекой CreateJS, EaselJS. The code to do that is already in the \*\*main.js\*\* file, provided by the CreateJS library, EaselJS. Он выглядит следующим образом: It looks like this:

Этот код вызывает функцию gameLoop() с частотой от 30 до 60 кадров в секунду. This code will call a function called gameLoop() between 30 and 60 frames a second. Точная скорость зависит от скорости компьютера. The exact speed depends on the speed of your computer.

Найдите функцию gameLoop() , и немного ниже вы увидите функцию под названием animateClouds() . Look for the gameLoop() function, and down towards the end you’ll see a function called animateClouds(). Отредактируйте ее так, чтобы она не была закомментирована. Edit it so that it is not commented out.

Взглянув на определение этой функции, вы увидите, что она по очереди изменяет координаты каждого облака по оси x. If you look at the defintion of this function, you’ll see how it takes each cloud in turn, and changes its x co-ordinate. Если координата x оказывается за границей экрана, она перемещается на крайнюю правую его сторону. If the x-ordinate is off the side of screen, it is reset to the far right. К тому же, каждое облако передвигается с немного другой скоростью. Each cloud also moves at a slightly different speed.

Теперь, запустив приложение, вы увидите, что облака уже плывут по небу. If you run the app now, you’ll see that the clouds have started drifting. Наконец у нас появилось движение! Finally we have motion!

4. Добавление ввода с помощью мыши и клавиатуры 4. Adding keyboard and mouse input

Игра, с которой вы не можете взаимодействовать, — это вовсе и не игра. A game that you can’t interact with isn’t a game. Поэтому мы позволим игроку выполнять какие-то действия с помощью клавиатуры или мыши. So let’s allow the player to use the keyboard or the mouse to do something. Вернувшись к функции loadingComplete() , вы увидите следующее. Back in the loadingComplete() function, you’ll see the following. Удалите комментарии. Remove the comments.

Теперь у нас есть две функции, которые вызываются всякий раз, когда игрок нажимает клавишу или щелкает мышью. We now have two functions being called whenever the player hits a key or clicks the mouse. Оба события вызывают userDidSomething() — функцию, которая анализирует переменную gamestate и по ней определяет, что сейчас происходит в игре и что должно случиться в результате. Both event will call userDidSomething(), a function which looks at the gamestate variable to decide what the game is currently doing, and what needs to happen next as a result.

Gamestate — конструктивный шаблон, который широко используется в играх. Gamestate is a common design pattern used in games. Все события происходят в функции gameLoop() , которая вызывается таймером функции ticker. Everything that happens, happens in the gameLoop() function called by the ticker timer. GameLoop() с помощью переменной отслеживает состояния игры, определенные разработчиком: запущена, завершена, готова к запуску или другое. The gameLoop() keeps track of whether the game is playing, or in a «game over state», or a «ready-to-play state», or any other states defined by the author, using a variable. Эта переменная состояния проверяется в операторе switch, который определяет, какие другие функции нужно вызвать. This state variable is tested in a switch statement, and that defines what other functions are called. Если состояние игры — «запущена», будут вызваны функции, которые отвечают за прыжки динозавра и движение бочек. So if the state is set to «playing», the functions to make the dinosaur jump and make the barrels move will be called. Если динозавр погиб, переменная gamestate обретет значение состояния «игра завершена», и на экране появится If the dinosaur is killed by something, the gamestate variable will be set to «game over state», and the «Game over!» сообщение «Game over!» (Конец игры). message will be displayed instead. Если вас интересуют конструктивные шаблоны, вам поможет книга Game Programming Patterns. If you are interested in game design patterns, the book Game Programming Patterns is very helpful.

Запустите приложение еще раз, и вы наконец-то сможете приступить к игре. Try running the app again, and finally you’ll be able to start playing. Нажмите клавишу «ПРОБЕЛ» (или щелкните мышью либо коснитесь экрана), чтобы в игре что-то начало происходить. Press space (or click the mouse, or tap the screen) to start things happening.

Вы увидите катящиеся бочки. Нажимайте клавишу «ПРОБЕЛ» или щелкайте мышью в нужный момент, чтобы динозавр подпрыгивал. You’ll see a barrel come rolling towards you: press space or click again at just the right time, and the dinosaur will leap. Если вы не рассчитали время — игра закончена. Time it wrong, and your game is over.


Бочка анимируется так же, как и облака (хотя и двигается с каждым разом быстрее), и мы каждый раз проверяем положения динозавра и бочки, не столкнулись ли они. The barrel is animated in the same way as the clouds (although it gets faster each time), and we check the position of the dinosaur and the barrel to make sure they haven’t collided:

Если динозавр не подпрыгнул и бочка уже возле него, код изменяет переменную состояния, присваивая ей значение, которое мы назвали GameOver. If the dinosaur isn’t jumping and the barrel is nearby, the code changes the state varaible to the state we’ve called GameOver. Несложно догадаться, что GameOver останавливает игру. As you can imagine, GameOver stops the game.

Итак, основной механизм нашей игры готов. And so the main mechanics of our game are complete.

5. Поддержка разных размеров экрана 5. Resizing support

Мы почти закончили. We’re almost done here! Осталось последнее — устранить одну досадную проблему. But before we stop, there is one annoying problem to take care of first. Попробуйте изменить размер окна во время игры. When the game is running, try resizing the window. Вы увидите, что очень быстро на экране воцаряет хаос — объекты оказываются не там, где нужно. You’ll see that the game quickly becomes very messed-up, as objects are no longer where they should be. Мы можем позаботиться об этом с помощью обработчика для события изменения размера окна. Оно будет создаваться, когда игрок изменяет размер окна или ориентация экрана устройства меняется с альбомной на книжную либо наоборот. We can take care of that by creating a handler for the window resizing event generated when the player resizes the window, or when the device is rotated from landscape to portrait.

Соответствующий код для этого у нас уже есть. По сути, мы его вызываем при первоначальном запуске игры, чтобы удостовериться, что срабатывает размер окна по умолчанию. Ведь мы никогда не можем быть уверены, на каком экране будет запущено приложение UWP. The code to do this is already present (in fact, we call it when the game first starts, to make sure the default window size works, because when a UWP app is launched, you can’t be certain what size the window will be).

Просто раскомментируйте эту строку, чтобы вызывать функцию при событии изменения размера экрана. Just uncomment this line to call the function when the screen size event is fired:

Если вы снова запустите приложение, то уже сможете успешно изменять размер окна. If you run the app again, you should now be able to resize the window and get better results.

Публикация в Microsoft Store Publishing to the Microsoft Store

Теперь у вас есть приложение UWP, и его можно опубликовать в Microsoft Store (если, конечно, вы уверены, что все сделано качественно). Now you have a UWP app, it is possible to publish it to the Microsoft Store (assuming you have improved it first!)

Для этого нужно выполнить несколько шагов. There are a few steps to the process.

  1. Зарегистрируйтесь в качестве разработчика приложений для Windows. You must be registered as a Windows Developer.
  2. Заполните контрольный список для отправки приложения. You must use the app submission checklist.
  3. Отправьте приложение на сертификацию. The app must be submitted for certification.

Дополнительные сведения см. в разделе Публикация приложений и игр для Windows. For more details, see Publishing your UWP app.

Рекомендации для использования других возможностей. Suggestions for other features.

Что делать дальше? What next? Вот несколько рекомендаций по тому, какие еще возможности можно добавить в ваше приложение (которое, конечно же, вскоре станет очень популярным!). Here are a few suggestions for features to add to your (soon to be) award-winning app.

  1. Подключите звуковые эффекты. Sound effects. Библиотека CreateJS включает в себя поддержку звука с помощью библиотеки SoundJS. The CreateJS library includes support for sound, with a library called SoundJS.
  2. Добавьте поддержку геймпада. Gamepad support. Для этого доступен специальный API. There is an API available.
  3. Сделайте игру намного, намного лучше! Make it a much, much better game! Тут все зависит только от вас. А в Интернете вы найдете множество полезных ресурсов, которые вам помогут. That part is up to you, but there are lots of resources available online.

Кто лучше умеет в Desktop: JavaScript или C++?

Миф первый. Применение

Как-то так получается, что большинство программистов рассматривают JavaScript, как, исключительно браузерный язык, упуская самую важную деталь: JS — скриптовый язык, который не привязан к какой-то одной технологии. Он лишь позволяет писать алгоритмы, а его функционал напрямую зависит от среды, в которой он исполняется.На сегодняшний день на JavaScript можно писать Web приложения (напр. Angular), мобильные приложения (напр. Cordova), описывать логику серверов (напр. NodeJS), писать логику для «умных» устройств, а так же писать Desktop приложения (напр. NW.js). JavaScript сейчас — это не только язык, это целый инструмент, позволяющий делать любые вещи.

Миф второй или «Предвзятость»

Опять же, откуда-то взялось мнение, что ничего серьезного на JS написать нельзя, так как его использует большое количество новичков, пишущее код низкого качества. JavaScript уже давно вырос из того состояния, когда язык, в счет своей простоты, позволяет писать всем подряд всё подряд. Тут, как с PHP. Сам язык очень мощный и с каждым релизом становится всё функциональнее, но из-за приверженцев старой школы, его продолжают считать плохим из-за большого количества плохих решений, написанных на нём. Это не проблема языка. Я бы даже сказал, что JS дает настолько широкий простор для решения задач, что выбирать можно не из десятков, но из большого множества способов.

Миф третий. Тормоза

Тут тоже есть свои нюансы. Я думаю, все мы помним свои первые шаги в интернете в браузере Internet Explorer, когда тормозило всё. Почему-то издавна народ придерживается мнения, что JS тормозной язык и делать на нем серьезные вещи нет смысла. Между тем, по личному опыту могу сказать, что JS может быть очень быстрым. НО! Оговорюсь — зависит от среды исполнения. Сейчас активно развивается Гугловский V8 (движок JS), который исполняет код на достаточно быстром уровне. Да, медленнее, чем C++, однако, стоит сделать скидку на то, что оформление в CSS и HTML-теги требуют некоторого времени на чтение и рендер. Однако, это если речь про интерфейс. Без рендера (отрисовки интерфейса) скорость исполнения кода увеличивается достаточно внушительно. Сам же V8 написан на C++.

Порог вхождения

Тут история неоднозначная. Кто-то говорит, что начал изучать первым языком C++, кто-то приводит в примеры PHP или JavaScript (большинство же начинали изучение с Basic, Pascal. да-да, не ворчите).Честно сказать, я не считаю ни C++ ни JavaScript легким языком. Однако у JavaScript есть существенное преимущество: для его изучения вам, кроме текстового редактора и браузера, ничего, по сути, и не надо. Браузеры предоставляют «из коробки» и консоль, и средства мониторинга и отладки. Бери, работай.

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

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

Как бы там ни было, у JavaScript порог вхождения ниже, за счет допущений языка. Отсутствие свойства у объекта или класса не приведет к ошибке, ваш скрипт продолжит исполнение, а вместо значения вы просто получите «undefine», что тоже является значением. Та же ситуация в C++ приведет к фатальной ошибке и остановке всей программы. Так же разница в требовательности к типам данных, к объявлению функций, и так далее.

JavaScript vs C++

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

Если рассматривать общее применение языков — то JavaScript пока лидер по браузерным языкам. Ремарочка: потому, что браузеры других языков не понимают. В чистом виде. C++ же универсален. Буквально. И это подводит нас к первому критерию, который, в большинстве случаев, определяет скорость работы языка.

C++ — компилируется в понятный компьютеру язык.

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

Далее рассмотрим область применения. Сразу оговорюсь, что это всё условности, и в реальности всё может быть настолько иначе, что наоборот.C++ может быть применен везде, когда речь идет о скорости. И под «везде» я предлагаю понимать так, как читаете. При желании на C++ можно написать интерпретатор JavaScript (который и так на нем написан). На нем можно написать браузер, сервер, программу для любых устройств.

JavaScript же применяется в большей степени для написания браузерных приложений. С недавнего времени (с появления NodeJS), так же, используется для описания сервера, и уже обошел другие языки (и даже PHP) в плане скорости, когда речь идет о real-time приложениях. Хотя область применения JavaScript расширяется с каждым релизом, как самого языка, так и сред, где возможно его использование. А с появлением NodeJS появляется возможность писать приложения для Desktop систем.Хотя, будем честными — в случае создания мобильного или Desktop приложения, создается оболочка над браузером. То есть это всё еще браузерное приложение, просто с бОльшим уровнем доступа к разным контекстам.

Далее уйдем в уклон именно Desktop приложений, и, прежде, выведем еще два тезиса.

C++ универсален при любом использовании и дает возможность писать приложения любой сложности и направленности.

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

Теперь про интерфейсы. Да, это больная тема всех «Сишников». Или нет? Тут, как ни крути, но у JavaScript (в связке с HTML и CSS) преимущество, поскольку каждый элемент можно настроить вплоть до каждого пикселя, и наделить реакцией на любые события ввода (мышь, клавиатура и т.д.), а обилие самих элементов переваливает за сотни. Так же, если каких-то не достает, их можно создать самому. В случае с HTML и CSS ограничителем внешнего вида приложения выступает исключительно фантазия. А с приходом CSS3 и HTML5 даже это не является ограничением, поскольку весь интернет — это HTML и CSS, и черпать идеи можно отовсюду. Интерфейсная часть может расширяться в позитивную сторону за счет сотен библиотек, позволяющих это делать. Типичный пример: jQuery.

В C++ ситуация немного иначе. Так как мы говорим о Desktop, то набор возможных элементов для использования ограничен библиотекой графических элементов. QtWidgets или WxWidgets. В большинстве случаев, их, кончено, достаточно, так как практически все программы с интерфейсом — это наборы полей и кнопочек. Визуальщина в этом случае — всего лишь набор стандартных элементов.

Однако тут стоит отдать должное HTML&CSS, интерфейс, построенный на нем, выглядит одинаково на всех платформах и операционных системах. А настроить можно все — от цветов до шрифтов. Если кто не знаком с гибкостью CSS, прошу в «гугл». Поверьте — будете приятно удивлены разнообразием вариантов оформления.

Вообще, уходя от каскадных табличек и виджетов, и посмотрев в формате максимальной абстракции, HTML и CSS все равно в выигрыше, так как они заточены на то, чтобы делать оформление. Стандартные же графические элементы из библиотек виджетов зачастую имеют внешний вид, завязанный на оформлении ОС, а их настройку отображения никак не назвать гибкой. Да, есть QML, который, приверженцы C++ и Qt могут противопоставить JavaScript, но, как бы о нем не отзывались, ни о какой гибкости там и речи не идет. Оно, как бы, работает, но, это всего лишь пародия.

Строить интерфейс в JavaScript приложении легче, за счет CSS и HTML

Строить интерфейс на C++ сложнее, он больше привязан к библиотекам и сложно расширяем.

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

Какой функционал обычно нужен при разработке Desktop приложений: организация интерфейса, обработка ввода/вывода, доступ к файлам, возможно, к БД и сети, мультимедиа, и, всё пожалуй. Из основного, только это.

C++, понятное дело, имеет возможности для организации любого уровня функционала, имеет полный доступ к файлам, доступ к системам ОС и. бесконечное количество вариантов.

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

В совокупности, связка из NodeJS и Chromium’а дает полный доступ ко всем элементам ОС, а возможность использовать NPM пакеты возводит функционал программ до уровня приложений на C++ по степени взаимодействия с ОС. Более того, некоторые части приложений можно вынести в модули на любом языке и использовать их внутри своего приложения (гуглить child_process in NodeJS).


Касаемо синтаксиса, и там и там есть плюсы и минусы. В общем же виде и C++ и JavaScript выглядят похоже с точки зрения синтаксиса. А ключевые слова неизбежно схожи в силу того, что оба языка «Си-подобные», то есть, синтаксические корни у обоих одинаковые. Однако, когда речь заходит о частных случаях и решениях (напр. классы), то тут уже разница видна. Хотя с появлением ES2015 (текущая актуальная спецификация), в JavaScript появились очень похожие на C++ конструкции кода, описывающие функционал классов.

Итог таков

JavaScript, как язык, прекрасен. Он дает возможность делать вещи любой сложности, а оболочка NW,js предоставляет ему доступ ко всем вспомогательным системам, службам ОС и, его возможности расширяются до бесконечности. А HTML + CSS превращают интерфейсы в произведения искусства.

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

Называется NW.js IDE, и, если вам интересно, можете пройти на её сайт и почитать подробнее.

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

Обзор самых популярных движков для разработки игр

Содержание статьи

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

Немного истории

Не волнуйся: дальше последних 10–15 лет я углубляться не буду. Я бы рад, конечно, пофилософствовать о былых временах, но редактор будет против (отстаньте вы уже от меня, я же не виноват, что журнал бумажный. — Прим. ред.).

Итак, еще 15 лет назад кодовая база для игр создавалась с нуля внутри компаний — разработчиков определенных продуктов. Немного позже (примерно в середине первого десятилетия XXI века) вслед за разработкой других компонентов игр, таких как арт или звук, создание движков вышло на аутсорсинг — выделилось в отдельную индустрию. Происходило это постепенно. Стоит отметить, что и в 90-е были игры на готовых движках (DOOM и Quake от id Software), но это было редким исключением от опередивших свое время дяденек, а правилом стало только в середине 2000-х. Во многом из-за дороговизны движков. А когда сформировалась обособленная кодовая индустрия, бизнес приобрел другой вид, появились движки широкой ценовой категории. Сначала рынок заполнился инструментами разработчиков — фреймворками, представляющими собой скорее графические движки, нежели игровые, отличающиеся от последних наличием лишь прослойки над графическим API и отсутствием внутриигровых редакторов: средств для level-моделинга, импорта объектов, текстурирования, загрузки и анимации персонажей. В качестве примера можно привести Ogre, DarkGDK (много лет назад я писал о нем), HGE. Позже на рынок вышли другие, более прокачанные игроки, предложившие разработчикам полноценные движки: Torque 3D, Unity 3D, UDK.

Одновременно с появлением полноценного рынка движков, в индустрии наметился отток геймеров от синглплеерных к мультиплеерным онлайновым играм. Результатом этого стало появление движков вроде HeroEngine и BigWorld.

Вслед за социальными сетями произошел всплеск интереса к веб-играм. На него разработчики движков отреагировали довольно оперативно, предоставив своим пользователям возможность запускать игры в браузере, установив плагин. Конечные пользователи в браузере получили игры, по качеству почти ничем не уступающие клиентским. С популярностью веб-игр большее распространение получила Flash-технология, в результате чего скромная Macromedia (разработчик Flash) была приобретена могущественным Adobe. А на базе Flash стали появляться не только игры, но и движки для их разработки. Хорошим примером служит движок Alternativa от отечественной компании Alternativa Platform.

Затем случились мобильные технологии. Как гром среди ясного неба появились мобильные девайсы, по мощности сопоставимые с ПК средней ценовой категории и способные потянуть крутые игровые приложения со всеми спецэффектами, которыми обладали низкоуровневые графические интерфейсы. На этот факт разработчики игровых движков ответили кто созданием специализированных конверторов, создающих нативный для конкретного оборудования код (например, Unity 3D), а кто — адаптацией своих продуктов к кросс-платформенности (к примеру, Torque 2D).

Также на рынке появились новые игроки, предлагающие кросс-платформенные фреймворки для всего парка мобильных устройств, не требующие при этом даже перекомпиляции и выполняющиеся со скоростью нативного кода. Среди подобных средств можно отметить Corona SDK, Marmalade SDK, AGK (App Game Kit).

Универсальные движки

Unity 3D

Цена: indie-версия: free, pro-версия: 1500 долларов

Порог вхождения: низкий

Исходный код: закрытый

Самый популярный движок для создания 2D- и 3D-игр. Бесспорно, он стал лидером индустрии, и, как только появляется новая игровая/графическая технология, разработчики незамедлительно реализуют ее в Unity. Кроме разработки синглплеерных игр для PC, посредством подключаемых экспортеров можно портировать игры под другие ОС, консоли и мобильные технологии (за экспортер придется доплатить 1500 долларов за каждую платформу: iOS, Android, BlackBerry). Плюс к этому образовалась целая индустрия, работающая над созданием дополнений и расширений движка, среди них есть как специализированные серверные решения для Unity (e. g. Photon — полноценный игровой сервер), так и средства для разработки пользовательского интерфейса (NGUI), конструкторы, предназначенные для создания игр определенных жанров (e. g. Playmaker).

У самого редактора Unity есть порты под OS X и Windows, при этом изначально он был предназначен для OS X. В Unity включена поддержка DirectX 11, что открывает твоим приложениям дорогу в миры Windows 8 и Windows Phone 8. Во время написания статьи вышла очередная версия Unity под номером 4.2, в которой появилась поддержка последней на данный момент OpenGL ES 3.0, пока этими средствами обладают только топовые Android-смартфоны. Движок Unity особенно ценен за низкий порог вхождения для начинающих юзеров, благодаря этому, а также тому, что инди-версия бесплатна, вокруг движка организовалось огромное сообщество. Низкий порог вхождения является результатом грамотного дизайна приложения: многие вещи можно выполнить с помощью различных редакторов, не написав при этом ни строчки кода (если что, код пишется на JavaScript, C#, Boo). Исходный код на C/C++ закрыт, но это в связи с расширенной компонентной структурой движка не создает никаких преград.

Название: Torque 2D/3D

Цена: free (лицензия MIT)

Порог вхождения: средний

Исходный код: открытый

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

Различия между двумерной и трехмерной версиями весьма значительны, но есть и общие элементы, например развитая сетевая подсистема. После выхода в мир open source T3D сохранил и даже увеличил свои возможности, а T2D, напротив, многое потерял. Например, он утратил абсолютно все встроенные редакторы, которые, очевидно, были изъяты из-за определенных юридических соглашений. Зато на нем можно разрабатывать игры для трех платформ: Windows, OS X и, что самое интересное, iOS (и продавать игры в App Store, не отчисляя ни копейки авторам движка). Весь движок — это одна кодовая база на C++ без дополнительных экспортеров. Во время написания статьи в сообществе разработчиков T2D кипела работа над созданием компилируемой версии для Android и реинкарнацией этих самых «потерянных» редакторов. Текущей стабильной версией является 2.0. Как видно, фундаментальные различия 2D- и 3D-версий заключаются в графической подсистеме: T2D для визуализации использует OpenGL, а T3D — DirectX, притом еще пока девятой версии, что преграждает созданным с его помощью играм путь в Windows Store. Есть куда развиваться!

В качестве скриптового языка в T2D, как и в T3D, используется Torque Script. Вместе с тем в T2D для описания игровых элементов служит XML-подобный язык TAML. Он позволяет определить свойства объектов на стадии инициализации уровня игры. Для воспроизведения звуков T2D использует библиотеку OpenAL. Симуляция физики осуществляется посредством движка Box2D, ставшего стандартом в двумерных физических исчислениях. Несмотря на то что в двумерном Торке еще пока нет конструктора GUI, с помощью средств движка (в скриптовом коде) можно создавать пользовательский интерфейс привычными компонентами, а не простыми спрайтами. Однако, если нужный компонент отсутствует, его можно создать на основе спрайтов. Имея аналогичную с 3D-версией сетевую систему, на T2D можно разрабатывать мультиплеерные игры, которые набирают популярность, — например P2P с планшетов. Вместе с T2D поставляется коллекция из огромного количества сэмплов, которая «дружно» укомплектована в Sandbox. В каждом примере раскрывается определенная фича движка, а наличие исходного кода позволяет узнать ее устройство.

Рис. 1. TruckToy — сэмпл на Torque 2D

Хакер #178. Mesh-сети или строим свой интернет

У семейства движков от GarageGames тоже есть комьюнити, которое делает полезные для остального сообщества вещи: создаются туториалы и мануалы, решаются проблемы — все, как принято при социализме. Есть и платные инструменты: система ИИ, разнообразные улучшения и эффекты графической системы, арт, встраиваемые редакторы — диалогов, инвентаря, террейнов, источников света.

CryEngine 3

Цена: free для некоммерческого использования (изучения и «домашних» разработок)

Порог вхождения: средний

Исходный код: закрытый

CryEngine 3 берет начало своей истории в 2001 году, когда была анонсирована первая разрабатываемая на нем игра Far Cry. С тех пор много воды утекло, и текущая — на данный момент третья — последняя версия была выпущена в октябре 2009-го. Разработчики этого движка с самого начала преследовали цель не самим создавать на нем игры, а продавать его как технологию. Следовательно, все разрабатываемые Crytek’ом игровые приложения — это «игра мышцами» с целью сделать дополнительную рекламу своему главному продукту. Хотя для изучения он доступен бесплатно, чтобы разрабатывать на нем коммерческие проекты, необходимо заплатить, причем цена публично не объявляется. В итоге лицензиат получает движок, документацию (обучающие материалы), исходный код, а также оперативную поддержку. Кроме того, процесс лицензирования движка таит в себе множество подводных камней — хотя бы то, что лицензировать его может только юридическое лицо, которое должно предоставить данные о разработанных продуктах и в отдельных случаях обо всех своих сотрудниках.

В отличие от предыдущих движков линейки (которые были исключительно PC-ориентированными), CryEngine 3 ориентирован на создание кросс-платформенных игр, предназначенных для PC и консолей. В настоящее время поддерживаются платформы Xbox 360, Xbox One, PlayStation 3–4, WiiU, а также технологии визуализации настольной Windows — DirectX 9–11. Как можно заметить, поддержки мобильных платформ нет. В нем изначально присутствует поддержка глобальных мультиплеерных (MMO) игр. CryEngine 3 обладает ошеломляющим списком технологий визуализации, вот некоторые из них: динамическое освещение и затенение в реальном времени, затуманивание, Terrain 2.5D, карты нормалей и параллакс-маппинг, подповерхностное рассеивание, световые лучи и волны, управление уровнем детализации ландшафта, а также многое другое. Самое интересное, что CryEngine по своим возможностям опережает текущую версию DirectX, то есть, к примеру, CryEngine 2 (в игре Crysis Warhead), визуализируя через DirectX 9, выдавал эффекты от DirectX 10. А третья версия движка, работая под DirectX 10, выдавала эффекты, ставшие доступными широкому кругу разработчиков только в DirectX 11. Физический компонент движка CryPhysics также работает независимо от физических API, таких как PhysX. Встроенная система анимации предлагает несколько отличных подсистем: индивидуализация персонажей, параметрическая скелетная анимация, процедурное деформирование движения. Также заслуживает отдельного внимания встроенная система ИИ, которая позволяет обрабатывать поведение не только персонажей, но и транспортных средств. Она состоит из трех модулей: умные объекты, алгоритмы динамического обнаружения пути, а также система, управляемая сценариями. В отсутствие лицензии, соответственно, при отсутствии исходного C++ кода ты будешь рулить движком с помощью скриптового языка Lua, который благодаря гибкости прекрасно подходит для встраивания в игровые движки. Да и при наличии исходника многие задачи проще решить скриптовым языком — это, кстати, справедливо для всех движков.

Рис. 2. Sandbox в CryEngine 3

UDK (Unreal Development Kit)

Цена: free

Порог вхождения: средний

Исходный код: закрытый

Прямой наследник движка, использующегося в одном из первых реально успешных командных шутеров. Тогда, еще в конце прошлого века, были выпущены Unreal и более успешный Unreal Tournament. Собственно, UDK построен на основе Unreal Engine 3 и использует всю мощь последнего.

UDK — это бесплатная версия движка UE 3, обладающая всем унаследованным инструментарием последнего для создания игровых миров. Список поддерживаемых платформ не настолько широк, как у Unity, но этого вполне хватает, чтобы окупить разработку: Windows PC, Windows Store, OS X, iOS, Android и консоли предпоследнего поколения.

Для скриптинга в движке используется собственный язык — UnrealScript. На сайте разработчиков представлены тонны обучающих материалов, как текстовых, так и видео, как по редактору, так и по скриптингу. UE3 получил множество наград на индустриальных мероприятиях, а также в кинематографе и не раз становился лучшим игровым/графическим движком года. По сути, UDK отличается от UE3 только отсутствием исходного кода. На базе данного движка выпущено более 300 тайтлов! В их числе: Gears of War 3, BioShock Infinite, Lost Planet 3, Transformers: Fall of Cybertron, Batman: Arkham Asylum, Mass Effect 3 и многие другие.

Теперь заглянем внутрь. Гибкая система анимации позволяет контролировать каждую деталь анимируемого объекта. Анимационная модель контролируется системой AnimTree, которая включает следующие механизмы: контроллер смешения (Blend), контроллер, управляемый данными, физические, процедурно-скелетные контроллеры. Для импортирования объектов используется формат FBX, ставший стандартом для экспорта моделей между редакторами. Для визуализации UE3 использует 64-битный цветной HDR графический конвейер, осуществляющий гамма-коррекцию, размытие движущихся объектов, внешнюю окклюзию и другие эффекты постобработки. Движком поддерживаются все современные эффекты освещения и технологии визуализации: нормализированные карты, параметризированное освещение по Фонгу, различные анизотропные эффекты и прочее. UE3 известен своей высоко оптимизированной сетевой архитектурой, включающей поддержку онлайновых баталий для игр разных жанров. Он обладает множеством других средств, которые, если тебе интересно, ты сможешь узнать сам, ну а мы перейдем к следующей теме.

Специальные MMO-движки

HeroEngine

Цена: 99 долларов в год (за одно рабочее место)

Порог вхождения: высокий


Исходный код: закрытый

Да-да, это тот самый движок, на котором разработана ошеломляющая MMORPG Star Wars: The Old Republic. История движка началась еще в конце девяностых, когда американская компания Simutronics приступила к разработке MMORPG Hero’s Journey. Как показало время, с игрой у них ничего не получилось: многократные переносы даты и срывы выхода проекта. Однако технология, на основе которой велась разработка, была высоко оценена внутри индустрии и на игровых мероприятиях, и движок был лицензирован несколькими студиями, в том числе BioWare. В итоге в 2010 году движок как самостоятельная технология был продан корпорации Idea Fabrik. В этом же году она начала продажу движка под двумя лицензиями. Первая лицензия предполагает покупку всего движка вместе с исходниками за баснословную (или все-таки охрененную) сумму денег. По второй лицензии за 99 долларов (в расчете на одного разработчика) на год приобретается доступ к облачному сервису, в котором с помощью специальной программы-клиента разработчик может создавать игру. Если исходить из первого варианта, то юзеру придется организовывать всю аппаратную и программную инфраструктуру игры (на рис. 3 можно увидеть клиент-серверную архитектуру HeroEngine). Кроме серверного железа, сюда входит: серверная ОС (Cent OS), БД Oracle, лицензия на которую стоит также немерено. Исходя из второго варианта, все лицензии на дополнительное ПО, обслуживание серверного ПО и железа берет на себя Idea Fabric — для инди-студий очень благоприятный вариант, поэтому далее мы приведем описание облачной технологии HE2.

Рис. 3. Клиент-серверная архитектура HeroEngine

Клиентское приложение (как и разработанные игры) предназначено только для Windows. В облаке над одной игрой могут работать сразу несколько человек: гейм-дизайнер пробует новую фичу, аниматор настраивает перса, левел-дизайнер строит уровень, кодер пишет логику. HeroEngine предоставляет всем участникам группы разработки специальные инструменты. Это составляет одно из важнейших преимуществ — «живая» совместная разработка. Второе, что ты получаешь вместе с HeroCloud, — это доступ к примерам реальных MMO-игр: от социальных до онлайн-шутера, среди сэмплов имеется «недоделанная» MMORPG Hero’s Journey, она представляет собой охватывающий все аспекты глобальных игр пример.

С технической стороны HeroEngine предлагает визуализацию на DirectX 9.0c и другие интегрированные программные системы, среди которых: PhysX — для обработки физики, FaceGen — middleware для генерации трехмерных лиц, FMod — для воспроизведения звуков и музыки, видеоконверторы от RAD Game Tools, высококачественная визуализация растений SpeedTree и другое.

Особого внимания заслуживают инструменты, предоставляемые HeroCloud. Итак, HeroBlade — клиентское приложение включает: World Builder — конструктор мира дает интуитивные инструменты для изменения ландшафта, построения зданий, размещения объектов, настройки динамического освещения; с помощью системы персонажей можно создавать легко настраиваемые, динамические существа, технология морфинга позволяет тонко настраивать лица и синхронизировать губы с речью; гибкая система слежения за костями позволяет создавать спецэффекты, происходящие, например, при ударе мечом; система эффектов включает параметризированную подсистему частиц: частицы могут быть источниками частиц, FX-система позволяет связать вместе частицы и аудиоэффекты; игровая система служит для возможности непрерывной работы, после внесения изменений тебе никогда не придется перезапускать игровой сервер или перезагружать БД, все изменения подхватываются на лету, кроме того, она предоставляет общие для всех MMO-игр компоненты, к примеру, во всех подобных играх, чтобы получить доступ к аккаунту, надо ввести логин и пароль, и такая система уже реализована; чтобы менеджер твоей команды мог самостоятельно следить за процессом разработки, в HB встроен DreamManager, который позволяет создавать и назначать таски для разработчиков, а также следить за их выполнением.

Для написания скриптов в движке есть объектно-ориентированный типобезопасный скриптовый язык HeroScript, написанные и скомпилированные скрипты сохраняются непосредственно на сервере. Скрипты на языке HeroScript выполняются даже быстрее Python-программ. Таким образом, все игровые действия, реакция на события, игровые механизмы и прочее реализуются на этом языке. Интегрированный скриптовый редактор не только подсвечивает код, но и позволяет провести отладку. Кроме того, в нем ведется история версий, он позволяет проводить сравнения, мержить изменения, то есть получать в свое распоряжение функции полноценной IDE. Вдобавок в HE есть удобный редактор GUI.

Рис. 4. HeroBlade в действии

Движок для мобильной платформы

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

Cocos 2D-X

Сайт: www.cocos2d-x.org

Цена:
free

Порог вхождения: средний

Исходный код: открытый

Оригинальный Cocos 2D был разработан на Python в 2008 году, затем в том же году он был портирован на языке Objective C под iPhone (версия Cocos 2D-iPhone); два годя спустя была выпущена кросс-платформенная версия Cocos 2D-X на C++.

Если коротко проследить дальнейшую историю, то видно, что потом появились версии с поддержкой Android (Java), XNA (C#) и HTML 5 (JavaScript). Также имеется расширение для визуализации трехмерной графики Cocos 3D, но оно не получило особого развития и распространения просто потому, что юзерам не хочется 3D на мобильном девайсе.

Самая востребованная версия именно Cocos 2D-X, благодаря C++ и кросс-платформенности. Текущей стабильной версией движка является 2.1.5, которая вышла 23 августа сего года. Заявлена поддержка: iOS, Android, Windows Phone 7 (XNA), BlackBerry, Tizen, Bada, Marmalade, Windows, Linux. Используя Cocos 2D-X, можно кодить на C++, Lua и JavaScript. Движком пользуются как программисты-исследователи, небольшие инди-команды, так и монстры игровой индустрии: Zynga, Konami, Disney Mobile. Благодаря бешеной популярности движка — полтора миллиарда закачек основанных на нем игр — в его развитии принимают участие разработчики из Google, Microsoft, Intel.

Поддержка движком акселерометра позволяет создавать динамичные игры с перемещением в пространстве. Безусловно, для обработки физики используется Box 2D, плюс, на выбор, движок Chipmunk. Имеется несколько специальных отдельных редакторов (как платных, так и бесплатных), служащих для создания определенного контента: атласы, шрифты, частицы, спрайтовые таблицы и так далее. Набор GUI-элементов довольно мал, но можно создать недостающие компоненты самостоятельно.

Итоги

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

Однако, к сожалению, реальность такова, что в настоящее время имеет смысл разрабатывать игры только для двух платформ: iOS и Android. Будем считать, что я этого не говорил, так как я сам верю в светлое будущее и большие хардкорные игры. До встречи!

2D игра на чистом JavaScript

На этой странице

К каждому шагу предлагаются редактируемые опубликованные примеры, с которыми можно поиграть, чтобы вы видели, как должна выглядеть игра на промежуточных этапах. Вы изучите основы использования элемента Элемент может быть использован для отрисовки графики через скрипты (обычно используется JavaScript). На пример, его можно использовать для отрисовки графиков, делать композиции фото или даже выполнять анимации. Вы можете (и должны) дать альтернативное содержание внури блока . Этот контент будет рендерится в обоих браузерах, в старых которые не поддерживают canvas и в браузерах с отключённым JavaScript.»> для реализации таких фундаментальных игровых механик, как рендеринг и перемещение изображений, обнаружение столкновений, механизмы управления, а также состояния выигрыша и проигрыша.

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

Детали к урокам

Все уроки и версии игры MDN Breakout доступны в GitHub:

Лучший способ получить надежные знания в области разработки браузерных игр — это начать с чистого JavaScript. Затем можно выбрать любой фреймворк для использования в своих проектах. Фреймворки — это инструменты, созданные на языке JavaScript; поэтому, даже если вы планируете работать с ними, не лишним будет сначала изучить сам язык, чтобы понимать, что именно происходит внутри. Фреймворки ускоряют разработку и помогают справиться со скучными частями игры, но если что-то работает не так, как ожидалось, всегда можно попытаться отладить код или написать собственное решение на чистом JavaScript.

Примечание. Если вам интересно узнать о разработке двухмерных игр с помощью игровой библиотеки, ознакомьтесь с альтернативной серией статей 2D игра Breakout с использованием Phaser.

Примечание. Эту серию статей можно использовать как материал для практических занятий по разработке игр. Также можно воспользоваться набором инструментов Gamedev Canvas Content Kit, основанным на этом уроке, если нужно сделать доклад о разработке игр в целом.

Следующий шаг

Ладно, давайте начнем! Перейдите к первой главе — Создание Canvas и рисование на нем.

На каких языках программирования пишут игры

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

Игру можно написать на чем угодно:

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

Что из себя представляет игра

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

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

«В таверне вам рассказали о пещере с сокровищами, из которой никто не возвращался живым. Откройте страницу 6, чтобы продолжить выпивать, или страницу 312, если хотите пойти в пещеру.»

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

Реализовать такое можно на чем угодно, потому что все языки могут обрабатывать действия пользователя, но лучше всего подойдет HTML (хотя это даже не язык программирования) — на нем можно создать подобную игру за 10–15 минут.

Браузерные игры

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

Тут уже можно подключить JavaScript — он позволяет хранить в переменных какие-то данные персонажа, а графику может обрабатывать с помощью canvas. Если прикрутить PHP, получится подключить базу данных, построить защиту и реализовать многопользовательский режим. А это уже полноценная браузерная игра.

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

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

Так игрок всё больше и больше втягивается, а потом осознает, что достиг9000 уровня в «Ультра-фермер Одноклассников онлайн», потратив несколько тысяч рублей.

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

Примеры браузерных приложений

Игры для мобильных устройств


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

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

Unity, один из самых популярных движков, дает возможность писать на C# и JavaScript, а до пятой версии поддерживался и Boo. Подключаете скачанные файлы, пишете несколько команд — и простенькая игра готова.

  • Живая обратная связь с преподавателями
  • Неограниченный доступ к материалам курса
  • Стажировка в компаниях-партнёрах
  • Дипломный проект от реального заказчика
  • Гарантия трудоустройства в компании-партнёры для выпускников, защитивших дипломные работы

Примеры мобильных игр

Компьютерные и консольные игры

Тут настоящий размах. Невероятно реалистичная графика, VR, большой игровой мир, поддержка огромного количества игроков онлайн и так далее. Можно создавать небольшие проекты вроде Limbo или Super Meat Boy в одиночку, а можно в команде разрабатывать новый Fortnite.

Но и сложность тоже возрастает в несколько десятков или даже сотен раз. Чем масштабнее вы мыслите, тем больше работы предстоит проделать. Вот неполный список аспектов разработки, над которыми предстоит потрудиться:

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

Без движков тоже можно обойтись: World of Warcraft был написан на C++. Также можно сделать всё самому: Minecraft был создан одним человеком на Java, а после игру купила компания Microsoft за 2,5 миллиарда долларов.

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

Примеры компьютерных игр

Какую роль в гейм-разработке играют языки

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

Представьте, что у вас есть 3D-модель персонажа. Пока от нее нет толка. Если вы хотите, чтобы она начала двигаться, нужно написать код. Этот скрипт должен отлавливать действия игрока, а потом передавать команду модели персонажа.

Например, вы ловите все нажатия, а потом определяете, что это была за кнопка. Если это стрелочка влево — персонаж должен идти налево. Рассмотрим на примере JavaScript.

player.x++; //Меняем координаты

playerAnimate(player.x); //Вызываем функцию анимации

case 38: //У каждой кнопки есть свой код.38 — стрелочка влево

playerMove(“left”); //Вызываем функцию движения

case 39: //Стрелочка вправо

playerMove(“right”); //Вызываем функцию движения

Если пользователь нажмет нужную кнопку, то его персонаж передвинется на другие координаты, а потом будет вызвана функция анимации. На JavaScript в основном работают с 2D или псевдо-3D, поэтому останавливаться на моделях мы не будем.

Программный код также запускает музыку в нужный момент:

audio.play(); //Запустить аудио

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

В играх почти все завязано на скриптах:

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

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

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

Какой язык выбрать для разработки игры

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

  • Swift — игры на iOS или MacOS.
  • PHP и JavaScript — браузерные игры.
  • C# — игры на Unity.
  • С или C++ — большие требовательные игры.

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

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

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

Если вы создаете игру впервые, воспользуйтесь каким-нибудь движком:

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

Разработка игры на Canvas, часть 1. Начало

Давно я не писал новых игрушек и вот, придумал! Почему бы не сделать небольшую игрушку на canvas?

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

Начнем с простого, определим, что будем делать. Моя идея следующая: сделать 2D игру на canvas.

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

Ваш приз: очки и, собственно, жизнь.


Что нам понадобится?

Для облегчения работы я поискал фреймворки для работы с canvas. В результате поисков я остановился на Konva.

Так же я подумал, что лучше прояснить, что нужно делать, нам поможет ментальная карта:

Что ж, приступим!

Начнем мы с самого начала, естественно.

Что мы сделали? Добавили наше будущее поле игры div#container и подключили скрипт фреймворка.

Добавим немного стилей в .

На выходе мы получим наше игровое поле, которое будет раскрашено травкой ��

JavaScript

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

Для начала создадим наше поле.

Поле сделано. Займемся игроком.

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

Создание и размещение игрока

Вот и все. У нас теперь есть игрок, который отображается на игровом поле и просто стоит, покачивается ��

Движение

Все-таки просто стоять и смотреть на игрока неинтересно. Добавим динамики — передвижение при нажатии на стрелочки.

Нам понадобится вспомогательная переменная direction для задания направления игрока. Добавим ее в начало, где задавались размеры для поля.

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

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

В JavaScript блок я дописал следующее:

Отлично. Теперь наш игрок реагирует на нажатия клавиш и перемещается по полю. Но что это? Игрок может выйти за границу! Недопустимо! Разберемся с этим. В функции handleInput() добавим ограничения движений

Готово! Теперь наш игрок двигается только в рамках границы поля.

Думаю, что на сегодня хватит. Статья получилась довольно большой. Остальное в следующей части!

Остались вопросы? Пишите в комментариях. Если я где-то кардинально ошибся — так же напишите мне, пожалуйста. Будем разбираться ��

Спасибо за внимание! Подписывайтесь на рассылку ��

Автор статьи: Alex. Категория: JavaScript
Дата публикации: 07.06.2015

JavaScript vs. C++: создание одной и той же 3D-игры на обоих языках

Список движков известных форуму!
И так, подводим итоги самых популярных движков для игр на платформе Android !

Остальные менее популярные движки известные нашему форуму:

  • Defold — бесплатный
  • Buildbox — бесплатный \ платный 2675$
  • INSTEAD — бесплатный
  • Corona SDK -бесплатный / платный 550$
  • Cocos2D — бесплатный
  • LIBgdx — бесплатный
  • ORX — бесплатный
  • jPCT 3D engine — бесплатный
  • Tululoo Game Maker — бесплатный
  • Game Maker Studio — платный 99$
  • Construct 2 — бесплатный \ платный 79$
  • Stencyl — бесплатный, но поддержка Android только в платной версии
  • G > — платный 149$
  • Marmalade — платный 150$ в год
  • Ardor3D — бесплатный
  • jMonkeyEngine — бесплатный
  • MOMINIS — бесплатный
  • IRM — бесплатный
  • Linderdaum Engine SDK — бесплатный
  • Moai SDK — бесплатный \ платный 99$
  • Esenthel Engine — платный 150$
  • IwGame Engine — бесплатный
  • DX Studio — бесплатный
  • BatteryTech Engine — бесплатный \ платный 249$
  • Unreal Engine 4 бесплатный, если суммарный доход за квартал не превышает 3000$ . Если доход превышает 3000$, то Вы платите разработчикам 5% от суммарного дохода от продукта за квартал.
  • e3ro > — бесплатный
  • Antiryad Gx 3 — бесплатный
  • gameQuery — бесплатный
  • Ethanon Engine — бесплатный
  • PGS4A — бесплатный
  • Crystal Space 3D — бесплатный
  • Godot Game Engine — бесплатный
  • Multimedia Fusion 2 -бесплатный 30 дней / платный
  • Monkey -платный 99$
  • Ignifuga -бесплатный

ТУТ НАЗВАНИЕ ДВИЖКА

Жанровая направленность: .
Мультиплеер: .
Лицензия: .
Открытость исходного кода: .
Язык программирования: .
Движок написан на: .
Платформа: . (пример iOS, Android, Bada. )
Достоинства: .
Недостатки: .

Официальные ссылки:
Официальная страница (тут ссылка на оф. страницу)

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

Сообщение отредактировал derak1129 — 03.07.19, 20:26

Тема регулярно будет пополняться.

Сообщение отредактировал -=Toni=- — 10.06.13, 02:08

Сообщение отредактировал lihach77 — 10.08.14, 02:39

Сообщение отредактировал lihach77 — 03.03.12, 18:55

Open source 3d-движок Gamekit
Описание:
Кросс-платформеныый(Win, Linux, IOS, Android) движок основаный на игровом редакторе в blender, для вывода графики использует Ogre(также можно использовать irichlight или др. библиотеки)
Оффициальный сайт, Cтраница проекта на Google Code
Примеры игр на движке:
Zombie in Love
Видео игр на движке:
Zombie in love
Пример работы с акселерометром

Сообщение отредактировал lihach77 — 10.03.12, 22:11

Сообщение отредактировал lihach77 — 09.03.12, 22:14

Сообщение отредактировал lihach77 — 27.03.12, 21:07

Tululoo — продвинутая среда разработки, которая позволяет пользователю с легкостью создавать браузерные игры.
Программа генерирует JavaScript код, который может быть выполнен во всех браузерах, использующих HTML5.

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

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

Cразу отвечу на вопрос зачем оно тут. Ответ:PhoneGap

Сообщение отредактировал vitese200 — 13.05.12, 16:36

Game Maker Studio

Жанровая направленность:Любые 2Д игры ( + разные движки для 3Д игр (Gmogre и другие))
Платформы:Windows,Android,IOS,Mac OS,HTML 5,
Лицензия: Платная
Базовая стоить $99 и позволит создавать игры для Windows и Mac
+ экспортёры IOS, Android, HTML5, каждый $200
Языки программирования: Game Maker Language (Для создание простейших игр он не понадобиться )
Язык: Английский (Будит русик :happy: не беспокойтесь)
Сайт:http://www.yoyogames.com/gamemaker/studio
Мультиплеер:возможен при наличии нужных библиотек dll

+ +
Те, кто купил Game Maker
HTML5, автоматически получат доступ к Game Maker Studio с возможностью экспорта на Windows, Mac и HTML5.
Game Maker HTML5 в настоящее время можно приобрести за $99, что дает возможность
сэкономить $200 на стоимости покупки Game Maker Studio
такого же уровня сразу, как только он станет доступен
($299 = $99 основная
программа + $200 экспорт в HTML5).

+++
Те кто знаком с Game Maker будут тав как дома.

Это движок-конструктор
Он прост в обучении и в создании игр.
Так же вы можете в игры встраивать разные библиотеки DLL

p.s. крякнутая версия давно по нэту плавает :happy:
p.s.s по поводу создания игр на нём можете обращаться ко мне

Сообщение отредактировал xotta6bl4 — 18.07.12, 13:38

Stencyl
Платформа: Windows, Linux, Mac OS X, iOS, Flash, Android;
Жанровая направленность: 2D игры любого жанра;
Лицензия: Freeware;
Открытый исходный код: не предоставляется;
Достоинства: Бесплатность, удобный интерфейс, хорошая поддержка сообщества;
Недостатки: Достаточно простые игры;
Языки программирования: Drag-and-Drop (визуальный) + поддержка AS3 (для профессионалов);
Официальный сайт: http://www.stencyl.com/
Описание: Stencyl — достаточно мощный и гибкий инструментарий для создания двумерных флеш игрушек, позволяющий быстро и эффективно создавать и делиться ими с другими людьми. Ранее конструктор назывался StencylWorks, но после введения ряда обновлений и объединения разных его ветвей, разработчики приняли решение урезать названием просто до Stencyl.

Сообщение отредактировал GlebSTaR — 26.01.13, 11:50

Мастер Йода рекомендует:  Алгоритмы и структуры данных на C++ деревья отрезков
Добавить комментарий