Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: GLX, попытка номер два :)  (Прочитано 8488 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Andru

  • Автор темы
  • Любитель
  • *
  • Сообщений: 65
    • Просмотр профиля
GLX, попытка номер два :)
« : 06 Ноября 2007, 02:49:07 »
Создал было тут тему про свою одну игру, но движек к ней был жутко корявый(работал только у меня :D). Сейчас же вроде-бы исправил ситуацию(удалось запустить на "голой"(с открытыми дровами и т.д.) федорке 7, правда тормоза без ускорения зверские :)), и хотел бы попросить протестировать, кто может, вот эту демку(624Кб)

Вот собсно чего она должна показать:
« Последнее редактирование: 06 Ноября 2007, 15:39:54 от Andru »

Оффлайн Viewizard

  • Активист
  • *
  • Сообщений: 481
    • Просмотр профиля
Re: GLX, попытка номер два :)
« Ответ #1 : 06 Ноября 2007, 09:27:36 »
Моя система: Ubuntu 7.04, нвидия 8800 гтс 320 метров + 9755 драйвера, амд х2 3800+,  2 гб озу,

Запусти игру в консоле, ощущение такое, что вообще ничего не запускается. Выдает теперь просто одну строчку:
Error while loading libomega.soВ Log.htm написало:
[00000741ms]engine: Start in windowed mode: 800 x 600 x 32
[00000744ms]engine: ### XF86VidModeQueryVersion v.2.2
[00000745ms]engine: ### XF86VidModeGetAllModeLines count = 50
[00000746ms]engine: ### Current Resolution = 1280x1024
Обходя разложенные грабли, ты теряешь драгоценный опыт!

Оффлайн Andru

  • Автор темы
  • Любитель
  • *
  • Сообщений: 65
    • Просмотр профиля
Re: GLX, попытка номер два :)
« Ответ #2 : 06 Ноября 2007, 09:48:13 »
Хм... "Error while loading libomega.so" выдает если не может загрузить двиг вообще... странно что что-то было вообще записано в лог, если до этого движок не загрузился   :o

Для загрузки so-шки используется:
Lib = dlopen( LibraryName, 0x001 );
if ( Lib != NULL )
    {
    //получение указателей на функции
    }
Вот если эта стадия не выполняется, пишет ошибка загрузки libomega.so... Мб чего не правильно делаю? Есть ли другой способ подгрузить so?
« Последнее редактирование: 06 Ноября 2007, 10:05:50 от Andru »

Оффлайн Viewizard

  • Активист
  • *
  • Сообщений: 481
    • Просмотр профиля
Re: GLX, попытка номер два :)
« Ответ #3 : 06 Ноября 2007, 10:11:00 »
Я, к примеру, пришел к выводу когда начал с этим разбираться, что проще сделать скрипт запуска меняющий стандартную переменную путей к библиотекам для текущей сессии. Но у меня ситуация другая была - все либы были стандартные, т.е. ничего своего... только на всякий случай таскал набор либ (опенал, опеналут и прочие вещи которых могло не быть в конкретной системе).
Я тебе приаттачил этот скрипт, это то что я сейчас использую в AstroMenace. А если интересует, сырцы можешь глянут тут: http://www.viewizard.com/ru/download.php?forceos=source

По поводу выделения части кода в отдельную либу: я от этого отказался уже давно, ибо смысла нет никакого а проблем создается много :) Раньше (под винду) это еще можно было как-то логически объяснить (отдельные рендереры для DirectX и OpenGL), но сейчас, когда кросс-платформенная версия идет только на OpenGL - смысла что-то выносить нет.
В текущий момент, у нас все игры идут "монолитные", просто в коде есть папка Core (типа ядро, участок кода который переходит от проекта к проекту и эволюционирует если можно так сказать), и все :)... а отдельные библиотеки которые тянем - это опеналут, опенал, ворбис, огг, жпеглиб и прочее, т.е. то что 1) не наше 2) ограничено lgpl лицензией 3) установлено на большинстве линукс систем (в Windows версии тянем dll-ми).

[вложение удалено Администратором]
Обходя разложенные грабли, ты теряешь драгоценный опыт!

Thread

  • Гость
Re: GLX, попытка номер два :)
« Ответ #4 : 06 Ноября 2007, 10:48:54 »
По поводу выделения части кода в отдельную либу: я от этого отказался уже давно, ибо смысла нет никакого а проблем создается много :) Раньше (под винду) это еще можно было как-то логически объяснить (отдельные рендереры для DirectX и OpenGL), но сейчас, когда кросс-платформенная версия идет только на OpenGL - смысла что-то выносить нет.

