Pull to refresh

Физика вращения 3д тел

Reading time11 min
Views10K

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

В статье Вас ждут математика, физика, а заодно численное моделирование и визуализация в libgdx.

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

Читать далее
Total votes 45: ↑45 and ↓0+45
Comments19

Valentine's Day Application on Libgdx

Reading time7 min
Views3.7K

Every year there are a lot of articles dedicated to Valentine's Day. I also decided to get involved in this topic and create something original and unusual. The idea was to create a simple Android application with hearts that would have their physical models and interact with each other. Then I added text, sounds, particles and some other effects. The resulting app was working and quite original! In this article I will describe the creation process, as well as the capabilities and pitfalls of the libgdx library.


Valentines Day Hearts.

Read more →
Total votes 24: ↑22 and ↓2+20
Comments3

Разрабатываем игры на LibGDX с помощью шаблона Entity Component System

Reading time8 min
Views11K
Привет Хабр! Меня зовут Андрей Шило, я android-разработчик в компании FINCH. Сегодня я расскажу вам о том какие ошибки не стоит допускать при написании даже самой простой игры и чем крут архитектурный подход Entity Component System(ECS).
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments6

Ремэйк Mine Bombers с реализацией мультиплеера (Android)

Reading time4 min
Views2.1K


В далёком 1996 году вышла 2d аркада Mine Bombers: www.youtube.com/watch?v=iOHmVR0LINU

Я помню как мы играли в нее вчетвером на одной клаве часами напролёт. Мультиплеер режим был только типа hotseat, сетевого не было.

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

Я сохранил механику оригинальной игры, оставив также пиксельную графику, стараясь не уходить далеко от оригинала.
В моей первой статье хотел рассказать о архитектуре бэкенда и игровом протоколе, которые я реализовал.
Читать дальше →
Total votes 4: ↑3 and ↓1+2
Comments1

Spring Data JPA: разница между методами findById, getOne, getById и findOne

Reading time8 min
Views9K

JpaRepository Spring Data предоставляет огромный набор методов, упрощающих реализацию операций над базой данных. С их помощью вы можете сохранять, удалять и считывать объект сущности (entity object). Однако одна из немногих проблем, являющаяся следствием изобилия возможностей, которые дают нам эти интерфейсы, — это выбор правильного метода для вашего конкретного случая. И иногда это совсем не так просто, как могло бы показаться с первого взгляда. Хорошим примером этой проблемы являются методы findById, getOne, getById, и findOne. Судя по их именам, все они делают одно и то же. Так когда и какой из них вы должны использовать?

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

Читать далее
Total votes 9: ↑7 and ↓2+5
Comments0

ChatGPT Глубокая интеграция

Reading time9 min
Views4.1K

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

Читать далее
Total votes 5: ↑4 and ↓1+3
Comments8

Кроссплатформенность — это круто

Reading time8 min
Views30K
Этот пост участвует в конкурсе „Умные телефоны за умные посты“.

Ни для кого не секрет, что сегодня мобильные игры очень популярны. Возможность написать одну из таких игр есть у каждого разработчика, даже начинающего. Часто возникает вопрос с выбором платформы. Конечно, хочется, чтобы игра была сразу везде: на iOS и Android, на WP7 и MeeGo, на десктопе и в браузере. И чтобы все это можно было лекго реализовать с помощью бесплатных инструментов.



В этой статье я расскажу вам, как сделать основную часть кода платформонезависимой, а для остального использовать удобные средства разработки для каждой конкретной платформы.
Читать дальше →
Total votes 179: ↑168 and ↓11+157
Comments69

Приложение в честь Дня святого Валентина на libgdx

Reading time7 min
Views26K

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


.

Читать дальше →
Total votes 50: ↑30 and ↓20+10
Comments22

Перевод туториалов по libGDX — часть 3 (пакет scene2d)

Reading time6 min
Views35K
Это третья статья из цикла переводов туториалов libGDX.
Первая статья находится здесь
Вторая статья находится здесь

scene2d



Пакет scene2d представляет собой классы для реализации графа для двухмерной сцены, которые могут быть полезны для управления группой иерархически связанных актеров (актер — некоторая сущность, которая может быть нарисована и которая может обрабатывать события ввода — прим. переводчика). Этот пакет предоставляет поддержку для обработки управления, рисования с возможностью поворота и масштабирования актеров в системе координат относительно родительского актера. Этот пакет также предоставляет фреймворк для управления действиями актеров через некоторые промежутки времени (tweening). Пакет scene2d.ui предоставляет актеров, которые могут быть полезны при построении графического интерфейса пользователя.
Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments5

Туториал по libGDX — создание пользовательского интерфейса. Часть 1

Reading time9 min
Views49K
Разбираясь дальше с библиотекой libGDX, я дошел до пакета com.badlogic.gdx.scenes.scene2d.ui. Этот пакет предназначен для создания пользовательського интерфейса. И тут меня ждало разочарование: статьи-туториала нет. Поэтому я решил самостоятельно разобраться с пакетом, используя исходники и Javadoc документацию. То есть, это будет туториал по scene2d.ui, но уже не перевод. Я не буду здесь детально описывать конструкторы, методы, приводить подробные сигнатуры. Я постараюсь взглянуть с высоты «птичьего полета», поскольку зная принципы, вы всегда сможете узнать больше из документации. Но даже при таком подходе материала слишком много, поэтому я разобью его на две (возможно больше) статей.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments4

