LINUX.ORG.RU

Поле для игры на OpenGL + SDL

 , , ,


0

5

Собственно продолжение драмы. Часть вторая.

Прошло 10 дней и я почти ничего не сделал, 80% времени, которое было найдено между просмотром The Outer Limits и спасением голактеки, было потрачено на перелопачивание быдлокода, который разрастался слишком быстро. Посмотреть то немногое, что есть, а также попинать автора за детские ошибки (кстати приветствуется, стандартов не знаю, пишу как получится) можно тут (github.com).

Итак, спустя многочасов меню готово (это ведь делается за 20 минут, да?). Теперь вопрос о поле для игры.

TODO:

  • 2D\3D поле размером 20х10 квадратиков, предположительно тайловой системы.

Что не знаю:

  • Как вообще отрисовать поле, зафиксировать камеру, заставить её перемещаться, etc? (Жду урлов на уроки\документацию\матчасть)
  • Каким образом готовить модельки башен, травы и всего прочего? Как скармливать эти модельки OpenGL?


Последнее исправление: ThisNameWasFree (всего исправлений: 2)

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

slackwarrior ★★★★★
()

Лучше бы тебе код обработки событий вывести в отдельную функцию или в отдельный модуль - я насчитал у тебя 9 уровней вложенности, и по-моему это не очень хорошо :) И да, зачем все эти вертипляски с FULL_PATH?

char *FULL_PATH = (char*) calloc((strlen(GAME_PATH) + strlen(IMAGE_PATH) + 1), sizeof(char));
strcat(FULL_PATH, GAME_PATH);
strcat(FULL_PATH, IMAGE_PATH);

SDL_Surface *button_surface = SDL_LoadBMP(FULL_PATH);

free(FULL_PATH);

Почему нельзя просто сделать SDL_LoadBMP(«images/TD_Background.bmp») (и то же самое с кнопками)?

Честно говоря, в main.cpp (кстати, почему файлы .cpp, а код - сишный) код создания кнопок слишком уж плох - лучше создай структуру кнопка, потом создай массив этих кнопок и отрисовывай, только не так, как сейчас.

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

Кнопки переделаю, код событий вынесу куда-нибудь.