Насколько я высмотрел на http://www.viewizard.com/astromenace/index_linux.php, игра реализуется на SDL, а не OpenGL. Тогда уж действительно ничего разделять не надо, ведь о кросс-платформенности заботится SDL :)

Оффлайн Andru

  • Автор темы
  • Любитель
  • *
  • Сообщений: 65
    • Просмотр профиля
Re: GLX, попытка номер два :)
« Ответ #5 : 06 Ноября 2007, 11:27:15 »
Viewizard, Пасиб за скрипт буду разбиратся :)

Что касается выноса двигла за пределы исполнительного файла в so, то тут уже иду на принцип, хочется таки довести до ума так как начал делать :)

Ты в предыдущем посте писал мол рога выдает лог(знач запустилась, но вылетела после вывода текущего разрешения экрана, видать свзяано это с тем что внутри одной функции был дин-массив, который не очищался после выхода из функции, да и Vsync чето глючит на старом радеоне 8)). Ща чуток подправил so, попробуй вот с этой

Оффлайн Viewizard

  • Активист
  • *
  • Сообщений: 481
    • Просмотр профиля
Re: GLX, попытка номер два :)
« Ответ #6 : 06 Ноября 2007, 13:47:36 »
Насколько я высмотрел на http://www.viewizard.com/astromenace/index_linux.php, игра реализуется на SDL, а не OpenGL. Тогда уж действительно ничего разделять не надо, ведь о кросс-платформенности заботится SDL :)
На самом деле, SDL и OpenGL это несколько разные вещи :)
SDL реализует взаимодействие с системой, плюс сам несет только платформо-независимую 2д часть (DirectDraw, GDI и т.п. реализации для вывода 2д).
А если вам нужно 3д, тут только OpenGL. К слову сказать SDL максимально ориентирован на совместную работу с OpenGL, хотя работать с ним в паре с Direct3D тоже вполне возможно.
Обходя разложенные грабли, ты теряешь драгоценный опыт!

Оффлайн Viewizard

  • Активист
  • *
  • Сообщений: 481
    • Просмотр профиля
Re: GLX, попытка номер два :)
« Ответ #7 : 06 Ноября 2007, 13:49:54 »
Ты в предыдущем посте писал мол рога выдает лог(знач запустилась, но вылетела после вывода текущего разрешения экрана, видать свзяано это с тем что внутри одной функции был дин-массив, который не очищался после выхода из функции, да и Vsync чето глючит на старом радеоне 8)). Ща чуток подправил so, попробуй вот с этой
Запустилось :)
Симпатично, так держать! Похоже в нашем полку линукс игроделов прибыло ;)
Вот лог файл:
[00000069ms]engine: Start in windowed mode: 800 x 600 x 32
[00000072ms]engine: ### XF86VidModeQueryVersion v.2.2
[00000073ms]engine: ### XF86VidModeGetAllModeLines count = 50
[00000074ms]engine: ### Current Resolution = 1280x1024
[00000075ms]engine: ### Current Dir = /home/viewizard/Desktop/demo/bin/
[00000076ms]engine: Successful creating of window:
[00000109ms]engine: Successful initializing of OpenGL
[00000110ms]engine: ### Mode to set = 1280x1024[0]
[00000164ms]engine: GL_VERSION: 2.1.0 NVIDIA 97.55
[00000164ms]engine: GL_VENDOR: NVIDIA Corporation
[00000165ms]engine: GL_RENDERER: GeForce 8800 GTS/PCI/SSE2/3DNOW!
[00000166ms]engine: GL_DIRECT_RENDER: TRUE
[00000166ms]engine: GL_ARB_texture_compression: TRUE
[00000167ms]engine: GL_EXT_bgra: TRUE
[00000175ms]engine: GL_MAX_TEXTURE_SIZE: 8192 x 8192
[00000190ms]engine: GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: 16
[00000217ms]application: Successful loading of font: [ ../data/Font.png ][ /home/viewizard/Desktop/demo/bin/../data/FontInfo.ofi ]
[00000250ms]application: Successful loading of texture: /home/viewizard/Desktop/demo/bin/../data/background.jpg
[00000261ms]application: Successful loading of texture: /home/viewizard/Desktop/demo/bin/../data/left.jpg
[00000263ms]application: Successful loading of texture: /home/viewizard/Desktop/demo/bin/../data/player.gif
[00000266ms]application: Successful loading of texture: /home/viewizard/Desktop/demo/bin/../data/monster1.gif
[00000267ms]application: Successful loading of texture: /home/viewizard/Desktop/demo/bin/../data/bullet.gif
[00000287ms]application: Successful loading of texture: /home/viewizard/Desktop/demo/bin/../data/boom.jpg
[00018546ms]engine: Successful stopping of timers[2]
[00018547ms]engine: Successful freeing of fonts[1]
[00018549ms]engine: Successful freeing of textures[7]
[00018550ms]engine: Average FPS: 718
[00018550ms]engine: Shutdown...
Обходя разложенные грабли, ты теряешь драгоценный опыт!