Перевод туториалов по libGDX — часть 1 (настройка проекта в Eclipse)

Reading time5 min
Views31K
Эта статья — перевод первого туториала для проекта libGDX. Оригинал находится — здесь

От переводчика: недавно у меня появилось желание написать игру под Android. У меня есть некоторый опыт программирования на Java, но я почти не сталкивался с разработкой под Android. Тут я наткнулся на библиотеку libGDX, которая позволяет писать кросплатформенные игры. Также я наткнулся, что по ней не хватает русской документации, а конкретно — туториалов. Поэтому у меня появилось желание перевести туториалы. Это мой первый перевод, поэтому буду рад любым замечаниям и указаниям на неточности.

Настройка проекта


Примечание: есть проблемы с использованием Java 1.7 для Android-приложений. Убедитесь, что вы используете Java 1.6
Примечание: надо сделать несколько шагов для настройки приложения под Android. Смотрите ниже.

Эта статья описывает, как настроить Eclipse для разработки и запуска приложений как на настольном компьютере, так и на Android-устройствах.
Читать дальше →
Total votes 14: ↑11 and ↓3+8
Comments5

Использование фильтров из Box2D в Libgdx

Reading time3 min
Views11K
В прошлой статье рассматривалась работа с ContactListener. Вот только примеры, которые я использовал, были не совсем верно выбраны. В Box2D есть намного более удобные средства для фильтрации столкновений, а именно – фильтры. О них и напишу в этот раз.
Использование фильтров из Box2D в Libgdx
Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments0

Box2d и Libgdx

Reading time9 min
Views57K
День добрый.

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

Я задался целью поэтапно писать статьи о различных аспектах/частях LibGDX, чтобы в итоге, любой человек мог более-менее работоспособную версию своей собственной игрушки сделать. В этой статье хотел бы рассказать про Box2D, который присутствует в LibGDX.
image
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments9

Работа с ContactListener из Box2d в Libgdx

Reading time3 min
Views18K
В продолжение прошлой статьи про использование Box2d в Libgdx решил рассмотреть работу с классом ContactListener.

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

image
Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments5

История разработки моей первой игры

Reading time6 min
Views29K
Все началось с того, что я поиграл в сверхпопулярную игру под названием «Flappy bird». Все отлично её знают и описывать игру нет смысла. Но одно сказать я все же должен: Flappy bird зацепила меня своей простотой управления и сложностью геймплея. Я мог играть в нее часами подряд и вдруг подумал — может сделать такую же захватывающую, но при этом простую в управлении и концепции игру? Это же легко, работы на 2 недели, думал я. И так все началось.
Читать дальше →
Total votes 30: ↑20 and ↓10+10
Comments43

[ libGDX ] Опыт разработки игры с использованием Box2D

Reading time5 min
Views20K
Здравствуй, Хабр! Ух! Давно же я не писал здесь. Итак, начну пожалуй с небольшой предыстории и заодно приведу скриншот получившейся игры.

TOTAL100
Скриншот игрового процесса
Читать дальше →
Total votes 17: ↑14 and ↓3+11
Comments11

Как я делал комикс-игру по Лавкрафту

Reading time10 min
Views22K


Привет, Хабр! Это будет история о тернистом пути разработки 2D-квеста в сеттинге миров Говарда Филлипса Лавкрафта, который целиком оформлен в виде интерактивного комикса. Ну то есть все в игре, начиная от головоломок и заканчивая интерфейсом — это один бесшовный комикс. Если вас заинтересовала такая концепция, прошу под кат, где будет больше гифок, технические детали и опыт публикации на основных платформах.
Читать дальше →
Total votes 89: ↑88 and ↓1+87
Comments66

Как я попробовал написать авиасимулятор

Level of difficultyMedium
Reading time9 min
Views13K


Давным-давно, в 2015 году я написал свою первую статью на хабр: Пишем простую* игровую физику самолёта


Статья появилась не сама по себе — я писал игру, но так её и не доделал. За предыдущие девять лет я несколько раз возвращался к проекту, что-то улучшал, но по-факту он так и остался на уровне прототипа.


В итоге я решил открыть исходники под MIT-лицензией, чтобы кто угодно мог их посмотреть или как-то переиспользовать: репозиторий на gitlab


Если интересно почитать о процессе, удачных и неудачных технических решениях и т.п. — читайте дальше.

Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments10

Как я писал Bomberman’а на Android

Reading time4 min
Views51K
День добрый, уважаемые хабражители.
Писать игры хотел ещё с того момента, когда только начал программировать. И вот, решил всё-таки попробовать себя в написании игр на Android.
Игру осенью сделал ещё и выложил в маркет. Правда её удалили, так как права на Bomberman'а у Konami. Но статья, естественно, не об этом.

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

Читать дальше →
Total votes 77: ↑71 and ↓6+65
Comments56

Фишки для Android

Reading time7 min
Views26K

Вступление


Думаю, большинство из вас в детстве игрались в фишки. Помните, такие маленькие кружочки с рисунками? Они были на разные тематики. Лично я игрался в них не очень много, но еще застал их. И тут поступила идея сделать такую игру на телефон — на Android. Знания были, опыт тоже, и я приступил к реализации. Я расскажу немного о игровом процессе, и, конечно же, коснусь технических моментов — куда же без них на хабр-то?
Читать дальше →
Total votes 25: ↑17 and ↓8+9
Comments27