Это копия, сохраненная 6 июня 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Давайте обсудим опыт использования данной библиотеки - как помогла/помешала вам претворить в жизнь свои идеи? С какими подводными камнями столкнулись? Какие игры пишете на ней и рекомендуете писать?
Сурс: https://libgdx.badlogicgames.com/index.html
К слову, в движок встроена мощная система частиц, и редактор к ней (который, правда, отказывался сохранять и загружать файлы, так что пришлось копаться в его исходниках и пересобирать). Не знаю, правда, насколько это ресурсоёмко - на андроиде пока не тестировал.
Пишу на нём свой рожалик.
>подводными камнями
Мне неудобна система координат y-up, которая в libgdx по-умолчанию. В большинстве критических мест, правда, есть возможность создать y-down через особые конструкторы и т.п. Но всё равно, где-нибудь привязка к y-up обязательно вылазит. Например, в гуе (scene2d). Изрядно с ним помучился.
gd-шник средней криворукости и одарённости.
0. Кирилл, который собирается пилить говнецо под мобилки для заработка обречен на провал.
Мониторь плеймаркет. Найди платные игры разного качества (по своим силам), посмотри цену и примерное кол-во скачиваний. Если что интересного найдёшь, вбрасывай.
Y-up это когда ордината увеличивается снизу-вверх? Ну так вроде более естественно для матана.
Пернул тебе в лицо за такие вопросы. Сделай одолжение - выпились. Избавь мир от высранного тобой мусора.
Все верно тебе ответили, если не готов вкладываться в раскрутку то твою игру никто даже не увидит в плотном потоке фекалий.
Мы не на google market, наркот ты ебаный.
>>250629
Так ты ещё и семён, блять. Я что-то про раскрутку спрашивал? Ты что несёшь вообще? Прочитай вопрос внимательно или пиздуй в начальную школу- попроси научить тебя общаться с людьми.
Но не отвечай, блядь, на вопросы, не понимая, о чём тебя спрашивают. А тем более не исходи на говно, только зайдя в тред.
А я и не делал. Ну, т.е., не пришлось пока. Так то в сторону behavior trees посматриваю, но это всё потом. Сейчас, пока ещё я не определился с тем, какие вообще будут возможности в игре, ИИ в конечном виде делать рано. Пока у меня все NPC просто следуют такой модели: ходят рандомно (подбирают предметы, воскрешают трупы союзников), пока не увидят враждебный юнит (не только игрока), вычисляют путь до него (астаром), идут туда (или стреляют-нюкают, если умеют). Если в процессе цель неизвестно куда пропала (ушла из зоны видимости, например) - идут на последнюю известную точку. Ну и, когда хп мало, начинают убегать в сторону "от ближайшего врага". Вот и весь "ИИ".
FAILURE: Build failed with an exception.
What went wrong:
Task 'clean' not found in root project 'НАЗВАНИЕ_ПАПКИ'.
Try:
Run gradlew tasks to get a list of available tasks. Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 59.334 secs
Где "НАЗВАНИЕ_ПАПКИ" - дефолтная директория командной строки Windows.
Не работает у меня gradle, как я понял. Не видит файлы в папке, а ищет их в дефолтной директории.
А ещё LibGDX не поддерживает изкоробки скелетную анимацию. Библиотека есть только у мегадорогого Спайна. Короче, ненужно.
Ты не можешь контролировать как зовётся метод render. Он просто будет зваться и всё. Поэтому чтобы написать правильную петлю, способную рендерить так часто как можно и считать состояние с фиксированным рейтом, приходится маленько изъёбываться. Ну вообще это довольно легко одолимая проблема.
https://github.com/libgdx/libgdx/wiki/Threading
Надо раскурить более детально как в JVM синхронизация устроена, возможно, ещё одной маленькой проблемой станет меньше.
Бро, в чём профиты мультитредовости в 2д игре? В смысле, там же простая логика: читай ввод -> просчитывай положение/состояние -> рисуй.
>хотя должно быть видно
Нет.
Алгоритмы los разные и выдают разные результаты. Это нормально. Если бы ты делал максимум-реализм-3д, да, было бы не очень удобно, что монстр тебя не видит, так как у вас между центрами моделек стенки кусок, а ты его видишь, потому что тебе достаточно, чтобы его левый мизинец в камеру попадал, чтобы предположить, что он есть. А для рогалика то какая разница? Просто ещё один элемент абстракции. По правилам игры ты видишь только то, что на одной брезенхемовской линии лежит с твоей клеткой и всё.
Хз зачем, но антом точно не надо пользоваться - устаревшее говно мамонта. А мавен ещё вполне норм - не у всех ХМЛфобия.
Да, читай-считай-рисуй это хорошо, а вот за сеть я почему-то переживаю. Сеть охота в отдельном треде вести. Сеть блокирующая и явно является io. Гайды не рекомендуют вести io в рендертреде.
А физдвижок?
Кстать, по поводу разработки сетевого движка есть хорошая статья:
http://ithare.com/64-network-dos-and-donts-for-game-engine-developers-part-iib-protocols-and-apis-continued/
(в либгиске я на сколько понял ничего такого особого полезного для сети и нет).
http://ithare.com/64-network-dos-and-donts-for-game-engine-developers-part-i-client-side/
Точнее, вот, первая статья.
Ух ты, славная статья, спасибо! Я читал только gafferongames на эту тему, надо прочитать ещё эту.
>Чтобы не ебать себе мозги с редакторами, компиляторами, функционалом и проч
Дегенерат ебучий. Тебе кнопка "Сделать всё заебись" нужна? Не хочешь ебать себе мозги - спизди у мамки 100 рублей и иди блейзера купи, выпей в падике.
Нахуя ты в /gd/ зашёл, уёбище? Становись дворником - не будешь ебать себе мозг ничем.
Пидор.
Уходи.
>полноценный IDE для разработки игр
"Дайти мине прилажение, где я кнопка нажму и сразу получица игра года и я милион заработаю! Только штоб писать код не надо было, я не прагармировать хочу а игры делать хорошие. Если нада код писать или там думать гденибудь то это говно ни давайте. Кампилятор разбираться не хочу я жи игру буду делать и ни прилажение, я в игры с 8 лет играю всё придумол как надо делать".
>я хочу разработкой заниматься
"Толька чтоп без всяких кампилятарав и редактарав, я вам ни канфуций в этой сложной хуйне расбиратса"
Проваливай уже отсюда, игродел мамкин.
Долбоеб. Простейший встроенный графический редактор, интерфейс для подключения библиотек или модулей, редактор сцен и прочая мелочь, вот что мне нужно. При чем тут твои маняфантазии? Тебе в голову не приходит, что правильная организация работы может ускорить разработку и сделать ее более удобной?
Какой unity ему? Ты что? Там же мышкой много двигать надо и клавиатурой пользоваться.
И думать придётся. Ему проще надо, чтоб за 5 минут GTA VII накалябать.
Без сложной хуйни пусть берет фпс креатор.
Пусть пишет свои редакторы или ищет готовые решения. Если не может, то ynuti его выбор
>инструментов, которые в ней отсутствуют
Нет кнопки "сделать пиздато".
>Смущает обрезанная версия
Ты даже десять процентов возможностей идеи не будешь использовать, дегенерат. Как установишь и обосрешься в самом начале на создании libgdx проекта - прибегай, мы тебя будем ждать.
Через 2 года он сделает змейку толщиной в 1 пиксель и придёт нассать тебе на ебало.
Бро, не смущайся. Отсутствует только всякий кровавый энтерпрайз. Всё что нужно для комфортной разработки с LibGDX там есть. Базарю, после неё никакая другая Java IDE не вкатит. Она чуть ли не думает за тебя. Стоп, почему Java? Она ж полиглот.
А ОП - хуеглот, азазаззаз
Надо смотреть, как там дела с GC. LibGDX, да и вообще геймдев на Java, не любит GC. Если на Jython можно не мусорить, то должно сработать. Другие JVM-языки вполне ок пашут.
Убогий кусок кала высранный любителем, как и все написанное на жаве впрочем. Неюзабельно.
А расскажи плиз подробнее. По сайту не очень понятно. Там просишь либу сериализовать произвольный pojo? А потом когда десериалиация на другом конце, можно десериализовать в существующий объект, а не чтоб новый создавался? Типа чтобы не плодить мусор.
Как же юнитидебилов корёжит от самого лучшего 2д-движка.
http://www.slant.co/topics/341/~2d-game-engines
И самого популярного на гитхабе:
https://github.com/showcases/game-engines
Даже мне, ненавистнику Джавы, нечего сказать против него. Придётся пользоваться.
Рекомендую виртуальную машину Java версии 1.8
Посмотрел. Если кому интересно - Kryonet мусорить будет. По ходу велосипеда не миновать.
Хм, слушай, приятель, беру слова обратно, вчитался повнимательнее - класс Kryo весьма хитрожопо реализован и по ходу всё pool'ит, как и сабж треда. Видать жопой смотрел. Не первый раз причем уже такая паранойя. В прошлый раз померещилось, что мусорит java.net.DatagramSocket, с утра на свежую голову перечитал код - нихера.
>Спасибо. Из того, что я нашел на их сайте могу сделать вывод что штука очень удобная. Смущает обрезанная версия, и нет четкого списка инструментов, которые в ней отсутствуют. Но в целом выглядит очень круто. "Из коробки".
Блядь, ты троллишь? Это не геймдев ИДЕ. Это обычная ИДЕ, как эклипс. И никаких дополнительных благинов у неё под либгдх нет. Потому что либгдх - это тебе не движок уровня УЕ4 и вообще жаба - это тебе не геймдев.
А как же майнсруфт и 80 процентов всех игр под андроид а до ведроида была j2me с миллиардами игр
Обезумел?
А плюсы или шарп имеют? Это про любой язык можно сказать.
Из логики. А на чём ещё писать?
Сначала мне показалось, что он мусорит. Потом что не мусорит. А потом я проверил:
http://pastebin.com/imUjAQEi
Запустил с -verbose:gc и что же я вижу:
START
00:00 INFO: Connecting: localhost/127.0.0.1:54555/54777
00:00 INFO: [kryonet] Server opened.
00:00 INFO: [kryonet] Connection 1 connected: /127.0.0.1
00:00 INFO: [kryonet] Connection 1 connected: localhost/127.0.0.1
[GC (Allocation Failure) 24064K->1988K(90624K), 0,0053698 secs]
[GC (Allocation Failure) 26052K->1296K(90624K), 0,0033659 secs]
[GC (Allocation Failure) 25360K->1248K(90624K), 0,0029783 secs]
[GC (Allocation Failure) 25312K->1248K(90624K), 0,0028946 secs]
[GC (Allocation Failure) 25312K->1224K(88064K), 0,0023036 secs]
[GC (Allocation Failure) 24776K->1224K(87552K), 0,0033813 secs]
[GC (Allocation Failure) 24264K->1329K(86016K), 0,0027664 secs]
[GC (Allocation Failure) 23857K->1297K(87040K), 0,0006661 secs]
И так далее
>>251901 - кун
Делаю раннер, только не горизонтальный, а вертикальный. Объект как бы спускается по лестнице, двигается влево-вправо, а фон едет вверх. Инстанцирую два объекта фона, один под другим, когда верхний уезжает из кадра, то кладу его под нижний, и так далее.
Как правильно означивать скорость объекта и фона в таком случае? Чтобы можно было менять скорость объекта и скорость фона, и при этом ни один из этих параметров не зависел бы от текстуры фона.
Потому что рано или поздно объект начнёт смещаться и выйдет за линии лестницы. Надеюсь на помощь от анона ^____^
Добрый человек, по сути вопроса не подскажут, но по геймплею хочу уточнить: не боишься, что на телефоне игрок будет своими пальцами, которыми управляет, сам себе обзор загораживать? Подумай об этом, хорошо? А то игра бесить будет.
У меня в нижней части экрана будет затемнение (как бы имитирующее то, что лестница плохо освещена, и того, что внизу, не видно). Туда можно будет и тыкать без проблем с эргономикой |・ω・)
Почему ты сравниваешь фреймворк с движком и ещё удивляешься?
-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseG1GC -XX:MaxGCPauseMillis=1
тот же код http://pastebin.com/imUjAQEi заставляет GC работать часто, но недолго. Ни одна GC pause не превосходила полторы миллисекунды, а случались они от одно раза в 4 секунды до 3 раз в секунду. По-моему, очень приемлимая цена. Наверное, если не писать под андроид, а писать только под HotSpot, то можно значительно снизить объём возни с пулами и аккуратного байтоёбства. Ну или по крайней мере позволить себе одну-другую мусорящую либу.
>>251901 - кун
Спасибо за разбор.
Ты охуел обсуждать нечего?
Это как раз такая библиотека, которую можно обсуждать, как уе4 нахуй.не потому что она хорошая, а потому что в ней почти нихуя нет и надо каждый раз пилить свой лесопед
Как организовывать архитектуру своего игоря на либгдкс?
Что меня очень бесит, так это всё время создавать новые объекты и передавать в ебучие конструкторы нужные объекты. Или ебашить везде статические объекты, чтобы не ебать себе мозг лишний раз?
И вообще, какие классы под какие нужны лучше выделять?
Есть какие-нибудь книжки по поводу архитектур игорей?
Только я чего-то сомневаюсь, что есть что-то современное, а уж тем более для жабы, всё-таки никто сегодня не будет делать в здравом уме игру на жабе (и уж тем более на крестах с нуля), когда доступно такое-то количество движков, где все эти основы уже запилены за тебя и поэтому банально не надо заморачиваться по поводу лоу левельной архитектуры, а только изучать, как пилить игру на конкретном движке.
Прошел немножко тюториалов. Норм библиотека, не нужно перемножать матрицы поворота, как в соседнем треде. Можно писать на высоком уровне, двигать объекты в координатах сцены. Прямо из коробки работает fps-камера. Как-то работает освещение. Есть пара материалов и базовых шейдеров. Есть привязка к Bullet.
На простенькой сцене тормозов не видел.
При релизе нужно переводить все модели в формат jmonkeyengine. Это делается в предоставленной ИДЕ не стоит этим пренебрегать, даже если уже есть нетбинс
Где-то на уровне threejs по возможностям, может даже и проще по написанию кода.
Акторы и стейджи юзай. Я несколько дней назад решил так переписать свой говнокод и сейчас у меня нереальная мотивация от того как все хорошо выходит. Если интересно могу чуть позже на пастебин залить, там не много.
Поищи в субшоте посты про рогалик, там у него еще на битбаките репозиторий - я во многом на него ориентировался.
Ну, одними актёрами и стейджем не обойдёшься, чтобы что-то адекватное сделать в плане архитектуры...
А разве код рогалика опен сорсный? Он же говорил, что не будет выкладывать.
>разве код рогалика опен сорсный?
Он про вот этот мой рогалик - >>250587
https://bitbucket.org/dksurname/rolik
Но я бы не советовал на мой код ориентироваться. У меня там маловразумительная каша и костыль на костыле. Я таки не программист.
Не знаю, видел ли ты вот этот славный ресурс, на всякий случай держи: http://gafferongames.com/
Если у тебя не пиксельарт - всё нормально масштабируется и без лишних движений.
Если пиксельарт - сам виноват. Я, например, ответ на этот вопрос не нашёл и сделал в классе, который за гуй отвечает метод reset, который тупо все элементы переделывает под новый масштаб. Ну и вызываю его когда надо. Выглядит страшновато но вроде не тормозит даже на слабом железе.
А зачем делать динамическую фигуру игрока источником света? Сто если просто сделать чтобы в координатах игрока был обычный источник света?
У меня так и есть. Каждый игровой тик я устанавливаю источник света в позицию игрока. Если я правильно тебя понял
Я так же делал и норм было. Может у тебя порядок апдейта отрисовки какой-то не такой?
У меня что то такое получается - https://www.youtube.com/watch?v=FjF8l85FUhs , как на правой половине. Я могу это исправить например установив 2048 лучей для PointLight, но тогда среднее время отрисовки кадра
становится 10 мс, что много как по мне. Или я что то делаю не так? Вот ещё видос от того же поляка, показывающий как это у него получается https://www.youtube.com/watch?v=tMlrP2UYXss
2048 ЛУЧЕЙ, СУКА, АХАХАХ
Я думал, такую шизу только на юнити кто-то делает. Всё проще. Здесь нужна математика и генерация меша каждый кадр. Тогда всё будет занимать пару милисекунд. Но это достаточно сложно.
Лол, я 10-15 ставил.
Я понимаю что делается математикой, я и сам бы сделал, прост не хочется тратить неделю времени на свой велосипед.
В общем я погуглил и нашёл альтернативы, буду прикручивать. Вот например https://github.com/mattdesl/lwjgl-basics/wiki/2D-Pixel-Perfect-Shadows . Надеюсь box2dlight будет когда нибудь работать вот так http://www.redblobgames.com/articles/visibility/
Ну масштабирование интерфейса, чтобы было как в л2, сколько бы не изменял размер окна, размер окошек интерфейса оставался прежним. А то сейчас scene 2d масштабирует его, в зависимости от размеров окна.
Тебе нужен ScreenViewport
Я интегрировал gpu shadow, но он мне не понравился, по нему как то мало мануалов и прочего, плюс были мелкие странности. Решил попробовать переделать box2dlight, получилось, теперь лучи отправляются не веером наугад, а только по ближашим вершинам, пока производительность немного лучше, зато тени чётче. Когда доведу до ума может выложу куда.
>IntelliJidea
И всё норм работает? Я качал проект под неё, но у меня не инициализировалась музыка из туториала. На оффоруме посоветовали эклипс, но под ним я не смог даже скомпилить, лол.
Может и у меня всё дело было в градле.
Я хуй знает, в чем у тебя там проблема, но скорее всего, у тебя просто не выставлен путь к ресурсным файлам.
http://stackoverflow.com/questions/28433012/how-do-i-link-assets-from-android-to-desktop-in-libgdx
Вот тут во втором ответе есть скриншот, как выставлять рабочую директорию при запуске.
И да, если у тебя что-то не работает, то ищи проблему у себя в проекте (или в настройках ИДЕ), но 100% не в самой ИДЕ (за исключением ну очень редких случаев).
С ассетами было всё ок, текстуры подгружались, не инициализировались объекты музыки и звуков
dropSound = Gdx.audio.newSound(Gdx.files.internal("drop.wav"));
rainMusic = Gdx.audio.newMusic(Gdx.files.internal("rain.mp3"));
Тему с подобной историей что то не могу снова нагуглить, но речь шла о том, что это баг непосредственно ИДЕ и на эклипс всё ок.
Надеюсь, потому что эклипс мне очень уж не понравился.
Теперь я понимаю, почему никто не делает игорей на жабе - адекватных либ ну вообще нет.
Всё блядь какие-то костыли, всё надо самому с нуля пилить, решать дохуя самых разных проблем. Вот сейчас ебался с этим интерфейсом. Так и не понял, как отключить этот ебучий скейл (при ресайзе окна), из-за которого он сам ломается (как бы интерфейс увеличивается, но на нажатие откликается только когда жму на то старое место, до рескейла).
А ещё надо как-то попытаться заставить scene2d показывать лейблы в самой игре, над игроками, когда приходит сообщение от них... У меня же сейчас типа интерфейс идёт просто поверх игры со своей камерой и всем таким... Ой бляяя...
Создай свой объект и рисуй в screen_height - (y + obj_height)
scene2d гуй действительно сильно неочевидный. Однако, как бы он плох не был, все твои проблемы с ним решаемы. По крайней мере, насколько я их понял.
Насчёт ресайза - убедись, что screen в методе resize вызывает для stage, в котором у тебя гуй, getViewport().update(width, height, true). У меня так сделано и таких как у тебя косяков нет.
Лейблы в самой игре тоже просто делаются. Раз у тебя гуй на отдельном stage "со своей камерой и всем таким", создавать надо не на нём, а на stage с игрой. Тебе ведь нужно привязать эти лейблы к игрокам, а они не на гуевском уровне - всё логично. Ну или посылай из игры гую список координат говорящих персонажей, а в гуе переводи координаты в собственные и обрабатывай (создавай-перемещай лейблы). В общем, есть варианты.
>Но картинка слева лишняя
Я их изначально рисовал с расчётом скорее на какое нибудь всплывающее информационное окошко.
476x796
А это вообще нормально, что пустой проект на LibGDX вообще без юзер-кода весит 38 мегабайт в apk-шке?
Слил вчера установщик, создал проект, убедился что он компилится и запускается как на десктопе (Дебиан), так и на моем Нексусе 5, и забурился в документацию. А сейчас вот интереса ради глянул, сколько занимает аппликуха в памяти андроида, и даже как-то удивился слегка. 38 мегабайт на оверхед, не многовато ли?
Свайпом палец сотрешь через минуту игры, или джойстик, или кликом на точку (с нахождением пути), или кликом с определенной стороны от игрока.
>сколько занимает аппликуха в памяти андроида
Размер апк и то, сколько установленное приложение занимает в памяти - не одно и то же. На ведре 5 и выше приложение "компилируется" при распаковке для более быстрой работы что увеличивает его вес, приложение не сидит в памяти телефона как апк файл. Плюсуй к весу данные и кэш приложения.
а в чем проблема создать свой update loop в новом потоке и если надо просто передавать туда дельту из рендера?
я вот математикой и сделал свой собственный велосипед
немного коряво правда, но всяко лучше чем то что у вас на видео появлялось
и да сделано не на libgdx, на него я только позавчера начал переезжать, а видеорелейтед реализация рейтрейсинга это чистая джава можно сказать
https://drive.google.com/file/d/0BzwCB78J-oVxaGpSRDNLSnZTbW8/view
Нужно залить фон бесконечной повторяющейся текстурой.
Только условие есть два условия:
1) Заливать нужно с определенной точки (что бы фон двигался при движение игрока)
2) Нужно учитывать scale (игрок может приближать, и удалять камеру)
Вопрос как это сделать? Вроде стандартная задача, наверняка кто-то уже делал подобное.
Гуглю пока, но не могу найти нормального решения (видимо потому что нюфаг)
>2) Нужно учитывать scale (игрок может приближать, и удалять камеру)
Это дело камеры, а не самого фона это раз
>Нужно залить фон бесконечной повторяющейся текстурой.
тут поподробнее, те фон это одно изображение натянутое на весь экран которое должно повторятся или как?
> тут поподробнее
Есть Texture (размером 256x256), я есть выставил setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.Repeat).
Нужно замостить ее весь экран (допустим 1920x1080), но там что бы при движение игрока фон был на месте.
Формально там наоборот, игрок в фиксированной точке(0,0), а фон смещается.
P.S.
Как временное решение, я сейчас рисую спрайт огромного (взятого с потолка) размера,
batch.setTransformMatrix(<тут делаю матрицу для нужного позиционирования, относительно игрока);
batch.draw(myBackgroundTexture, 0f, 0f, 0, 0, 10000, 10000);
но хотелось бы это делать через правильное API.
формально при движении игрока будет двигаться ВСЕ и игрок и фон и камера и даже аллах.
Просто камера должна двигаться со скоростью игрока (если она на нем зафиксирована) по этому получается ощущение что двигается только фон.
Короче кури libgdx камеру.
Я блять так и не понял, ты какого эффекта хочешь добиться? Что бы при движении игрока фон (состоящий из тайлов) создавал ощущение неподвижного как тут?
https://drive.google.com/file/d/0BzwCB78J-oVxYmNObU1hemFDVUk/view?usp=sharing
если да, то просто отрендерь все тайлы из которых состоит фон, в одну текстуру, а потом просто эту текстуру рендерь так на пике
а что бы знать почему так, а не иначе опять таки кури камеру, без нее вообще ничего нормального не сделаешь
Мне надо как с домами, что бы они двигались, а персонаж в центре.
Только в место домов у меня бесконечная шахматная доска.
По этому кода так будет или он для неба?
код для неба
>Только в место домов у меня бесконечная шахматная доска
в таком случае отрендерь тайлы в текстуру с шириной равной ширине тайла, а высоте равной высоте экрана и потом просто заполняй экран полученной текстурой по мере необходимости
Gdx если не ошибаюсь в автоматическом режимей такой возможности делать не дает, так что придется самому писать
Так-с. Пилю для пеки 2д хуиту на жабе (вернее, пока только на бумаге проЭкт). Покатит этот ваш либджидиэкс?
Из графония требуются только спрайты, анимация, менюшечки и простое движение с анимацией. Насколько низкий порог вхождения у данного фреймворка просто лень изучать технологию, к которой не факт, что в будущем прикоснусь. Но если понравится, то буду юзать?
Порог вхождения достаточно высок. Я бы сказал вдвое выше, чем у юнити. Так что если ты дебил, бери юнити.
Мне именно для жабы надо. Или велосипеды пилить буду, или какую-нибудь либу возьму.
Если в игре не надо дизайнить уровни, то прокатит. Мне фреймворк нравится, хоть и юзаю его без важных фич, а чисто как удобную обертку вокруг опенджиэла.
>хоть и юзаю его без важных фич, а чисто как удобную обертку вокруг опенджиэла
сейм щит, работа с фреймбуферами и шейдерами одно удовольствие и не нужно lwgjl велосипедов изобретать
У меня (к сожалению) очень много вызовов draw(texture, x, y, width, height)
и перед каждым приходится задавать еще и свою setTransformMatrix для поворотов и сдвигов (они у всех разные).
Может есть у кого идеи хоть куда копать. Не отказываться же от SpriteBatch?
Сренькнул с этого эксперта.
Писал до этого на чистой Java, перейдя на LibGDX охуел с того, сколько я велосипедов наизобретал, теперь приходится в писать в десятки раз меньше при создании каркаса проекта, уже через пару минут приступая непосредственно с геймплею. Разбираться вообще ни в чем не приходится. Кроме Box2D.
Спасибо. Уровни у меня тупо из слоев фона будут.
libGdx это фреймворк позволяющий писать свои собственные движки
юнитю не завезли под линуксом. А я под ним аж с 2007-го года,
на сперму переползаю @
чувствую себя инвалидом @
хоть и есть дохуя софта.
год назад, правда, запилили альфа сборку под линух, но с тех пор не обновляли и под ней почему-то в форме логина не получается логиниться. "ошибка 401, попробуйте блять позже"
Ну посмотри в исходники когда он флашится и делай так, чтобы поменьше этого было. Из очевидного - засунь текстуры в один атлас, потому что он точно флашится когда берет TextureRegion из другой текстуры. А то, что у тебя перед каждым дроу надо менять матрицу это довольно странно, набыдлокодил видимо. Чем тебя не устраивает задавать в методе координаты, размеры и угол?
>Чем тебя не устраивает задавать в методе координаты, размеры и угол?
Поясни как угол задавать?
void draw(TextureRegion region, float x, float y, float originX, float originY, float width, float height, float scaleX, float scaleY, float rotation)
Draws a rectangle with the bottom left corner at x,y and stretching the region to cover the given width and height.
В документацию стоит заглядывать хоть иногда.
но у меня линукс.
Спасибо, что сообщил нам.
Надо ли заморачиваться с хранение разных текстур под разные плотности экранов?
Ведь может быть и 160 px/inch (в китайфонах) и 480 px/inch (в nexus 6p).
Если брать самое большое разрешение, то старые девайся будут тормозить (как минума на закгрузки в память).
В общем есть для этого best-practics?
Та забей, нищеброды должны страдать.
Ну если тебя не смущае куча одозвездочных отзывов с "ТАРМАЗИТ @ НИРАБОТАИТ"" то можно и не напрягаться.
Да забей, бери большие текстуры и не заморачивайся.
Технически, LibGDX - это не "игровой движок"(тм)(R), а библиотека для джавы. Если не чувствуешь различий, уёбувай.
libGdx - не библиотека, а, как анон выше и написал - "фреймворк". lwjgl или opengl, например - библиотеки. А юнити или гамак - конструкторы. И это не просто чьё то там мнение. Так свои продукты называют их создатели.
Да есть.
Там можно смотреть пересечения всяких квадратов (
import com.badlogic.gdx.math.Rectangle) и тд.
Есть функция Intersector.overlaps(Rectangle r1, Rectangle r2) которая смотрит пересечения
Ты наркоман, она каждый месяц обновляется, просто надо было зайти на форум в линуксовскую ветку с релизами, последнее сообщение - последняя версия.
Эту штуку видел. Пересечения это еще не коллижондетектор. Если буду пересекать всё со всем, то ну ты понел.
свой пиши я вот пишу и мне норм
Дрочи ООП дальше, тк ООП лучше всего выглядит как раз в играх. А на твой вопрос могу ответить только так - решение зависит от контекста.
с меня спасибо и нихуя
https://www.youtube.com/watch?v=B9nc-YUr3jA
ога ога
только это всего лишь куча паттернов, а компоненты суть те же объекты, если ООП выделить в отдельное множество, то КОП это его подмножетсво.
Ну и вообще во всех нормальных ООП языках, где множественное наследование невозможно всегда композиция > наследование
А лямбды - это всего лишь объекты, если ООП выделить в отдельное множество, то фп - это его подмножество.
А объекты - это всего лишь куски памяти, если низкоуровневое программирование выделить в отдельное множество, то ООП - это его подмножество.
http://pastebin.com/hdBPH28k
Компилируются нормально, все атрибуты, униформы считаются тоже хорошо (в смысле программа находит их расположение), а вот теперь еще кусочек говна в кашу:
http://pastebin.com/pPr3CS0b
Собственно, что он делает, перебирает итератором объекты в контроллере моего мирка и смотрит, ежели тот непрозрачный, значит надо отрисовать, всего-то ничего. И, вроде как, все нормально сделал, но на выходе получаю просто охуительную доселе невиданную текстуру (взгляните только на пикрелейтед), и, даже цвет не применяет. Что за хуйню он нарендерил?! Сомнений нет, что текстуру я получаю именно ту, потому что при изменении цвета очистки меняется фон текстуры.
Если же есть сомнения по поводу матрицы трансформации - так это первое, на что упал мой взор и я ее проверил, и работает она верно (нормирует координаты в пределах -1 .. 1 по всем осям для объектов)
Бля, посоны, короче, обосрался с подливою я.
Вспомнил я про такое явление в Java, как dispose(), но деструкторов нам не завезли, к сожалению, и я в некотором месте вызвал его для всех своих программ, когда сбрасывал контроллер освещения (ресурсы GL сами себя не освободят), таки дела. Поэтому-то я яву и не люблю, но это совсем другая история.
>Целый блядский тред
>Никто даже не обмолвился про Artemis-odb
https://github.com/junkdog/artemis-odb
https://github.com/junkdog/artemis-odb/wiki
Компонентно ориентированные системы это то, что похоронит ООП в скором будущем, оно уже широко используется для ММО проектов.
А ты до сих пор пихаешь кучу всякой хуиты в render() функцию, переопределяешь типы классов ебанутым образом и пишешь функцию одного и того же для каждой пылинки в отдельности, да Анон?
Бандли с игрой самые мелкие текстурки, а остальные загружай со своего сервака/гугл плея.
>high performance
>java based
обдристался.
что они там измеряют? скорость записи в массив в жаве? ну охуеть теперь
>обдристался
Ну сиди обтекай, хули. Быстрее жавы только С и компания. Вообще, это отдельный вопрос, нахуя в 2д играх производительность. Все самое тяжелое можно (и нужно) перенести на видяху.
>Быстрее жавы только С
а еще с++, rust, objective c и crystal
не забывай что jvm была на крестах написанна, хотя вообще да, уже как долгое время джава считается high performance, по крайней мере для серверных решений
Вообще нахуя в играх вообще не только в 2д нужна производительность языка, у джавы ахуенный кокнурэнси а все тяжелые вычисления и так сидят на видеокарте.
>>305761
Вообще то на либе пишется 3д
https://www.youtube.com/watch?v=QVy5MkIZczo&list=PLqpawGIg6Qj6yGU8DxaRjX8E1NZQHvxdf
Как вариант.
Ну так это все нативно компилируемые языки, без виртуалки же. Такое решение всегда будет быстрее. Хочешь ебашить ебейшую производительность - ну иди пиши на них, дело добровольное. На них тоже можно замечательно написать кусок говна, который будет тормозить.
>>305781
Ну, под 2д обычно подразумеваются казуалки, платформеры и рогалики. Все это не требует, например, мощного ИИ как какой-нибудь 3д шутер или стратегия. Вот для этого стоит брать другой язык.
>>305784
ФПС оставляет желать лучшего. Когда я последний раз гонял полноценное 3д на либе, моя топовая видяха выдавала на куцей сцене с полутора моделями фпс будто это какой-то ААА на ультрах.
Так в этих йобах ИИ и так на скриптах сидит разве нет? (ну там всякие Луы и прочая срань)
Да и какой это блять ии, сраные графы и примитивный рейкаст, такая же ебота как в 2д, только матрицы на один размер больше
хотя я конечно могу ошибаться
Ну смотря в каких и где. Там кроме собственно ИИ еще может сидеть какой-нибудь поиск пути. Я вот с трудом представляю как написать что-то типа того же суприм командера или тотал вар или опенворлд типа прототайпа с таким ебойвешим количеством юнитов вокруг которые еще и вполне резво бегают.
ну в том же суприме это сделанно через жопу
Там когда группе отдаешь приказ, то путь целиком расчитывается только один раз в начале и только для одного ведущего юнита, остальные же юниты просчитывают дорогу от своего положения на момент отдания приказа, до стартовой позиции ведущего юнита + смещение от этой позици для постройки строя. Это довольно дешево в плане производительности.
Разве все так просто? Как же тогда широкий строй в проходы протискивается? У них там куча мелких маневров происходит.
ну а ты вниметельней посмотри во что этот широкий строй превращается в узком проходе, все крайние просто смещаются в центер в котором образуется каша и вместо одного юнита на квадратную еденицу площади мы имеем несколько (десятков), большинство маневров происходит как правило во время построения в конце или в начале пути, те просчитывается только один раз.
Ну вот это смещение и кашу тоже нужно обсчитать.
Можно запосчу небольшое объявление? Если у кого-то вдруг есть желание посотрудничать, пишите мне на фейкомыльце:
В кратце: нужно написать простенькую игру под андроид (есть некоторая идея, реально не сложная). С использованием box2d (ну может и без него конечно, но это фиг знает - надо вам самим посмотреть и решить каким способом захотите делать).
Главное, это не тяжеловесный Unity. Ну, вы же сами понимаете, Андройд-2D и Юнити... :) Графика от вас не потребуется, чисто код. Вы можете написать игру, используя упрощенные макеты: круги-кубы, нарисованные в пэйнте, а дальше это мои проблемы...
Если вдруг кого-то заинтересовало, пишите на е-мэйл. Сотрудничество, конечно же, за деньги. Почитаете задание, договоримся о цене.
Подскажи, что что у тебя за DI-либа? Пробовал guice, не понравилось (рефлексии в runtime), альтернатив не знаю.
Нахуярь сервис-локатор, как наши отцы когда-то хуярили.
Желаю тебе гореть в аду, уёбок
>И всё норм работает?
Я вообще не рассматриваю других IDE, кроме Jetbrains.
Да и чего вы прицепились к IDE? Я могу хоть на VIMе с javac'ом разрабатывать.
>не надо устанавливать
1. сначала не надо устанавливать ВМ 8
2. не надо устанавливать НетБобы или Элипс
3. не надо устанавливать какую-то пердь для экспорта в андрюху
4. потом не надо устанавливать на эту хуйню какой-то там апдейт вручную
5. не надо устанавливать Грабли 1.9-rc-1 через короые вся эта мечта пердолика увязана
При всём при этом никаких доков кроме 2х книг на амазоне по этому говну нет.
Конечно можно скачать какой-нибудь Godot и начать хакать свои корованы уже через 3 секунды, но это же не наш метод.
В годоте ты только анус себе хакнуть сможешь. Альтернатив юнити нет и не будет в обозримом будущем.
>1. сначала не надо устанавливать ВМ 8
7, на дроиде еще нет 8.
>2. не надо устанавливать НетБобы или Элипс
> 3. не надо устанавливать какую-то пердь для экспорта в андрюху
Действительно не надо, есть андроид студия где все из коробки.
>4. потом не надо устанавливать на эту хуйню какой-то там апдейт вручную
>5. не надо устанавливать Грабли 1.9-rc-1 через короые вся эта мечта пердолика увязана
Согласен, не надо. Надо потратить только 5 минут на конфигурацию виртуалки дроида и пол-часа максимум на закачку, посидеть подождать.
>можно скачать какой-нибудь Godot
Дроид сдк все равно надо наворачивать. По итогу - вся разница в одном пункте - виртуалке.
>>309802
>Альтернатив юнити нет
Только для альтернативно-одаренных.
>>309770
Аноны, подскажите человеческую библиотеку
Нужно качать жсон по хттп
Соответственно хочу скачать в одну строчку и спарсить в одну строчку.
Меня удручает, что за 10 лет существования платформы всё ещё приходится это писать почти с нуля.
Apache commons? org.json?
А качать без заморочек чем? И чтобы прокси поддерживалось.
Зато Monogame чуваки какие-то поддерживают, да и список какой-никакой есть выпущенных игр (Transistor, Bastion, ...).
Jersey, CXF смотрел? Jetty? Не очень понятно, что именно тебе надо. И да, все это очень легко можно написать самому. Разве что парсер прихватить откуда-то.
Retrofit
https://square.github.io/retrofit/
Мастхэв, идеально в комбинации с RxJava.
Весь Android Dev по нему угорает.
Скорее всего 0.
Юнити называется конструктором для маркетинга. С тнхнической точки зрения это чистокровнейший движок
С технической точки зрения либгдх это набор библиотек и апи для работы с ними, что есть суть фреймворка.
Я уже. Впрочем 4 треда прироста не дали, нада про ассеты думать.
Зачем тебе больше тредов? Просадки на загрузке обычно упираются в жесткий, а не проц.
Я думал если я увеличу количество тредов я смогу быстрей загрузить ассеты. При обычном сценарии все гурзится последовательно и я доволен, но если человек зашел "посредине процесса", то надо показывать с середины, а для этого нужна часть ассетов, но получается тормоз, так как нет приоритетов.
Пустое приложение занимает на андроид около 17 мб. Да, эти 100 мб это резерв.
Запускаю через Idea и gradle-таск desktop run (можно в менюшке справа, можно через консоль, главное проект импортируй, когда попросит).
"C:\Program Files (x86)\Java\jdk1.8.0_25\bin\java" -Didea.launcher.port=7534 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.3.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\charsets.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\deploy.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\access-bridge-32.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\cldrdata.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\dnsns.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\jaccess.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\jfxrt.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\localedata.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\nashorn.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\sunec.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\sunjce_provider.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\sunmscapi.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\sunpkcs11.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\zipfs.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\javaws.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\jce.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\jfr.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\jfxswt.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\jsse.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\management-agent.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\plugin.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\resources.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\rt.jar;C:\Users\Master\Downloads\libgdx-1.6.1\test35636\desktop\build\classes\main;C:\Users\Master\Downloads\libgdx-1.6.1\test35636\core\build\classes\main;C:\Users\Master\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx\1.6.1\bb5fe9832bcfe4bbc1de6bd357085b8a2a845d9c\gdx-1.6.1.jar;C:\Users\Master\Downloads\libgdx-1.6.1\test35636\core\build\libs\core-1.0.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx-backend-lwjgl\1.6.1\e3208559223c991f1db7220d5ddf3e5a12e5528f\gdx-backend-lwjgl-1.6.1.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx-platform\1.6.1\861f02e3f7f85423be6f9727ab12b03b40d39477\gdx-platform-1.6.1-natives-desktop.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.2\a9d80fe5935c7a9149f6584d9777cfd471f65489\lwjgl-2.9.2.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.2\4b9e37300a87799856e0bd15ed81663cdb6b0947\lwjgl_util-2.9.2.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\com.badlogicgames.jlayer\jlayer\1.0.1-gdx\7cca83cec5c1b2f011362f4d85aabd71a73b049d\jlayer-1.0.1-gdx.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\org.jcraft\jorbis\0.0.17\8872d22b293e8f5d7d56ff92be966e6dc28ebdc6\jorbis-0.0.17.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.2\510c7d317f5e9e700b9cfaac5fd38bdebf0702e0\lwjgl-platform-2.9.2-natives-windows.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.2\d276cdf61fe2b516c7b7f4aa1b8dea91dbdc8d56\lwjgl-platform-2.9.2-natives-linux.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.2\d55b46b40b40249d627a83a7f7f22649709d70c3\lwjgl-platform-2.9.2-natives-osx.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.3.2\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain com.mygdx.game.desktop.DesktopLauncher
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: badlogic.jpg
at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:140)
at com.badlogic.gdx.graphics.TextureData$Factory.loadFromFile(TextureData.java:98)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:100)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:92)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:88)
at com.mygdx.game.MyGdxGame.create(MyGdxGame.java:16)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:143)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: File not found: badlogic.jpg (Internal)
at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:136)
at com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:222)
at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:137)
... 7 more
На 5 секунд появился черный экран, достижение...
"C:\Program Files (x86)\Java\jdk1.8.0_25\bin\java" -Didea.launcher.port=7534 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.3.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\charsets.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\deploy.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\access-bridge-32.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\cldrdata.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\dnsns.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\jaccess.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\jfxrt.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\localedata.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\nashorn.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\sunec.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\sunjce_provider.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\sunmscapi.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\sunpkcs11.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\zipfs.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\javaws.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\jce.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\jfr.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\jfxswt.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\jsse.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\management-agent.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\plugin.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\resources.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\rt.jar;C:\Users\Master\Downloads\libgdx-1.6.1\test35636\desktop\build\classes\main;C:\Users\Master\Downloads\libgdx-1.6.1\test35636\core\build\classes\main;C:\Users\Master\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx\1.6.1\bb5fe9832bcfe4bbc1de6bd357085b8a2a845d9c\gdx-1.6.1.jar;C:\Users\Master\Downloads\libgdx-1.6.1\test35636\core\build\libs\core-1.0.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx-backend-lwjgl\1.6.1\e3208559223c991f1db7220d5ddf3e5a12e5528f\gdx-backend-lwjgl-1.6.1.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx-platform\1.6.1\861f02e3f7f85423be6f9727ab12b03b40d39477\gdx-platform-1.6.1-natives-desktop.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.2\a9d80fe5935c7a9149f6584d9777cfd471f65489\lwjgl-2.9.2.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.2\4b9e37300a87799856e0bd15ed81663cdb6b0947\lwjgl_util-2.9.2.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\com.badlogicgames.jlayer\jlayer\1.0.1-gdx\7cca83cec5c1b2f011362f4d85aabd71a73b049d\jlayer-1.0.1-gdx.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\org.jcraft\jorbis\0.0.17\8872d22b293e8f5d7d56ff92be966e6dc28ebdc6\jorbis-0.0.17.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.2\510c7d317f5e9e700b9cfaac5fd38bdebf0702e0\lwjgl-platform-2.9.2-natives-windows.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.2\d276cdf61fe2b516c7b7f4aa1b8dea91dbdc8d56\lwjgl-platform-2.9.2-natives-linux.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.2\d55b46b40b40249d627a83a7f7f22649709d70c3\lwjgl-platform-2.9.2-natives-osx.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar;C:\Users\Master\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.3.2\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain com.mygdx.game.desktop.DesktopLauncher
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: badlogic.jpg
at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:140)
at com.badlogic.gdx.graphics.TextureData$Factory.loadFromFile(TextureData.java:98)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:100)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:92)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:88)
at com.mygdx.game.MyGdxGame.create(MyGdxGame.java:16)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:143)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: File not found: badlogic.jpg (Internal)
at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:136)
at com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:222)
at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:137)
... 7 more
На 5 секунд появился черный экран, достижение...
У тебя файл с картинкой не загружается почему то (он там где то в андроид ассетах должен быть). Может, ты его перенёс или ещё как попортил. Попробуй, чтоб наверняка убедиться, загрузить чей-нибудь однозначно рабочий проект. Я как то в прошлом году делал рогалик - https://bitbucket.org/dksurname/rolik . Можешь его. Или что-нибудь с их сайта. Или создай новый (попробуй с андроидом и десктопом, если до этого делал только десктоп).
нет main класса пишет, какие у тебя версии ПО установлены? Ява, AS и Idea, может я не установил что то?
"C:\Program Files (x86)\Java\jdk1.8.0_25\bin\java" -Didea.launcher.port=7532 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.3.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\charsets.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\deploy.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\access-bridge-32.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\cldrdata.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\dnsns.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\jaccess.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\jfxrt.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\localedata.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\nashorn.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\sunec.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\sunjce_provider.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\sunmscapi.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\sunpkcs11.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\zipfs.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\javaws.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\jce.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\jfr.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\jfxswt.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\jsse.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\management-agent.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\plugin.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\resources.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\rt.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.3.2\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain ""
Exception in thread "main" java.lang.ClassNotFoundException:
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:260)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:123)
Process finished with exit code 1
Вот что выводит
"C:\Program Files (x86)\Java\jdk1.8.0_25\bin\java" -Didea.launcher.port=7532 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.3.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\charsets.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\deploy.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\access-bridge-32.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\cldrdata.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\dnsns.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\jaccess.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\jfxrt.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\localedata.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\nashorn.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\sunec.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\sunjce_provider.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\sunmscapi.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\sunpkcs11.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\ext\zipfs.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\javaws.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\jce.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\jfr.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\jfxswt.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\jsse.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\management-agent.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\plugin.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\resources.jar;C:\Program Files (x86)\Java\jdk1.8.0_25\jre\lib\rt.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2016.3.2\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain ""
Exception in thread "main" java.lang.ClassNotFoundException:
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:260)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:123)
Process finished with exit code 1
Вот что выводит
>>318367
Пардон, там не хватает в репо файлов грэдловских. Попробуй этот клонировать: jnseANUS
На первом пикрелейтеде видно с какими настройками я создаю новый проект (там ещё есть кнопка Advanced, в которой можно сразу поставить галку для idea проекта). Запускать также.
Если всё равно не получается, посмотри ещё по предыдущей ссылке ( из >>318357 ) в Downloads - есть собранный джарник. Попробуй и его - если не запустится - дело с твоей жабой. Но это сильно вряд ли.
>какие у тебя версии ПО установлены?
Только что запускал на идее 2016.2, gdx-setup у меня какой то прошлогодний, грэдл там встроенный (wrapper).
Завтра буду пробовать, бля сколько времени убил на это говно всеж
Есть более удобный метод?
Можно менять пиксели шейдером при отрисовке.
А ещё есть ебучий Skin, Как правильно его задавать без 100500 строчек ебли?
>Scene2d.ui
У него там емнип какие то проблемы с рисованием через левый-верхний угол, вроде надо через левый-нижний (мне, например, так жутко неудобно). И вообще в нём куча каких то неявных сложностей. Не очень понятно, что тебе надо. Ты хочешь разместить кнопку у левого края посередине?
Я хочу разместить кнопку с текстом в углу, самом углу. Но когда я задаю координаты рисования (0, 0) этим (0, 0) соответствует не левый верхний угол (0, h), и не нижний угол(0, 0), а точка находящиеся в (0, h/2). Где высота генерируются из размера и высоты шрифта. То есть нужно нарисовать кнопку, посчитать её высоту, поделить на два, и вычистить или добавить в Y координате при рисование.
Сделай таблицу, а уже в неё кидай кнопку в одну из строк, а другую растяни на оставшееся место.
Какую IDE юзаешь?
Ништяково, но лучше не txt, а что-то более читабельное. JSON или XML.
Кокос, пайтоноподелия. Love2d и прочая луа.
под C++ неблохо зайдет oxygine, например
BitmapFont подгружается из пикчи-текстуры размером в степень двойки и .fnt файла, который по факту текстовик с координатами каждого символа в твоей пикче и прочими параметрами шрифта. Открой их местный редактор битмап шрифтов hiero, запили в нём тестовый шрифт, открой результат и делай также. Да, придётся придрачиваться. У меня рили есть та же проблема, и кроме как создавать свою систему шрифтов или ебаться в телевизор, записывая координаты в текстовик, вариантов не вижу.
Вот я тоже сошелся на том, что нужно сделать свой велосипед.
еще в мохнатых 2000-х на геймдев.ру обсуждался рендер ттф в текстуру (автогенерация этого), нахуй вы в редакторах дрочитесь яебу
>Котики, кто на чём пишет под libgdx? Какие преимущества выбранного вами ЯП?
А есть что-то кроме java? Ну можно на kotlin, преимущества - няшность компилируемая в шестую джаву.
meh
Ничего годного на нем не сделано, можешь не искать. Либгдх это лишь переходное звено между ньюфажными велосипедами и юнити.
двачую, целый год проебал на написание игры, которая на юньке за неделю пишется
https://libgdx.badlogicgames.com/gallery.html - это список на официальном сайте. Там 95% указано андройд шлак который зарегистрировал себя в этом каталоге так как нужна реклама.
https://www.quora.com/What-are-the-most-popular-games-written-in-libGDX - а здесь вроде как список самых кассовых игр
Экспортирую в jar - 2 фпс.
Пробую сбиндить через градле - jar файлик не запускается совсем.
Поясни что за говно?
я тупой...
Насколько гибкую архитектуру предлагает Scene2D? Имеет ли смысл въезжать?
Возможно ли без боли юзать UI из Scene2D используя свою архитектуру?
>Возможно ли без боли юзать UI
Все, где есть слово "scene" невозможно юзать без боли, потому что идея дерева трансформаций для UI (и для 3D тоже) - изначально порочна.
Может версия жавамашины как-то влияет?
libgdx 1.6 просит, кажется, а у меня 1.8 стоит, критично?
нет
Не запускается совсем.
Двойным кликом запускаю. Через консольку - результат тот же.
Может запускаю не тот файл? ...\projectFolder\desktop\build\libs\desktop-1.0.jar
Не-не, файл-то тот. Хм... А через консоль запускаешь через java -jar desktop-1.0.jar? Оно, просто, при запуске через консоль (не через ту, которая сразу закрывается, если, например, батником её запустить, а через cmd виндовое или терминалы никсовые, которые вывод сохраняют), если какие проблемы (типа некомпилящегося шейдера или отсутствия ассетов) обычно высирает стактрейс с проблемой. Не, нет такого?
Окей, а как ты его билдишь градлом? Через шаг dist?
Уже понятнее. Надо не test_archi-desktop > build > assemble, надо test_archi-desktop > other > dist делать. У тебя просто jar-файл собрался только с твоим кодом и ассетами, без самого LibGDX, нативных библиотек и без манифеста для запуска в том числе. Попробуй.
Походу, эклипс не видит кастомных шагов. Странно.
Ладно, попробуй тогда зайти через консоль в папку с проектом и выполнить gradlew.bat desktop:dist.
Да пожалуйста, играйся, анон. :)
А про IDEA, то там, да, есть Ultimate, которая стоит какое-то там большое количество денег, и есть Community для тех у кого этих самых денег нет и для тех, кому нахрен не впёрлись спринги, хибернейты, жэ-е-е и прочий ява-энтерпрайз мусор. Я для работы с LibGDX юзаю Community, её возможностей хватает за глаза. Скачай, потыкайся: https://www.jetbrains.com/idea/download/download-thanks.html.
Как реализуешь сервер? Пробовал ради скила делать онлайн дрочильню на nio, но понял что мультипоточность это слишком хардово.
На чистой жабе через сокеты. Работает иногда криво, но в целом терпимо.
До этого пробовал писать серверную часть на PHP, был полный пиздец, и поэтому было решено пересесть на сокеты
Хз, у меня свои уютные и удобные костыли
Это действительно так. Но твой пост я понял с третьей попытки из-за отсутствия одной(!!!) запятой
По факту у ГДХ только бешеная скорость рендеринга и заранее написанные велосипеды. Больше ничего.
Тут
https://github.com/libgdx/libgdx/wiki/Threading
сказано, что
>You should never perform multi-threaded operations on anything that is graphics or audio related, e.g. use scene2D components from multiple threads.
Я использую Scene2D и двухмерную матрицу Actor'ов, по которой прохожу периодически в отдельном thread'e, и там же периодически эти Actor'ы создаются (но добавляются в сцену в thread'е рендеринга) и у них в поля записываются, например, ParticleEffect.
И ни на андроиде, ни на компе никаких проблем и багов не вижу.
Безопасно ли создавать в отдельном потоке такие вещи? И делать с ними, например, start() у ParticleEffect? Из документации нихуя не понятно, в интернетах нарыть не могу, а на практике проблем не имею.
Если коротко вся проблема в OpenGL, который работает особым дивным образом, и созданный в одном потоке контекст OpenGL может быть использован, только в этом же потоке. Это касается всего графического кода от нативных функций до функций фреймворка. Кроме пары функций которые на самом деле ничего с контекстом gl ничего не делают, но лежат в той же куче
Смотри по коду, если всё сводиться в вызову gl методов, то нельзя. Твоё приложение просто упадёт из-за ошибки openGL библиотеки, или даже не упадёт в 95 случаях из 100, а в 5 будет падать и зависеть это будет от фазы луны, а тебе в жопу геморой. Если эта функция просто проводит вычисления внутри объекта или меняет состояние флага, а отрисовывать идёт в другом месте то использовать можно
Работал ли тут кто-то с up-down тайловыми картами? Как вы выстраивайте систему координат? Делаете ли вы локальную систему координат для карты, перемещая игрока в ней, или же просто перемещаете карту относительно статичного игрока? Пытаюсь написать Miami-like шутер, параллельно изучая фреймворк, и меня резко озадачила проблема отрисовки и взаимодействия объектов с игроком.
> или же просто перемещаете карту относительно статичного игрока
Зачем? Все статичные вещи должны быть статичными, все что должно двигаться - двигаться. Используй OrthographicCamera и просто перемещай ее за игроком.
треднечитал
Есть тут аутисты которые libGDX вместе со спрингом юзают? Как ощущения? Мобильные девайсы в таком случае будут в пролете, верно?
Допустим, у меня бесконечно длинный уровень на выживание для марио.
Ну или летящий ебаный самолетик, навстречу которому летят стреляющие хуйни.
это тебе тогда надо что-то типа майнкрафтовских chunk'ов делать:
1. загружаешь первый кусок уровня и рисуешь его
2. когда камера подбирается к (пусть это будет скроллер слева-направа) правому концу уровня -- подгружаешь следующий кусок и временно рисуешь оба куска
3. когда первый кусок уровня уходит из зоны видимости камеры -- выгружаешь его нахер из памяти
в случае с генерацией -- куски уровня генеришь либо где-то в фоне, пока уже готовый участок пролетаешь, либо когда выгружаешь очередной чанк из памяти, экономя и реюзая высвобожденные ресурсы, но тут уже всё от типа генерации зависит
А разве бох2дшный World поддерживает расширение себя?
А как насчет сделать статичным героя и двигать игровые объекты (карту) попутно их генеря слегка за пределами видимой области и удаляя в пул по мере того как они уже нинужны?
> А разве бох2дшный World поддерживает расширение себя?
при генерации просто спавнишь объекты-коллайдеры в нужных местах и дестроишь ненужные старые
> статичным героя и двигать игровые объекты
это тяжёлая наркомания, так делать не надо
и уж тем более так не нужно делать с box2d
>при генерации просто спавнишь объекты-коллайдеры в нужных местах и дестроишь ненужные старые
Это да, но нормально ли, что координата персонажа все время растет (по иксу, например)? Она не выйдет за пределы бох2д мира?
Нагуглил тут, что по идее бокс2д мир не ограничен, но будет падать точность.
А еще есть метод ShiftOrigin, но его нет в либгдхном враппере.
у тебя сейчас начинается over-engineering
давай начнём с того, а зачем тебе вообще box2d? для простого просчёта коллизий проще сделать AABB, особенно для скроллера (это ещё с платформером можно подумать, но даже и в нём лучше и надёжнее свой контроллер персонажа нафигачить). box2d для такого -- адовое извращение
во-вторых, в box2d мир ничем не ограничен, внутри бокса (не читал исходников, догадка) или 64-битные даблы, либо вообще большие числа, и тогда даже теоретический лимитов нет (там уже начинается вопрос с производительностью, но в С++ с этим попроще)
в-третьих, у меня есть очень большие сомнения по поводу того, что кто-то когда-то улетит ТАК далеко, что проломает мир box2d насквозь. это тогда проблема не с физикой, а с геймплеем, что игрок смог добраться до далёких-далёких галактик
>давай начнём с того, а зачем тебе вообще box2d? для простого просчёта коллизий проще сделать AABB, особенно для скроллера (это ещё с платформером можно подумать, но даже и в нём лучше и надёжнее свой контроллер персонажа нафигачить). box2d для такого -- адовое извращение
Гравитация, трение, упругость.
>>406497
>Гравитация, трение, упругость.
Я не он, но добавлю свои пять копеек. Я в свое время баловался в написание своего простого физ-движка - логикак как раз как у теба - бокс2д это слишком тяжело и все такое, а я как раз физик по недообразованию, так что делов то нахуярить пару простых формул из кинематики. К сожалению оказалось все не так просто, особенно когда дело косается коллизий, ну тоесть если у тебя квадратный мир и 2 степени свободы передвижения то все и правда просто, но как только в дело входят коллизии под углом, объекты рандомной формы и тд то внезапно все валится по пизде - то с точностью проеб изза ошибок округления, то алгоритм адово тормозит при большом количестве объектов потому что наивный алгоритм со сложность O(n^2) минимум уже не вариант, ну и пошло поехало.
И тут оказывается что подключить бокс2д это дело 2 минут, с этим даже школьник справится, а сам api бокса спроектирован как минимум не хуже своего собственного. Так что не заморачивайся и юзай бокс спокойно.
не, ну если в 2017ом для игры нужна физика, кинематика и прочее скольжение, то писать свой физдвижок сейчас, когда есть box2d с библиотеками даже под жабаскрипт -- это реально зашквар или просто "по фану"
здесь вопрос в том, что нахера нужен физический движок в марио или скроллере в космосе, где максимум что нужно -- это просчёт пересечений двух прямоугольников
я бы на твоём месте задумался, зачем тебе это посмотрел в сторону альтернатив типа Guice или Dagger. спринг -- слишком большая ебала, чтоб её тащить в игру
добра тебе
хотя плюсы все такие есть
Я например благодаря тому что решил писать свой движок (хоть в последствии его и дропнул) узнал что есть целая область в информатике называемая вычислительной геометрией и внезапно это оказалось ебать как интересно.
Я он и тоже с этим столкнулся.
Писал арканоид и считал углы сам. При этом был удивлен даже с тем, что нельзя взять и уравнением прямой все порешать - на нахуй тебе вырожденные случаи типа вертикальных или горизонтальных траекторий, где уравнения не работают и тебе нужно городить какие-то вилки. Дальше больше.
Это только кажется, что вот так вот просто можно взять и забахать физическую симуляцию или ее подобие. Оно-то можно, но в разы быстрее подключить движок, и в нем искаропки будет не только то, что тебе нужно, но и то, что тебе понадобится потом, хотя ты об этом пока не знаешь, и заебешься в своей симуляции это допиливать.
Смотрите на него, бедняга думает, что в космосе нет гравитации, трения и упругости.
> /gd/
> скроллер в космосе
> бедняга думает, что в космосе нет гравитации, трения и упругости
> /gd/
давайте поможем анону найти грань между играми и реальностью
>обосратыш все пытается доказать, что не обосрался
Да, друг, нужен скроллер в космосе с гравитацией, упругими в различной степени соударениями и трением.
Где твой бох теперь?
Ты бы сам хоть одну игру попробовал написать - понял бы, что вышеперечисленные штуки нужны намного чаще, чем тебе представляется.
Что зачем? Я спрашиваю про преимущества либы, можешь ответить - отвечай, не можешь - иди нахуй.
Я тебе написал, что пайтон - детская хуйня.
Вероятно ты не совсем понял, что я имею в виду, потому спросил про еще.
А я тебе намекнул, что названной мною причины уже достаточно чтобы не прикасаться к этой хуйне.
Так понятнее?
Лул, пидорашка повыебывалась, покушала говна и запостила картиночку.
Все пытаюсь подружить Scene2d и мнoгопoтoчность.
Все пытаюсь подружить Scene2d и мнoгопoтoчность.
Я правильно же понимаю, что если у класса два методы объявлены как sуnchrоnized - они не могут выполняться одновременно в разных потоках?
Если так - то методы addActor() и removeActor() можно переопределить, добавив sуnchrоnized - и это будет гарантировать, что список актеров в группе не pаспидoрасит, и итерация через него не выдаст ебaный null в самый интересный и неподходящий момент?
Только представьте - Pool может содержать один и тот же объект несколько раз.
Не понимаю, в чем была причина хуярить Array для свободных объектов вместо HashSet. Просто охуенный простор для багов, которые хер отловишь. Не стоит он крохотного прироста в скорости.
Два раза освобождаешь такой объект (по невнимательности, пиздоглазию или так и надо) - и пул рано или поздно вернет элемент, который уже есть, отрисовывается, работает и не освобожден.
Ты хоть понимаешь что освобождение в пуле это не освобождение памяти как в Си? Ты пул используешь для того что бы КРАСИВО зарезервировать память для нескольких объектов и многократно их использовать что бы создать впечатление что объектов дохуя. И сделано это все как раз для того что бы НЕ освобождать память и НЕ заставлять GC сходить с ума.
Пул должен многократно возвращать элементы которые уже есть, потому что пул это структура данных предназначения для динамического использования объектов, а не для их постоянного хранения.
Вечер копетанов в хате?
Пул не должен возвращать один и тот же объект два раза, если объект не был освобожден.
Если я получил через пул кота и выложил его на экран, и когда я хочу нарисовать второго кота, который ебет первого - я не должен получить из пула этого ебаного первого кота. Потому что он еще на экране и освобожден.
Это один объект, нахуя в пуле больше одной ссылке на него?
Точнее, если объект был освобожден два раза - не должно быть более одной ссылки.
Вот если где-то каким-то образом кот освободится два раза - пул потом выдаст две ссылки на этого кота.
Это вот в своем говне, которое в проперженных труханах для себя пишешь - можно не заморачиваться отлавливать возможные РАСПИДОРАСИЛО от входных операций, но не во фреймворках, которые для общего пользования.
Можно. Возможно сложнее будет, потому что это не движок, а низкоуровневая обертка над OpenGl.
НО - удобной системы позиционирования элементов на экране нет.
Таблицы тут - это типичная жабаублюдочная хуетень без возможности оперировать столбцами и вставлять ячейки, не пидорася всю таблицу.
Прям эталон необучаемости жабадаунов, которые продолжают хуярить везде свое Swing-говое говно везде, куда дотянуться. В рот их ебал после человеческих графических фреймворков.
Вики читал уже?
https://github.com/libgdx/libgdx/wiki/Scene2d
Пример во Viewport как раз описывает, как встраивается Stage в Screen (хотя там экран и не упомянут)
Вообще, эта вики (и stackoverflow)- единственный хоть какой-то источник примеров и документации. Документации у libgdx нет (та мешанина методов без пояснения к параметрам - не в счет, она нужна только для поиска реализации в сорцах), примеров тоже 1-2 и обчелся. Тем более, которые уходят за грани "херня на 100 строк про падающие капли".
Я, например, долго не мог понять про скины. Как правильно заполнить json, и добавить к нему freetype шрифт.
В вики куча вещей таких, которые и если и упоминаются - никак не поясняются. А если и поясняются - то так, что можно было и не пояснять.
Есть годный небольшой проект для ньюфагов от автора Mastering LibGDX Game Development. Книга по сути поэтапное пояснения того что происходит в проекте + подводные камни. Можно не читать ее, а вот ознакомится с проектом, чтобы понимать как склеивать костыли вместе, рекомендуется.
https://github.com/patrickhoey/BludBourne
>>409153
>>409163
Это не совсем то, о чем я спрашиваю. Я хочу понять саму структуру. Ну вот, я условно набросал, что именно я хочу понять (и я не знаю есть ли в либгдх сцены, стейджи и тд). Нечто подобное мне и нужно, чтобы въехать в правильную структуру, поскольку начальный проект предлагает хуярить апдейты напрямую в класс который extends ApplicationAdapter прямо в render (), и я ставлю жопу, что это неправильный подход.
Начальный проект без использования Scene2d.
Который есть приятный (или не очень) сахарок, призванный избавить тебя от кучи низкоуровневой работы.
Прочти вики дальше начального проекта, чтоле.
Грубо говоря, все что ты можешь создать дальше, все равно будет хуярить апдейты через render.
Я прочел пример с каплями. И даже там уже есть screen. А еще я вижу в вики scene и viewport! Как это все объядиняется??? Вот что меня интересует.
> Я хочу понять саму структуру
Посети ссылку выше, там и увидишь правильную структуру.
> сцены, стейджи
То что ты понимаешь под этим если я тебя правильно понял в либгдх называется screen. Scene2d это акторы реализующие гуй, а stage - граф, хранящий эти акторы и рисующий их. Чтобы он рисовал их в нужных измерениях нужен viewport.
Вьюпорт нужон только для камер, чтобы задавать им пропорции.
Короче вся эта еботня со сцен2д и стейдж по сути нужна чтобы удобно передавать события гуя. Некоторые используют стейдж чтобы организовывать события никак не связанные с гуем, типа как иерархия игровых объектов с родителями и предками, но я такой подход нигде кроме васянских туториалов не видел.
>городить костыль с хардкодным размером экрана
Спасибо, но нет. У меня на телефоне неизвестен размер экрана, как я по-твоему должен записывать эту строку с 800х480?
Что мешает заменить это на переменные полученные запросом размера экрана? А вообще зайди на вики да выбери себе способ скейла по душе, там примеры на все случаи жизни.
Вот тебе даже дублированная ссылка
https://github.com/libgdx/libgdx/wiki/Scene2d
Слишком сложно.
Вроде бы немного разобрался с вьюпортами с помощью этого туториала http://www.gamefromscratch.com/post/2014/12/09/LibGDX-Tutorial-Part-17-Viewports.aspx
Но! Допустим у меня такой вьюпорт: viewport = new StretchViewport(1024,576,camera)
Он растягивает мою бекграунд картинку (1024,576) по размерам экрана. Как мне теперь разместить картинку, которая не должна растягиваться и должна иметь четкое соотношение сторон 256х256?
Это просто какой-то адовый пиздец, танцы с бубном и расстановка костылей. Вместо создания игры.
Разберись в том, какие вьюпорты бывают, и выбери нужный, не кипяти мозг себе и мне.
Я уже разобрался, чтобы растянуть мой бекграунд мне нужен StretchViewport. Как мне поставить другую пикчу с постоянным соотношением теперь? Или в этом треде ньюфагам не помогают, а отправляют гуглить вики и наблюдают со стороны, как он 4 часа к ряду пытается разобраться с этими костылями? И все это вместо прямой подсказки, как нужно сделать в его случае.
1. Оставь тот вьюпорт, который тебе нужен для верхнего слоя, задний фон растягивай под размеры окна.
2. Сделай два вьюпорта.
3. Дождись кого-то (себя), кто даст тебе нормальное решение.
Я в конец запутался, так что я жду нормального решения моей проблемы. Мне нужно:
1. Чтобы на экране при любом разрешении не было незаполненых мест, и лишний бэкграунд можно отрезать отрезать.
2. Чтобы соотношение сторон всех спрайтов соблюдалось.
3. Чтобы бэкграунд всегда был статическим бэкграундом, но вот перед ним должна быть квадратная картинка, которую можно зумировать (пример на вебм).
4. Меня сейчас интересует только работа с камерами и вьюпортами, остальное мне понятно.
Из того, что я понял (поправьте если неправ): для удовлетворения первого и второго пункта мне вроде бы нужно сделать FillViewport вьюпорт, который заполнит весь экран, отрежет лишнее и будет соблюать соотношение сторон.
И я без малейшего понятия по третьему пункту, как оставить размер бэкграунда нетронутым, но при этом зумировать другой спрайт на нём? Как это делается? В моем случае происходит какой-то ёбаный ад - верхний спрайт при запуске не находится в позиции (100,100) как должен, и в придачу еще и СДВИГАЕТСЯ при изменении размеров окна с начальной позиции, хотя никакого движения я ему не прописывал.
Код игры https://pastebin.com/ccF8qi32 и обе картинки тут http://dropmefiles.com/i6GSG
Прошу адекватной помощи.
Всего-лишь пример, взял первые картинки из гугла.
Только поменяй размеры в коде под соответствующие, я уменьшил картинки.
Так у тебя пункты противоречат друг другу, то должна растягиваться то не должна. Если она вообще не должна растягиваться но и чтобы экран не был свободным, то можешь сделать репит текстуры через setWrap.
Ничего не противоречит, я не говорил, что не должно растягиваться. Я говорил, что должно в пункте (1) и что должно сохранять пропорции в пункте (2).
А еще я попросил адекватную помощь.
Я пробовал разные, тут собирается быстрее всего. Разве что LOVE2D может чуток быстрее собирается под ведроид, но он не может в дебаг, поэтому просто делает апк.
Спасибо тебе, хороший человек! Целый день я пытался повторить это, и не выходило. Оказывается, на этой доске есть люди, которые могут и в программирование, и в помощь. Держи котенка.
А почему если поменять вьюпорт у доски, то меняется задний фон?
> если поменять вьюпорт у доски, то меняется задний фон?
У меня все норм лол, но если что то куда то съезжает то это из за авто центрирования камеры в apply. Можешь отцентрировать сам после его вызова.
Хотя понял о чем ты. Похоже что лучше не переназначать матрицу 2 раза у одного и того же батча в контексте одного begin end. https://pastebin.com/1QDVc0WX
Спасибо еще раз. Вот мой финальный вариант перед кодингом обработки тача для зума https://pastebin.com/MUG3CUVg
Это вообще правильный подход - менять размер доски, вместо размера вьюпорта?
> Это вообще правильный подход
Это нормально. Но с мобильниками я не знаком, поэтому не могу сказать как там работать с поворотами, мультитачами и прочее.
Знаешь, я тебе скажу, что писать логическую игру на libgdx - это все-таки уберхуевая идея.
Кто-то может вскукарекнуть, что "коко логические игры это изи", но шли таких сразу нахуй.
А все потому что:
- в логической игре с полем число актеров НАМНОГО больше, чем в любом бродилке\шутере\рпг (поле 10х10 означает в несколько сотен актеров, каждый из которых может обладать анимациями и рассеивать партиклы \частицы).
-из-за пункта выше следует, что производительность на мабилках просядет просто катастрофически, превратившись в неюзабельное говно. Ну серьезно, в libgdx система частиц архиуебищна, никакие пулы ей не помогают. Менее 1000 частиц на экране - да это же смешно! Даже сотня клеток поля если одновременно испустят всего 10 (а хорошие эффекты в 10 частиц не уместить) - это будет лагодром. Та же юнити спокойно выдает на экране несколько тысяч частиц без фризов, красиво и плавненько. Для неверящих - скачайте, например, в маркете Fireworks Touch, и сравните с libgdx говном в сравнительном тесте. Разница колоссальна.
-
И вот если ты рассматриваешь мобилки и собираешься делать спецэффекты - ты неожиданно упрешься в сильные графические ограничения, а все потому что жабадебилы идейно непринимают написание отдельных лагающих частей кода на C.
>а все потому что жабадебилы идейно непринимают написание отдельных лагающих частей кода на C
Не проецируй петушок
Ну покажи игру на libgdx для андроида, которая содержит больше 2-3х сотен актеров\спрайтов (пусть даже без анимаций и спецэффектов), которые выдают стабильные 60 фпс.
Одна примитивщина уровня "кролик бежит на фоне и прыгает\самолетик летит и падает" с менее чем 50 таких актеров\спрайтов.
Неспроста даже приложения примеров типа Codelabs или Libgdx Test имеют ограничения на не более чем 20 фигур. И даже на них все умудряется просаживаться.
Дурачёк. Любой из популярых фреймворков, при помощи которых можно собрать apk файл что libGDX, что юнити, используют мобильную версию открытой графической библиотеки. Ты кретин, если додумался увидеть преимущества openglES над openglES.
Ты наверное подросток, да? Так ведут себя дети, у которых есть своё мнение по каждому вопросу, при том, что они ничего в этом не понимают. Иными словами, ТЫСКОЗАЛ.
Ну действительно, библиотека одна, а производительность отличается в разы.
Ты мудак или прикидываешься? Вызовы отрисовки openIES идут через обертку.
Покажи пример игры с двумя сотнями отрисованных текстур на libgdx или иди нахуй, кукаретик. Куча игр на этой "открытой версии графической библиотеки" справляются с этим, но не справляется libgdx.
Куча тем без решения на форумах, что на андроиде не тянет по куче причин (в тч из-за бага жабы в отношении с vsync), нелагающих примеров комплекснее "самолетик, который упал" нет, а у него все как у людей, лол.
Посмотри на FreeGemas как пример логической игры и охуей от того, как это отличается от любой игры того же типа на той же "мобильной версии открытой графической библиотеки"
tiledMap = (new TmxMapLoader()).load("maps/map1.tmx");
tiledMapRenderer = new OrthogonalTiledMapRenderer(tiledMap, 2.0f, sb);
Или вот еще более комплексный, чем зайцы и самолетики пример.
https://github.com/libgdx/libgdx-demo-pax-britannica
На моем Galaxy S4 4 корабля, не начавшие спамить самолеты - выдают около 35 фпс (далеко не 60).
А когда начинают спамить - фпс становится 5-10.
И это при том, что там используются атласы, нет аллокации, все обпулено по самые помидоры.
Кстати, забавно, но версия, собранная из исходников, отличается от версии выложенной в маркете.
В последней нет бага, от которого в настройках нельзя переключать галки, и производительность вполне норм.
Хз, от чего такая разница
Ответ прост, но не очевиден.
Нельзя тестировать приложение, запуская его через студию. Нужно собирать отдельно тестовый apk. Из-за мониторов\дебаговых оберток производительность и проседает. Сам так неделю сидел в апатии, пока не наковырял.
Медленная отрисовка в libgdx следствие не самого libgdx или джавы, а криворукости писателей, которые не могут VBO. Ну серьезно блять, libgdx это низкоуровневая обертка над НАТИВНОЙ lwgjl, так что тут нечему тормозить - просто нехуй каждый спрайт по отдельности рисовать - с таким подходом у тебя игра будет проседать и на Си. Но с тобой бесполезно спорить, потому что как заметил другой анон - ТЫСКОЗАЛЖЕ.
Моя игра выдает спокойно 60 фпс, и почти никаких фризов. Есть проблемные места в коде(из-за моей криворукости и незнания фреймворка), но в целом все просто превосходно
P.S. link: https://goo.gl/EyTG35
Сука libGDX это не движок, а надстройка над openGL, заебали уже. Не нравится - иди перетаскивай говноассеты в юнити.
Ага охуительная надстройка, с классами камеры, вьюпортов на все случаи жизни, JSON ридеры-райтеры, загрузчики моделей и карт из самых разных форматов.. Да я и не говорю что мне не нравится, всё заебись, но обидно что такую простую вещь забыли доложить к такому вороху встроенных инструментов.
Перед тем как отправить пост нашёл полу-официальный пакет libgdx-utils, в котором реализованы "недостающие" но очень нужные базовые вещи, в числе которых и AnimatedSprite, так что и эта моя претензия к фреймворку аннулируется
Пока нашел только Yarn, вроде почти подходит. Есть сомнительная обертка Jarn, которая поддерживается как-то никак и документации толком никакой нет. Даже по гайдам местным ничего не получилось, видимо гайды эти устарели.
Какой же ты упрямый дебил, блять.
Ну хуй с тобой, пердоль свой шыдевыр полгода, а потом хуи соси в слезах, когда его сотня школьников скачает и обосрет в отзывах, и на этом все и закончится.
>сколько можно заработать
>про раскрутку он не спрашивал
Дебил, ты посмотри, сколько других долбоебов со своей хуйней в твоих маркетах сидят. Ты именно про раскрутку в первую очередь и спрашивал.
мимо другой анон
Выкидываешь libGDX нахуй
@
Выкидываешь джаву нахуй
@
Дрочишь C
@
Дрочишь OpenGL API ручками
@
Во, теперь заебись
Нарисовал радужный квадрат
@
Забыл зачем вообще начал все это
Велосипедил для самых простых нужд
@
Юнитидебилы смеялись
@
Гейммейкерорабы тыкали пальцем
@
И поделом
>Ко ко ко не используйте статические переменные с объектами, которые используют вызовы к OpenGl (иначе распидорасит на мобилках)
Кто-нибудь мне расскажет, какова была логика создателей этого говна, которые зная это захуярили в Pools статический map пулов? Шиза какая-то.
https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/utils/Pools.java
Второй пинок к Pools - нет метода с параметром, черeз который можно установить initialCapacity (и создаем, и создаем, и создаем и создаем 1000 объектов во время рендеринга, предварительной генерации для питухов, ага).
Честно говоря, призаебался уже, переписывать за мартыханами то, что вроде как из коробки, и без какого-то особого поведения.
Умеет ли libgtx в полное разрушение окружающего мира?
Будет ли 3D FPS game тормозить на современных Андроид-телефонах, когда я её доделаю через 2 года?
имеется ввиду, 3D FPS с полным разрушение мира.
То чувство, когда ты сам написал свою реализацию скелетной анимации для файлов одной очень знаменитой игры, а у кого-то скелетная анимация вызывает затруднения. ППЦ
float r = Intersector.intersectSegmentCircleDisplace(new Vector2(0, 0), new Vector2(1, 0), new Vector2(1.5f, 0), 1, disp);
System.out.println(r);
System.out.println(disp);
Хули это говно не работает? Они забили хуй на класс Intersector?
В консоль должно написаться 0.5 и (1.0, 0.0), а не Infinity и (0.0, 0.0)
Сука, блядь, полдня на эту дрисню потратил - а оказывается, что это разработчики насрали в мои штаны, а не я сам
DYING_ANIMATION = new Animation<TextureRegion>(0.230f, framesDyingFront,
Animation.PlayMode.NORMAL);
Когда я пишу, что true во втором параметре getKeyFrame (то есть, залупливать анимацию), то анимация играет. Если нет, то анимация переходит сразу к конечному кадру.
stateTime += Gdx.graphics.getDeltaTime();
TextureRegion currentFrame = activeAnimation.getKeyFrame(stateTime, true);
setDrawable(new TextureRegionDrawable(currentFrame));
Как сделать одноразовую анимацию?
Ок, я решил это тем, что при setинге одноразовой анимации, я сбивал stateTime до 0 и ставил false в loop.
public void setActiveAnimation(Animation<TextureRegion> activeAnimation) {
this.activeAnimation = activeAnimation;
if (activeAnimation == SHOOTING_ANIMATION || activeAnimation == DYING_ANIMATION){
isLooped = false;
stateTime = 0;
} else {
isLooped = true;
}
}
stateTime += Gdx.graphics.getDeltaTime();
TextureRegion currentFrame = activeAnimation.getKeyFrame(stateTime, isLooped);
Экшн-игруху какую-нибудь. Адскую в том плане, что экшона можно сделать оч много, как в каком-то nuclear throne. Но вообще у меня пока даже идей мало, так что можно и не дрочильню.
Интерпрайс не умирает.
Если хорошо знаешь жаву, то почему бы и нет.
Monogame
>>250577
>>250587
>>454918
>>425425
сап, аноны. можете рассказать про расширения(extentions) libgdx, что какой добавляет, как ими пользоваться?
TextField passwordField = new TextField(null, skin);
password.setPasswordMode(true);
passwordField.setMessageText("Password goes here");
Что я делаю не так?
https://github.com/libgdx/libgdx/wiki/Viewports
https://gamedev.stackexchange.com/questions/70361/libgdx-android-phone-resolution-problem
Но не особо получается, может у меня руки из жопы просто или там действительно специфично всё?
А, разобрался сам
Есть одна таблица, которая заполняет сцену.
Затем есть две таблицы слева и справа. В таблице справа кнопки-хуёпки и прочее гавно. А в таблице слева должна 24/7 играть анимация. Но я не могу засунуть анимацию в таблицу т.к она не наследует от актёра, а потому хуй мне.
Может кто подсказать решение? Я правильный вообще подход выбрал, добавлять анимацию в таблицу?
-Dsun.java2d.opengl=true
Просто фреймворк уже достиг совершенства и не нуждается в апдейтах.
Сделай класс наследник от актёра. Перепеши метод draw. Рисуй там кадр из анимации по stateTime и суй это всё в таблицу.
Или я тебя неправильно понял?
Юнити - модное гавно. Лучше наше, чём модное
Чинится хардварно, дело в том что при сборке атласа (а ты обязан его использовать) у тебя выключена фича "duplicatePadding" https://github.com/libgdx/libgdx/wiki/Texture-packer#settings при сборке. Настраивается файлом pack.json в папке с текстурами. Эта фича дублирует бортовые пиксели, чтоб видеокарта делала сэмплинг крайних пикселей полигонов адекватно.
А нахуя этот дроч на цифры? Уже заанонсили 1.9.10
> 1.9.9 на днях вышел
> Уже заанонсили 1.9.10
Наконец то у разработчика началось осенние обострение, целый год ждал.
А ты не торопился, да? Я уже ФСЁ. Купил Spriter и забыл о ебле с манямацией.
Даунгрейднутся на жаву 8
Сами варнинги не опасны. Но чтобы их не видеть, мне лично помогло прописывание такой строчки:
jvmArgs = ['--add-opens=java.base/java.lang=ALL-UNNAMED', '--add-opens=java.base/java.lang.invoke=ALL-UNNAMED']
в конец таска "run" файла desktop/build.gradle
>jvmArgs = ['--add-opens=java.base/java.lang=ALL-UNNAMED', '--add-opens=java.base/java.lang.invoke=ALL-UNNAMED']
Не помогло( Еще пикрел высрался и не хочет уходить, хотя проект собирается и нормально запускается, никаких ошибок не пишет
У меня такая же фигня высралась в свежей Идее. Я просто забил. В логах всё равно пусто про неё, хз чё чинить.
И в чем проблема? У тебя в map.layers хоть 2 слоя есть? А то тащишь второй get(1).
А даже если первый пытаюсь достать, то тоже самое, вроде карта рендорится, но слой достать не может, может я где-то в создании карты проебался?
Да. Похоже. Но ты в следующий раз лучше описание ошибки Exception кидай. А то разные проблемы могут быть.\
>карта рендорится
Ну тогда ставь точку остановки и смотри в Debug, что хранится в переменной map.layers. Сорян, если капитаню, но я просто не вижу проблему, в том, чтобы решить эту проблему посредством IDE.
Иначе посмотри какой номер слоя стоит у тебя в файле уровня .tmx, если ты из него качаешь. Может быть у тебя слой под 5-ым номером, а до него все пустое, из-за того что ты экспериментировал с редактором тайтлов.
Спасибо, но я понял в чем была моя ошибка, банальный расчет клетки для хода, как обычно стопарюсь на глупых и очевидных вещах))
Взял стандартный DragAndDrop. Всё работает, но когда перетаскиваю, Actor которого я перетаскиваю, рисуется сбоку от пальца. Это вроде как заебись, но мне надо чтобы он под пальцем рисовался.
Чёт не пойму, есть ли в DragAndDrop какой нить offset для этого, или самому изобретать?
> какой нить offset для этого, или самому изобретать
Ну ты уже знаешь что делать. Мне хоть и нравится либждх, но я бы посоветовал пересесть на что то более современное, для чего есть не сдохший редактор сцен и интерфейса, или еще лучше - встроенный.
Редакторы не нужны.
че делать? переписывать и заодно осваивать годо?
В идее жмёшь ctrl+N и пробуешь найти XmlSchema. Асло javax это вроде бы часть JavaEE стека, а ты небось только кастрированный JavaSE накатил.
блядж весь вечер вчера ебался, ну америкасы туууупые не могли также на стаке написать
Потом ты охуеешь от количества багов в годоте, и перейдешь на юнити. А когда охуеешь от юнити, уже будет некуда переходить.
Я не тролю, сам сейчас нахожусь на этом этапе. Решил что похуй, буду делать игру на кривом юнити, а когда разбогатею и уволюсь с работы, буду пилить свой двиг под следующие игры.
Неженка. Баги нужно фиксить а не бежать от них. Как будто есть что-то где нет багов вообще. Везде есть, но в libgdx и годоте их хотя бы легко исправить и опубликовать результат чтобы другие о них уже не спотыкались.
А игры кто делать будет?
Вакансии на такое вообще бывают?
Байндинги на сишарп есть?
Есть одна вакансия в штатах, все что я нашел
Собираюсь писать один платформер типа apocalypse runner на ведро но с графонием попроще. Java/Kotlin знаю, однако игры никогда не писал. Стоит ли начинать писать на Libgdx в 2к20?
фига ты какое дерьмо мамонта поднял, но не суть.. тут вряд ли найдется актив по сабжу, вк есть группа, вроде живая, нубские вопросы прям на стене задают, народ отвечает.. вообще если жава/котлин как родные, можешь использовать, тк по сути это просто фреймворк, запускающий за тебя игровой цикл и дающий основной функционал для написания игори.. конечно многое придется пилить самому, или подключать отдельные библиотеки (благо это делается одной строкой в конфиге градла), но есть существенный минус - нет общего редактора, уровни делают в Tiled, текстуры пакуют в другой программке (тоже написанной на libgdx), ui пакуют в еще одной утилите.. короче море редакторов для каждого пука, пишутся сообществом.. если нужно по фасту что-то делать, лучше использовать движки..
я с libgdx начинал, много узнал что как внутри игр работает, до этого был опыт в жава ынтырпрызе, поэтому далось все легко, но игоры так и не стал пилить на постоянной основе, сейчас иногда участвую в джемах и использую годот (легкий редактор, в котором можно за пару вечеров на коленке слепить прототипчик)
Он не подходит для разработки на ведре. Из недавнего - 10 фпс на тайлмапах.
Это копия, сохраненная 6 июня 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.