LINUX.ORG.RU

Diamond Fighters v.0.9.1

 


0

0

Diamond Fighters — двухмерная танковая аркада, выполненная по всем канонам старых "Battle City" для приставки NES. В игре присутствуют классические бонусы, несколько видов противников и 30 уровней в 3 разных сеттингах. Также возможна игра на двоих.

Для запуска игры потребуются видеокарта с поддержкой OpenGL и библиотека OpenAL. Игра пока доступна только в 32-битном варианте и распространяется в пакетах deb, rpm и tar.gz.

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

>>> Страничка проекта

★★★★

Проверено: UVV ()

Ответ на: комментарий от jackill

> 2. Было бы здорово, если бы все же танки двигались по клеткам. Часто из-за того, что слегка не вписался в поворот, получаешь пулю.

А вот этого не надо, на NES'е так и было как сейчас реализовано

anonymous
()
Ответ на: комментарий от andreyu

>Что вам не понравилось в требованиях? OpenAL относительно легкая и весьма удобная. Не использовать OpenGL для отрисовки тех же спрайтов с бонусами в виде различных трансформаций в наше время просто глупо.

К тому же эффекты симпатичные.

jackill ★★★★★
()

Еще два момента - а редактор карт будет?

И можно какой-нить переключатель на тему выстрелов, чтобы можно было старый стиль включать, когда снаряды друг о друга гасятся, и новый?

jackill ★★★★★
()
Ответ на: комментарий от anonymous

>А вот этого не надо, на NES'е так и было как сейчас реализовано

Значит, видимо, у NES была более крупная сетка. Потому что на консоли я не застревал.

jackill ★★★★★
()
Ответ на: комментарий от andreyu

>>andreyu: Ну а вам мой совет, коль не имеете доступа к "проблемной" ОС, больше информации в лог писать. Более детально. Работы на пол часа, а времени сэкономит массу.

Всмысле проблемной? :) У самого вроде как Linux и стоит ) И проблема кроется в конфигурации/драйверах компюетра, где есть проблема.

Движок собсно выдает всю информацию что может пригодиться. Но вот проблема видать со звуком, а он через костыли портирован(написан врапер для функций использующих в win-версии DirectSound) в самой игре, а там я да... забыл логи проставить. Самое что интересное, решил почти все траблы с граф-частью(во всяком случаи инициализация теперь проходит верно везде :)), так появились проблемы со звуковой 8)

>>anonymous: Всеже рассмотрите вариант с отвязкой от абсолютных путей. Вам там посоветовали сделать враппер маленький с "cd `dirname $0`" или включить это в сам код

Если честно, я даже не понял как это реализовать, т.к. ведь dirname тоже может быть и /usr/games и /usr/local/games, и как быть? :)

>>jackill: В помощи нужно написать какими клавишами управлять

Меню Help, последняя страница :)

>>Пользователи виндов стонут - хотят такую же. :)

Абайдутся :) Во всяком случаи в ближайшее время, т.к. мой GPRS-инет уже на исходе, чтоб делать новый билд и заливать )

>>borb0

такс, апдейтов для слаки нет... Попробуй проследовать инструкции что написал тут http://www.linux.org.ru/jump-message.jsp?msgid=2941121&cid=2942698, только скачай rpm-пакеты для libzengl и бинрника diamond-fighters, и от туда вытащи файлы и разложи их в /usr/lib и /usr/games. В случаи чего приведи плиз лог из папки что много раз уже указывал выше, и то что выведется в консольке(если что-то будет кроме Runtime Error :)).

Andru ★★★★
() автор топика
Ответ на: комментарий от jackill

Под виндой не застревает. Проверено анонимусом.

anonymous
()
Ответ на: комментарий от Andru

> Если честно, я даже не понял как это реализовать, т.к. ведь dirname тоже может быть и /usr/games и /usr/local/games, и как быть? :)


Ну хотябы как в uqm сделайте, передавать ключ --contentdir в скрипте. Вот например:
#!/bin/sh
# Wrapper script for starting The Ur-Quan Masters
exec "/usr/local/games/lib/uqm/uqm" "--contentdir=/usr/local/games/share/uqm/content" "$@"

anonymous
()
Ответ на: комментарий от Andru