Оффлайн Viewizard

  • Активист
  • *
  • Сообщений: 481
    • Просмотр профиля
Re: GLX, попытка номер два :)
« Ответ #8 : 06 Ноября 2007, 14:06:45 »
Кстати, раз пошел такой разговор.
Если интересует платформо-независимость (mac/linux+прочий юникс/windows) совсем-совсем малой кровью, советую использовать:

SDL - для управления и обработки окна игры, обработки клавы + мышки + джойста. Как это сделать (с обходом некоторых "нюансов" SDL-я) можно глянуть в сырцах AstroMenace.
OpenGL - для графики (только если надо 3D!!! если не надо - лучше всего использовать 2д функции вывода SDL)
OpenAL для вывода звука (если вам не нужен 3д звук в игре или OpenAL кажется сильно низкоуровневым, берите SDL_mixer, хотя у него тоже хватает "нюансов").
vorbis/ogg - как кодек музыки, хотя в демо версии AstroMenace я использую его и для sfx. Конечно, можно брать и mp3, но помните - он в основном не входит по умолчанию в линукс дистрибутивы + это не опен сорс и патентно "грязный" стандарт.

Это список составленный путем набивания собственных шишек в течении 2-х лет при портировании игр с Windows и разработке кросс-платформенного проекта. Так сказать все исключительно мое имхо :)
Обходя разложенные грабли, ты теряешь драгоценный опыт!

Оффлайн Andru

  • Автор темы
  • Любитель
  • *
  • Сообщений: 65
    • Просмотр профиля
Re: GLX, попытка номер два :)
« Ответ #9 : 06 Ноября 2007, 15:13:18 »
Наконец-то оно запустилось, ура :) Сама демка впринципе собрана на скорую руку и не является каким-либо мои проектом, так, пример к движку ) Надо будет залить на фтп свои две игрушки, да занятся портированием других )

Что касается SDL, то я не люблю зависить от каких-либо библиотек, если это не критично(как в случаи со звуком - OpenAL), да и подгонять нужный мне функционал под специфику SDL тоже нет особого желания, легче домучать системщину да прикрутить то что есть.

Оффлайн Viewizard

  • Активист
  • *
  • Сообщений: 481
    • Просмотр профиля
Re: GLX, попытка номер два :)
« Ответ #10 : 06 Ноября 2007, 15:41:57 »
Наконец-то оно запустилось, ура :) Сама демка впринципе собрана на скорую руку и не является каким-либо мои проектом, так, пример к движку ) Надо будет залить на фтп свои две игрушки, да занятся портированием других )
Правильно :)

Что касается SDL, то я не люблю зависить от каких-либо библиотек, если это не критично(как в случаи со звуком - OpenAL), да и подгонять нужный мне функционал под специфику SDL тоже нет особого желания, легче домучать системщину да прикрутить то что есть.
Ну, у меня просто другой сейчас подход (хотя в самом начале, в году эдак 2000-м, я думал именно так как вы, и думал так аж до 2005-го года примерно :))
Сейчас идея такая: распределять работу (читай как сваливать ее на других  ;D). Если есть группа людей которая делает и поддерживает код, это все опен сорс, есть большое комьюнити в которое входят реальные монстры программинга задействованные в проекте, код уже проверен и перепроверен, и т.п. - не грех и "упасть им на хвост", особенно если надо думать о 2-3-х платформах :)
В итоге мы "сливаем" на других обработку окна, девайсов ввода-вывода, особенности файловой системы (расположение байт), работу со звуком и т.п. .... работаем только через интерфейсы этих библиотек (вот тут главное найти хорошие либы, т.е. устоявшиеся, проверенные годами). И всецело сосредоточится на самой реализации игры.
Но (!) если нужно именно изучить, понять принцип действия, разобраться - то надо идти исключительно вашим путем.
Обходя разложенные грабли, ты теряешь драгоценный опыт!