Сделать SDL_LoadBMP(«images/TD_Background.bmp») у меня не получилось, ибо ./draw/button.cpp не в теме про ./images/*.bmp, а как выбраться на уровень выше и перелезть в соседнюю папку без boost'a пока не понял.

.cpp у всех потому что я не пишу на чистом Си и пока не знаю точных различий от C++. Поэтому пусть пока будет так :)

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

По первому вопросу - ../images/*.bmp. По второму - ты вообще писать собираешься на С или на С++? Если на С, то в мэйкфайле просто пропиши gcc -std=c99, должно собраться нормально.

kostik1
()

Смотри исходники Minetest.
Там код весьма простой и скриптование уже прикрутили.

winddos ★★★
()

я так понял, ты начал делать игру, и первым делом зафигачил меню?

все неправильно. надо было сначала сделать about/credits.

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

Откровенно говоря, я даже удивлен, что кто-то не знает об этой фиче, это же самые основы работы в консоли, тебе стоит почитать чего-нибудь юзерского по линуксу :)

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

Ненене, теперь напрямую «images/*.bmp» работает. Когда сидел и ковырялся, то ../ и прочие варианты не срабатывали, видимо, из-за других багов.

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

все неправильно. надо было сначала сделать about/credits.

Как тонко по#бнул товарища, проказник.

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

Или хочется непременно в познавательных целях походить по граблям?

В познавательных целях НУЖНО походить по граблям.

хочется

// хочешь - не хочешь, по почкам схлопочешь.

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

Дык это, с OGL что мне делать?

а что ты хочешь получить в результате? нарисовать модельку? что мешает посмотреть как это сделано в готовых играх? исходников полно ведь.

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

Меня не интересуют все исходники и все модельки. Меня интересует только то, что наиболее безболезненно и применимо к SDL.

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

Ну вот я возьму и за пару минут найду кроссплатформенную игру на SDL + C с лицухой GPL\MIT\аналогичной и с нормальной реализацией через неизвестный мне графический движок. Раз плюнуть, чо уж там. Действительно, а зачем спрашивать комьюнити для этого, если таких игр полно в гугле и жрать попой можно.

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

Ну вот я возьму и за пару минут найду кроссплатформенную игру на SDL + C

за то время что ты ждал пока кто-то ее найдет за тебя — уже мог бы найти сам :)

с лицухой GPL\MIT\аналогичной

тебе же только посмотреть. если не драть оттуда код — то под любой лицензией годится.

и с нормальной реализацией через неизвестный мне графический движок.

как оценить нормальная реализация или нет?

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

это действительно так.

и вообще, иди ка ты на gamedev.ru, там полно туториалов как раз для тебя.

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

char *FULL_PATH = (char*) calloc((strlen(GAME_PATH) + strlen(IMAGE_PATH) + 1), sizeof(char));

strcat(FULL_PATH, GAME_PATH);

strcat(FULL_PATH, IMAGE_PATH);

Ололо, вот это быдлокод так быдлокод.

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

Тебе стоило бы почитать что-нибудь по OpenGL - кингу там, туториал, статьи или что-то в этом духе, и только потом спрашивать. И да, лорчую gamedev.ru

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

примеры есть на gamedev.ru, я ж тебе написал. там все есть — работа с opengl, экспорт моделек, загрузка моделек, как их рисовать, как их моделить в разных пакетах.. вообще у меня стойкое впечатление, что оно тебе просто не надо. иначе бы сам давно все нашел.

waker ★★★★★
()

NEHE, справа менюшка Legacy Tutorials. К большинству туториалов прилагаются примеры для linux, многие на SDL.

А как столкнёшься с проблемами масштабирования - допустим, пробуя таки-реализовать рендер моделей формата 3ds, используя только lib3ds для чтения этой бинарщины, а дальше структуры рисуя в ручную - приходи на C++. Могу даже курс лекций + примеры (под студию, но переносятся без особых проблем) дать.

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

Ещё советовал бы QtCreator как инструмент - при изучении удобная навигация и визуализация ошибок гораздо важнее чисто клавиатурного интерфейса, характерного для vim и emacs.

К QtCreator можно скачать встроенную доку по OpenGL и стандатной библиотеке C (вторая дока контекстная, т.е. можно выделить название функции в коде и нажать F1) вот отсюда.

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

В познавательных целях НУЖНО походить по граблям.

Ггг. [no offends]Мышы плакали, кололись... Ну и да. Дураки на своих ошибках учатся [/no offends]

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

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

не знаешь какой лучше - бери любой и мучайся^Wнаслаждайся. Где-то было... [автосрач]«Автомобили покупать нужно так: приходишь в салон, тыкаешь пальцем - „вот этот!“ И возвращаешься к более важным вопросам» (с)[/автосрач] Какая тебе разница, если ты ее не улавливаешь? :)

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

Ненене, теперь напрямую «images/*.bmp» работает. Когда сидел и ковырялся, то ../ и прочие варианты не срабатывали, видимо, из-за других багов.

Они и не должны были срабатывать - текущей (рабочей) для процесса будет та директория, из которой он был запущен. И положение исходника тут совсем не причем.
Дружище, у тебя неслабая каша в голове, а ты уже взялся игры писать. На матчасть бы лучше налегал.

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

char *FULL_PATH = (char*) calloc((strlen(GAME_PATH) + strlen(IMAGE_PATH) + 1), sizeof(char));

strcat(FULL_PATH, GAME_PATH);

strcat(FULL_PATH, IMAGE_PATH);

Ололо, вот это быдлокод так быдлокод.

enjoy your C, как грится.

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

Сейчас makefile в Ecplise создаётся при каждой компиляции и лежит в ./Debug/ Его можно перекинуть в корень вместе со всеми *.mk, либо как-то заставить эклипс генерировать копию в ./ ? Самому писать makefile невероятно лень, когда есть что-то на него похожее у IDE :c

ThisNameWasFree
() автор топика

У тебя описания всех коммитов - «Initital commit». Думаю, стоит там описать, что за изменение ты комитишь :)

ozkriff
()

Почему же, все-таки, не взять готовый движок? В том же Ogre это делается реально за 20 минут, и еще немного потратится на изучение способа экспортирования своих моделек из блендера (майи, макса).

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

Рано пока, я фигнёй маюсь в основном и перестаскиваю сорцы из угла в угол :D

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

И заодно как, чёрт бы его побрал, заставить Eclipse генерировать makefile за меня?

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

Не вижу такого вопроса. Но самый простой ответ я уже два раза писал: Ogre.

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

Да Ты что, готовые движки - это же прямая дорога из страны божественного и прекрасного ANSI C в адовый ад С++!

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

Скорее всего речь была о том, что я все файлы изначально создал как *.ccp && *.hpp, но надобности в этом не было :-/

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

О_О Всего пару минут как запилил ПЕРВЫЙ ЖЕ КОММИТ НА РУССКОМ(!!!), как сразу гневный пост об этом.

Чем табы плохи?

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

Все желающие могут настроить свой редактор как им понравится, особенно, если им не нравятся гипербольшие табы в стандартные 4 пробела. Ну устраивают они меня.

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

Мышы плакали, кололись...

Образование, конечно, не помешает.

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

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

энтерпрайзные велосипеды на

продажу

Поле для игры на OpenGL + SDL

/0 Благодаря тебе, день прожит незря, да:)

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