>>Как движок грузит текстуры размером не кратным степени двойки? У вас в игре есть имиджи 800х600, 800х32, текстуру нужно создать размером 1024х1024, или 4 по 512х512 (не знаю, как ваш движок работает). Проверяет ли он допустимые картой/драйвером размеры текстуры?..

>Не, с этим проблем нет :) Текстуры которые не кратны степени двойки загружаются специальным образом - у них изменяется размер "канвы", и устанавливаются новые текстурные координаты. Т.е. допустим есть текстура 48х48, её "канва" растягивается до 64х64, но контент(т.е. сам рисунок) остается прежних размеров, и вокруг появляется только черная рамка. Ну а при выводе на экран движок "отрезает" все лишнее.

Да вот хз на самом деле, это от дров зависит. На встроенной intel 865G при входе в меню настройки графики выдает на stderr: [driAllocateTexture:577] unable to allocate texture

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

A-234 ★★★★★
()
Ответ на: комментарий от anonymous

>>Ну хотябы как в uqm сделайте, передавать ключ --contentdir в скрипте. Вот например:

это начинает уже походить на клоунаду. В самом скрипте намертво прописан путь к гамезе(/usr/local/games/lib/uqm/uqm), так вот вопрос - а если юзер поставит ее не в /usr/local? Че, ему ручками скрипт править? 8) В общем максимум что постараюсь сделать - это передачу ключа, а там уже кому надо, пускай составляет скрипты. Хотя вообще не пойму в чем проблема ставить игру в стандартную папку /usr/games и data-файлы в /usr/share/games.

Andru ★★★★
() автор топика
Ответ на: комментарий от A-234

>>[driAllocateTexture:577] unable to allocate texture

Может просто банально памяти не хватает? Сколько выделено для встроенной карточки? Насколько помню там 8Мб, а я не знаю вложится ли игра... Попробуй в $HOME/.config/diamond-fighters/settings.ini напротив LOWQUALITY поставить true, тогда текстуры будут загружаться с сжатием.

Andru ★★★★
() автор топика
Ответ на: комментарий от Andru

>Сколько выделено для встроенной карточки? Насколько помню там 8Мб, а я не знаю вложится ли игра...

Не 8 конечно а 12, но все равно немного. LOWQUALITY стоит, но это не помогает. Игру я попробовал запустить, вылетела с:

Runtime error 216 at $0804A99E

$0804A99E

$0805DF45

$08062366

$08057379

$08052809

$08050897

$0804ED1A

$40292963

$08048AAD

$0804889D

А вот кстати, сжатие текстур должно дровами ведь поддерживаться, вернее даже аппаратурой карточки. Может на этом интеле сжатие не поддерживается и дрова автоматом текстуры распаковывают прежде чем их в память пихать?

A-234 ★★★★★
()
Ответ на: комментарий от A-234

>>А вот кстати, сжатие текстур должно дровами ведь поддерживаться, вернее даже аппаратурой карточки. Может на этом интеле сжатие не поддерживается и дрова автоматом текстуры распаковывают прежде чем их в память пихать?

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

>>Игру я попробовал запустить, вылетела с:

Эммм, а что тогда выше писал мол в меню заходит? 8) Или это при старте самого процесса игры?

Andru ★★★★
() автор топика

Нет, всё-таки я не понимаю. Те же вормсы обладают на порядок более сочной графикой и работают на "p-166 + 32мб + s3" в разрешении 800х600. Про старкрафт ваще молчу.

ИМХО что-то в этом мире не так происходит, да...

Gharik
()
Ответ на: комментарий от Andru

> Всмысле проблемной? :) У самого вроде как Linux и стоит )

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

Вот какой лог не помешал бы:
- инициализация видео;
- установка параметров рендерера;
- хагрузка текстуры ТЕКСТУРА1 (имя, путь, формат), произведена корректировка согласно pow2 (если не поддерживается OGL расширение GL_ARB_texture_non_power_of_two), прочие коррекции;
- инициализация звука;
- загрузка и декодирование трека;
- загрузка вавки;
...

С подобным логом вычислить проблему существенно проще.

andreyu ★★★★★
()
Ответ на: комментарий от A-234

> А вот кстати, сжатие текстур должно дровами ведь поддерживаться, вернее даже аппаратурой карточки. Может на этом интеле сжатие не поддерживается и дрова автоматом текстуры распаковывают прежде чем их в память пихать?