Thread

  • Гость
Re: GLX, попытка номер два :)
« Ответ #11 : 06 Ноября 2007, 15:59:12 »
Насколько я высмотрел на http://www.viewizard.com/astromenace/index_linux.php, игра реализуется на SDL, а не OpenGL. Тогда уж действительно ничего разделять не надо, ведь о кросс-платформенности заботится SDL :)
На самом деле, SDL и OpenGL это несколько разные вещи :)
SDL реализует взаимодействие с системой, плюс сам несет только платформо-независимую 2д часть (DirectDraw, GDI и т.п. реализации для вывода 2д).
А если вам нужно 3д, тут только OpenGL. К слову сказать SDL максимально ориентирован на совместную работу с OpenGL, хотя работать с ним в паре с Direct3D тоже вполне возможно.


Звиняюсь. Мне всегда почему-то казалось, что SDL предоставляет кросс-платформенный API для 3D-рендеринга, в качестве бекэнда используя OpenGL или что-то другое.

Оффлайн Viewizard

  • Активист
  • *
  • Сообщений: 481
    • Просмотр профиля
Re: GLX, попытка номер два :)
« Ответ #12 : 06 Ноября 2007, 17:01:52 »
Звиняюсь. Мне всегда почему-то казалось, что SDL предоставляет кросс-платформенный API для 3D-рендеринга, в качестве бекэнда используя OpenGL или что-то другое.
Ну, вам такие подробности не знать простительно, вы же с SDL + OpenGL не работали вплотную.

А как раз эта изюминка SDL меня подцепила в самом начале :)
Т.е. SDL делает все чтобы я не думал о кросс-платформенности, а к выводу 3д графики вообще ни-ни, и тут можно делать абсолютно все что может OpenGL - никаких ограничений.
С другой стороны это очень правильно, что они сделали 2д апи с кучей бекэндов для разных платформ и тем самым сделали возможность написания 2д кроссплатформенных игр.
В общем SDL рулит, как говорится :), а то я еще долго могу петь хвалебные оды SDL-ю  ;D
 
Что-то я совсем забылся, погнал чистый оффтоп :) прошу прощения.
Для тех кто так же как и я забылся, повторяю: обсуждаем игру, помогаем в ее тестировании :)
« Последнее редактирование: 06 Ноября 2007, 17:03:43 от Viewizard »
Обходя разложенные грабли, ты теряешь драгоценный опыт!

Оффлайн Andru

  • Автор темы
  • Любитель
  • *
  • Сообщений: 65
    • Просмотр профиля
Re: GLX, попытка номер два :)
« Ответ #13 : 06 Ноября 2007, 20:35:26 »
Цитировать
Но (!) если нужно именно изучить, понять принцип действия, разобраться - то надо идти исключительно вашим путем.
Т.к. портирование игр(написание движка) под Linux пожалуй пока только хобби(вынь-версии принесли немного денег :)), то я хочу разобраться во всех внутринностях сам :) Вот если бы требовалось создать большой проект, за деньги, и быть стопроцентно уверенным в его совместимости с большинство конфигурациями, то тут бы к впоросу подошол иначе и использовал бы чужие проверенные наработки, а так интересней набивать свои шишки :D

Цитировать
Для тех кто так же как и я забылся, повторяю: обсуждаем игру, помогаем в ее тестировании Smiley
Это не игра, это демка, и помочь надо в тестировании двигла)))

Оффлайн Viewizard

  • Активист
  • *
  • Сообщений: 481
    • Просмотр профиля
Re: GLX, попытка номер два :)
« Ответ #14 : 06 Ноября 2007, 20:43:42 »
... а так интересней набивать свои шишки :D
Ну, я так и понял :)

Цитировать
Для тех кто так же как и я забылся, повторяю: обсуждаем игру, помогаем в ее тестировании Smiley
Это не игра, это демка, и помочь надо в тестировании двигла)))
А, понял.
Все помогаем тестить двигло! :)
Обходя разложенные грабли, ты теряешь драгоценный опыт!

 

Страница сгенерирована за 0.043 секунд. Запросов: 24.