
Доброго времени суток. Как со мной бывает, как только я разобрался в каком-то сложном для себя вопросе, я сразу хочу рассказать всем решение. Поэтому решил написать серию из двух статей по такой интересной теме, как процедурная генерация. А конкретнее, я буду рассказывать про генерацию текстур планет. В этот раз я подготовился основательнее и постараюсь сделать материал качественнее, чем в моем предыдущем посте «Простая система событий в Unity» (кстати, спасибо всем за ответные посты). Прежде чем продолжить, хочу обратить ваше внимание на несколько моментов:
1)Этот генератор не претендует на реалистичность, и писал я его для того, чтобы сгенерировать уникальные текстуры для сотни маленьких шариков, которые занимают 10% экрана и к тому же прикрыты облаками.
2)Но это не значит, что я не буду рад критике. Напротив, одна из причин написания этого поста — получить советы по улучшению алгоритма, я с радостью улучшу его.
3)Чисто технический момент: я пишу на C# под Unity3d, так что думать о том, как выводить в изображение с приемлимой скоростью вам придется самим, для каждого языка и платформы свои способы.
Итак, план таков: в первой статье я рассказываю о процедурной генерации планет типа «терра», потом получаю шквал критики, ради которого все и делалось, улучшаю алгоритм, дорабатываю для других типов планет и пишу вторую часть.
Готовы? Поехали.Читать полностью »
Рубрика «game development» - 38
Процедурная генерация текстур планет на основе алгоритма Diamond-Square, часть 1
2015-01-28 в 14:50, admin, рубрики: Diamond-Square, game development, unity3d, Алгоритмы, Программирование, процедурная генерация, текстуры планетКанделябр vs леденец
2015-01-28 в 9:49, admin, рубрики: android, game development, lollipop, Разработка под android Не успела наша команда разработчиков Марьяжа для Android протрезветь после празднования нового 2015 года, как в отзывах на Google Play начали сыпаться единицы за “тормоза”. Единицы сыпались от пользователей достаточно мощных устройств вроде Nexus 5, 6 и 7. Единственное, что их объединяло — это операционная система: Android 5 (Lollipop).
Читать полностью »
Почему я потратил четыре года на разработку игры своей мечты
2015-01-28 в 7:25, admin, рубрики: game development, Блог компании IlkFinKom, мотивация, симуляторы, социальные игры, старт разработки. 
По мере прочтения статьи вы спросите себя, к чему я излагаю эти, казалось бы, очевидные факты? Дело в том, что по моему скромному мнению эволюция культуры видеоигр слишком стремительна. Даже поклонников 8-битных консолей все еще много, как и издателей игр для них. Но теперь это ретро, точно так же как и любимые мной браузерные игры. А еще каких-то 10 лет назад не было ничего круче хорошего, по тем временам, канала в сеть и друзей в чате любимой браузерки.
С друзьями я играл во множество разных проектов на консолях и ПК, как и многие из вас. Как и многие из вас конечно же я перешел от игры за одним компьютером к игре по сети. За последние двадцать лет можно вспомнить огромное количество культовых проектов для различных платформ с которыми мне довелось познакомиться. Но самые приятные, самые теплые воспоминания и самые яркие впечатления оставили в моей памяти исключительно браузерные игры, проекты, построенные на тесном социальном взаимодействии игроков. Больше всего воспоминаний осталось о живых, реальных людях, что и подтолкнуло меня к участию в разработке подобной игры.
Но обо всем по порядку.
Читать полностью »
Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 5 из 6
2015-01-27 в 22:15, admin, рубрики: game development, shaders, Программирование, Работа с анимацией и 3D-графикой, шейдерыСодержание основного курса
- Статья 1: алгоритм Брезенхэма
- Статья 2: растеризация треугольника + отсечение задних граней
- Статья 3: Удаление невидимых поверхностей: z-буфер
- Статья 4: Необходимая геометрия: фестиваль матриц
- Статья 5: Пишем шейдеры под нашу библиотеку
- Статья 6: Чуть больше, чем просто шейдер: просчёт теней
Улучшение кода
- Статья 3.1: Настала пора рефакторинга
- красивый класс матриц
- как работает новый растеризатор
Пришла пора веселья, давайте для начала смотреть размер текущего кода:
- geometry.cpp+.h — 218 строк
- model.cpp+.h — 139 строк
- our_gl.cpp+.h — 102 строки
- main.cpp — 66 строк
Итого 525 строк. Ровно то, что я обещал в самом начале курса. И заметьте, что отрисовкой мы занимаемся только в our_gl и main, а это всего 168 строк, и нигде мы не вызывали сторонних библиотек, вся отрисовка сделана нами с нуля!
Я напоминаю, что мой код нужен только для финального сравнения с вашим работающим кодом! По-хорошему, вы всё должны написать с нуля, если следуете этому циклу статей. Очень прошу, делайте самые безумные шейдеры и выкладывайте в комментарии картинки!!!
Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 3.1 из 6
2015-01-26 в 21:41, admin, рубрики: c++, game development, линейная алгебра, Программирование, Работа с анимацией и 3D-графикойСодержание курса
- Статья 1: алгоритм Брезенхэма
- Статья 2: растеризация треугольника + отсечение задних граней
- Статья 3: Удаление невидимых поверхностей: z-буфер
- Статья 3.1: Настала пора рефакторинга
- Статья 4: Необходимая геометрия: фестиваль матриц
- Статья 5: Пишем шейдеры под нашу библиотеку
- Статья 6: Чуть больше, чем просто шейдер: просчёт теней
Данная статья написана в тесном сотрудничестве (спасибо создателям XMPP) с haqreu, автором данного курса.Мы начали масштабный рефакторинг кода, направленный на достижение максимальной компактности и читаемости. Мы сознательно пошли на отказ от ряда возможных и даже очевидных оптимизаций для получения максимально доступного для понимания кода учебных примеров.
P. S haqreu буквально на днях выложит статью о шейдерах!
Читать полностью »
Игровой мир WebGL или Three.js vs Babylon.js
2015-01-26 в 8:54, admin, рубрики: babylon.js, blender, game development, javascript, three.js, WebGL, Веб-разработка, Работа с анимацией и 3D-графикой 
Когда я начинал писать свою первую игрушку на three.js я и не думал, что на самом деле three.js это верхушка айсберга в мире WebGL и что есть десятки разнообразных фреймворков и у каждого из них свой специфический уклон, а three.js просто один из них.
Введение
1. Базовые элементы
2. Группировка
3. Движение
4. Частицы
5. Анимация — 1
6. Анимация — 2
7. Простой ландшафт
8. Статические коллизии
9. Динамические коллизии
10. Импорт моделей
11. Встраивание физических движков
12. Тени, туман
Читать полностью »
Как я игру про SEO писал
2015-01-25 в 21:45, admin, рубрики: game development, Gamification, mobile games, unity3d, планирование, симулятор 
Привет! Мобильные обучающие игры — это как раз то, что я хотел видеть среди приложений. Сиди себе в метро-маршрутке и учись чему-нить полезному, набивай шишки на тренажере в телефоне.
Перед нами стояла задача привлечь новых вебмастеров в нашу партнерку.
Однако знания необходимые вебмастеру — это минимум 2 курса института. Случайных людей здесь нет.
Новичков это пугает, а ветеранов — можно пересчитать по пальцам.
Поэтому мы решили сделать обучающий тренинг для новичков на мобильных телефонах.
GPU Particles с использованием Compute и Geometry шейдеров
2015-01-24 в 21:25, admin, рубрики: compute shader, game development, geometry shader, gpgpu, gpu, Работа с анимацией и 3D-графикойПривет, дорогой читатель!
Сегодня мы продолжим изучение графического конвейера, и я расскажу о таких замечательных вещах, как Compute Shader и Geometry Shader на примере создания системы на 1000000+ частиц, которые в свою очередь являются не точками, а квадратами (billboard quads) и имеют свою текстуру. Другими словами, мы выведем 2000000+ текстурированных треугольников при FPS > 100 (на бюджетной видеокарте GeForce 550 Ti).
Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 4б из 6
2015-01-24 в 17:25, admin, рубрики: game development, gouraud shading, геометрия для пятого класса, Программирование, Работа с анимацией и 3D-графикой, тонировка гуроСодержание курса
- Статья 1: алгоритм Брезенхэма
- Статья 2: растеризация треугольника + отсечение задних граней
- Статья 3: Удаление невидимых поверхностей: z-буфер
- Статья 4: Необходимая геометрия: фестиваль матриц
- 4а: Построение перспективного искажения
- 4б: двигаем камеру и что из этого следует
- Статья 5: Пишем шейдеры под нашу библиотеку
- Статья 6: Чуть больше, чем просто шейдер: просчёт теней
Сегодня мы заканчиваем с ликбезом по геометрии, в следующий раз будет веселье с шейдерами!
Чтобы не было совсем скучно, вот вам тонировка Гуро:

Я убрал текстуры, чтобы было виднее. Тонировка Гуро очень проста: добрый дяденька-моделёр дал нам нормальные вектора к каждой вершине объекта, они хранятся в строчках vn x y z файла .obj. Мы считаем интенсивность освещения для каждой вершины треугольника и просто интерполируем интенсивность внутри. Ровно как мы делали для глубины z или для текстурных координат uv!
Кстати, если бы дяденька-моделёр был не таким добрым, то мы могли бы посчитать нормали к вершине как среднее нормалей граней, прилегающих к этой вершине.
Текущий код, который сгенерировал эту картинку, находится здесь.