Может и не поддерживаться. И вероятнее всего не поддерживается. Нет под рукой компьютера с интеловской картой.

В любом случае движок ДОЛЖЕН проверять наличие возможных OGL-расширений, и основываясь на них предлагать пользователю выбор настроек (пусть даже и из текстового конфига).

andreyu ★★★★★
()
Ответ на: комментарий от Gharik

>>Нет, всё-таки я не понимаю. Те же вормсы обладают на порядок более сочной графикой и работают на "p-166 + 32мб + s3" в разрешении 800х600. Про старкрафт ваще молчу.

DirectDraw, никакой альфы, 256 цветов, многа денег на разработку, большая команда и искусство ходожников :) У меня в команде таких профи нет. И я не хочу делать игру затачивая ее под какую-то конкретную технологию, поэтому использую универсальный инструмент. К тому же повторюсь еще раз - игра создана "just for fun", и специально затачиватся под старые железки/красноглазиков что не слыхали про OpenGL не будет. Хотя текущие баги с Intel-карточками и звуком немного удручают :(

Andru ★★★★
() автор топика
Ответ на: комментарий от Andru

Двойная буферизация при 800x600x32bpx откушает 2*800*600*3(или 4, в зависимомти от драйвера) байт. А это уже 3 Мб.

В оконном режиме накладные расходы существенно выше.

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

Бэки не стоит грузить в формате ARGB, достаточно RGB.
При размерах текстуры 1024х1024 получается:
RGBA - 4Mb
RGB - 3Mb
Помоему весьма приличная экономия памяти.

andreyu ★★★★★
()
Ответ на: комментарий от Andru

>Эммм, а что тогда выше писал мол в меню заходит? 8) Или это при старте самого процесса игры?

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

A-234 ★★★★★
()
Ответ на: комментарий от andreyu

>>andreyu: С подобным логом вычислить проблему существенно проще.

это в логе есть :) И в последнем бинарнике добавил и показ лога в консоль о загрузке звука/музыки. Все кроме лоада текстур не выводилось, т.к. видать падало на лоаде(гляньте пост http://www.linux.org.ru/jump-message.jsp?msgid=2941121&cid=2942482)

>>В любом случае движок ДОЛЖЕН проверять наличие возможных OGL-расширений, и основываясь на них предлагать пользователю выбор настроек (пусть даже и из текстового конфига).

Отписался что проверяет, но просмотрел код, и понял что забыл добавить таки проверку когда переписывал функцию :( Блин, че-то не день, а сплошное наказание 8) Хотя это не так критично как другие два бага с intel-карточками и звуком... Что обидно, так это то что под форточками таких проблем не наблюдалось(старый двиг даже QA у оберона прошол, после мелких фиксов)

Andru ★★★★
() автор топика

Одобрям-с :) Красиво, играбельно. Ждём-с сырцов :)

anarsoul
()
Ответ на: комментарий от Andru

> это в логе есть :)

Вот об этом я и говорил. Что полезного можно узнать вот из этой части лога?

[skip]

Runtime error 217 at $003C9F6D
$003C9F6D
$003C8309
$0804F533
$0804EBA0
$0039E0D6
$0039DBF3
$08048AAD
$0804889D

[skip]

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Это то что пишется в консоль при сегфолте, и на мои просьбы выложить лог из $HOME/.config/diamond-fighters/log.txt мало кто обращает внимание. Видать придется сделать вывод и в консоль.

Andru ★★★★
() автор топика
Ответ на: комментарий от Andru

Обновил, игрался с настройками, но так ничего и не добился.

$ /usr/games/diamond-fighters
libGL warning: 3D driver claims to not support visual 0x5b
Runtime error 217 at $003A1F6D
$003A1F6D
$003A0309
$0804F573
$0804EBA0
$003760D6
$00375BF3
$08048AAD
$0804889D

$ cat log.txt
############################
# ZenGL build 19[11.07.08] #
############################
[00000000ms] Begin
[00000001ms] GLX Extension - ok
[00000001ms] glXChooseVisual: zDepth = 1; colorbit = 1; doublebuffer = 1
[00000024ms] XF86VidMode Extension - ok
[00000024ms] Current mode: 1024 x 768
[00000104ms] GL_VERSION: 1.3 Mesa 6.5.1
[00000104ms] GL_RENDERER: Mesa DRI Intel(R) 915GM 20061017 x86/MMX/SSE2
[00000104ms] GL_MAX_TEXTURE_SIZE: 2048
[00000104ms] GL_MAX_TEXTURE_UNITS_ARB: 8
[00000104ms] GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: 2
[00000104ms] GL_MAX_LIGHTS: 8
[00000104ms] GL_ARB_VERTEX_BUFFER_OBJECT: TRUE
[00000104ms] GL_EXT_FRAMEBUFFER_OBJECT: TRUE
[00000104ms] Support WaitVSync: FALSE
[00000108ms] Set screen options: 800 x 600 x 32bpp windowed

Жаль. Однако, пора мне домой. Можно будет возобновить эксперименты завтра. Общение, кстати, продолжим здесь, или предусмотрен багтрекер?

LexxTheFox ★★
()
Ответ на: комментарий от LexxTheFox

>>Жаль. Однако, пора мне домой. Можно будет возобновить эксперименты завтра.

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

>>Общение, кстати, продолжим здесь, или предусмотрен багтрекер?

Не, багтрекера нету. Седне вечером обмозгую все что можна, перепишу немного инит игры, соберу новые билды, и создам на форуме(в разделе Development) тему "Протестируйте" :) Хотя трабла в том что мой трафик(у меня инет GPRS) почти иссяк...

Andru ★★★★
() автор топика
Ответ на: комментарий от Andru

>...на мои просьбы выложить лог из $HOME/.config/diamond-fighters/log.txt мало кто обращает внимание.

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

[00000904ms] Successful loading of texture: /usr/share/games/diamond-fighters/gfx/effect/sled.bmp

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

A-234 ★★★★★
()
Ответ на: комментарий от bioreactor

>>bioreactor: поставил танчики на ееерс 900

Учитывая всю "мощь" eeepc я удивлен что они там работают 8) Кстати, разрешение экрана какое у 900 модели? А то помнится на какой-то было 800х480.

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

Че-то подумал... вообще текстуры что не умещаются в памяти помещаются в оперативку, все работает конечно не ахти, но работает :) Хотя хз как там Mesa делает на интелах. Я думаю тут трабла в другом. Ближе к ночи выложу патчи с детальным логом, и некоторыми поправками.

Andru ★★★★
() автор топика
Ответ на: комментарий от Andru

> Упала на двух конфигурациях, еще скажи что это мега критически

Ну, когда я иду в магазин, я покупаю игру и на 100% уверен, что она у меня заработает. А когда речь о казуальной игре, которой даже всё равно где работать...

DOKA
()
Ответ на: комментарий от anonymous

под генту x86_64 запустилась без проблем. ну почти. положил куда надо библиотеку и ресурсы и все. даже звук есть хотя ругалось ALSA lib pcm_dmix.c:996:(snd_pcm_dmix_open) unable to open slave

anonymous
()
Ответ на: комментарий от DOKA

>>Ну, когда я иду в магазин, я покупаю игру и на 100% уверен, что она у меня заработает.

Увы я не магазин, я всего лишь один кодер, энтузиазм которого не оплачивается :) Да и текущие баги, дело поправимое, релиза 1.0 вроде еще не было, чтобы выносить приговор игре.

Andru ★★★★
() автор топика
Ответ на: комментарий от Andru

Что то странная последовательность записей в консоли:

Support WaitVSync: TRUE
Set screen options: 800 x 600 x 32bpp windowed
Successful loading of texture: /usr/share/games/diamond-fighters/gfx/gui/fnt_menu.tga
try to init OpenAL... ok
Successful loading of texture: /usr/share/games/diamond-fighters/gfx/gui/i_logo.tga

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

>>Что то странная последовательность записей в консоли:

Т.к. последний раз когда собирал бинарь, то инит OpenAL'а(он не в самом двиге) оказался в самой игре чуть раньше загрузки фонта. Ща все переделываю, и перепишу врапер над OpenAL, и наверное откажусь от uFMOD в пользу modplug через OpenAL.

Andru ★★★★
() автор топика

Классная игруха. Спасибо!!!

anonymous
()
Ответ на: комментарий от Andru

У меня в консоли хоть и есть запись:

uFMOD play: /usr/share/games/diamond-fighters/msc/menu.xm... ok

но ничего не слышно. В системе звуки есть. Мои проекты использующие SDL_mixer и OpenAL звук играют.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

это глюк uFMOD, он почему-то конфликтует с OpenAL, чтоб решить, нужно создать файл .openalrc в домашнем каталоге с текстом:
(define devices '(alsa))
(define alsa-out-device "default")

Andru ★★★★
() автор топика
Ответ на: комментарий от Andru

$ cat /home/andrey/.openalrc
;(define devices '(native alsa sdl arts esd null))
(define devices '(sdl))

С вашим вариантом конфига та же проблема. Да и не в конфиге дело. OpenAL сам по себе у меня звук воспроизводит. А вот ваша игра ни одного звука издавать не хочет.

andreyu ★★★★★
()

lenovo r61i

00:02.0 VGA compatible controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (rev 0c)

00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 03)

с выключенным компизом - идеально. С компизом неиграбельно из-за мерцания - https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/200230

geek ★★★
()
Ответ на: комментарий от andreyu

Когда у меня стояла OpenSUSE, эта проблема решалась только так, т.к. OpenAL'у "кислород" перекрывал uFMOD своим выводом через ALSA. Возможно трабла кроется в том что использую девайс default для uFMOD(для параметров вывода ALSA). Ладно, переделаю вывод музыки на OpenAL через modplug, тогда надо будет еще раз протестировать :)

Andru ★★★★
() автор топика
Ответ на: комментарий от Andru

> т.к. OpenAL'у "кислород" перекрывал uFMOD своим выводом через ALSA.

Больше так не делайте.
Если вы используете OpenAL, то uFMOD (или другую библиотеку) стоит использовать ТОЛЬКО как encoder в формат понятный OpenAL. В вашем случае это простой PCM. На просторах интеренета есть масса примеров по проигрыванию того же OGG с помощью OpenAL - там схожий принцип. С помощью библиотеки (на чем остановить выбор, решать вам) вы только декодируете модуль, а звук выводит OpenAL.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Увы uFMOD предоставляет только свои функции по проигрыванию, никакого декодинга. Да и написан он для создателей демосцен, и эта библиотека очень крохотная и легкая в использовании. Жалко конечно что в линукс миксить её с чем-то другим проблематично порой.

Andru ★★★★
() автор топика
Ответ на: комментарий от Andru

Делай сорцы, configure и Makefile.
А если для безустановочной версии, то делай как, например, в Penumbra.
Работает там, куда распаковали, структура вкратце такая:
./binary
./start.sh
./lib
./textures

в скрипте-запускалке написано:

#!/bin/sh
gamepath=`dirname ${0}`
cd $gamepath > /dev/null
chcon=`which chcon`
if [ -n "$chcon" ]; then
    $chcon -t textrel_shlib_t lib/libSDL-1.2.so.0 2> /dev/null
fi
export LD_LIBRARY_PATH=./lib
./blackplague.bin "$@"
if [ $? -ne 0 ]; then
    echo Penumbra: Black Plague exited unexpectedly, please check
    echo  ${HOME}/.frictionalgames/Penumbra/Black Plague/hpl.log
    echo for any error messages
    echo Also try running
    echo  ulimit -c unlimited
    echo And re-running Penumbra and try and recreate the error
    echo then submit the generated core file or stack trace
fi
cd - > /dev/null

name_no ★★
()

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

anonymous
()

Классная игра, спасибо.

Будет ли возможность игры по сети? Очень хотелось бы...

anonymous
()
Ответ на: комментарий от anonymous

> Как всегда, графика ужоснах, выдается за хорошую, мол "сам нарисуй" лучше.

Как всегда, пришел аноним и нагадил вокруг.

andreyu ★★★★★
()
Ответ на: комментарий от anonymous

>>Будет ли возможность игры по сети? Очень хотелось бы...

В сетевом коде я полный зеро :) Да и смысла в танчиках по сети? Разве что если бы были карты на несколько экранов и пр. элементы что не создавали бы на таких просторах эффекта дежа-вю. А так, hot seat на двоих рулит! xD

Andru ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.