LINUX.ORG.RU

Разработка очередной унылой игрушки. Нужны советы. Автор нуб

 , ,


1

4

Дорогой ЛОР, такими вот печальными ночами с ноутом и пакетом мангового сока рядом, я задумываюсь о том, что меня задолбало лепить сайтики на похапэ, ковырять сервачки, и пора бы мне начать нагибать эту голактеку со стороны десктопных (и не очень) приложений. За сим была рождена говноидея о создании какой-нибудь игрушки. В мозгу родился хитрый план написать какой-нибудь откровенно дибильный Tower Defence. Но чтобы была не просто дорожка, по которой бегут 20 шариков, и по бокам башенки, а с полноценным выносом мозга: чтобы было поле размером X на Y, чтобы юзер сам мог строить башенки, чтобы супостаты могли рассчитать кратчайшее расстояние до выхода и продвигались оптимальным путём. И чтобы обязательно игрушка была кроссплатформенная, дабы нерадивые дети, случайно скачавшие эту говноигру могли насладиться всеми багами, которые мне лень было (будет?) исправить, на Linux'e, W$, Android'e и порождении Стива Джобса.

Путём нехитрого гуглежа был найден SDL, который обещает несметные богатства, корованы и девственниц для всех платформ сразу.

Теперь остро стал вопрос технической части и оптимального выбора:

1. SDL торт?

2. Реализацию поля игры лучше делать двумерным массивом, двунаправленным списком, вектором или ещё какой приблудой?

3. A*, алгоритм Дейкстры или ещё что-то? Если у кого-то есть аналог алгоритма из Warcraft 3, то буду безмерно рад.

4. Что мне нужно знать и с чем ещё я обязательно столкнусь, что вызовет у меня острое желание прострелить коленку и вернуться к вебдеву?



Последнее исправление: ThisNameWasFree (всего исправлений: 2)
Ответ на: комментарий от andreyu

Вы совсем дурак?

npot воспринималось как чудо во времена DirectX 8, емнип.

В OGL вы тоже упретесь в филлрейт.

Конечно, рано или поздно. Только для этого нужно ещё постараться. А в 2D графике такой ситуации вообще пройти не может, если рендер писал не полный идиот.

Особенно на мобильных платформах.

Ненужны.

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

Рендеринг квада с npot-текстурой - «современная фишка»?

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

npot воспринималось как чудо во времена DirectX 8, емнип.

Вы все еще о кроссплатформенных приложениях говорите? Про мобильники вам еще раз напомнить? Про чипы от интел вы тоже не знаете?

Конечно, рано или поздно. Только для этого нужно ещё постараться. А в 2D графике такой ситуации вообще пройти не может, если рендер писал не полный идиот.

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

Ненужны.

О да, авторитетное и обоснованное мнение.
Вы бы лучше не позорились со своими знаними.

Рендеринг квада с npot-текстурой - «современная фишка»?

А блит npot сурфейса тут хуже? Вы приводили в пример буфера, зачем они нужны ТСу? Может и шейдеры ему сразу прикажете использовать?

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

О да, там же компишляции нет. Ядро нынче пересобирается за 15 секунд, но все по-прежнему ужасно боятся компишляции под платформу и дальнейшего распространения установщика - ведь как же, в винде при установке нужно было столько всего понажимать, да ещё 20 минут следить за процессом.

Совет прост - делать 1-click установку с прогресс баром где-нибудь в трее или в уведомлениях (KDE/новой версии макоси) и более webgl нинужен.

anonymous
()

Что мне нужно знать

Начни с тетриса, а еще лучше, с крестиков-ноликов. Как только оно заработает на всех необходимых тебе платформах (можно ограничится хотя бы 2-я для начала), можно будет начинать пилить TD. К тому времени многие вопросы уже разрешаться сами.

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

«базового» OpenGL'я (который кроссплатформенный) нифига не хватит

Можно примеры? Для чего конкретно базового OGL может не хватить в плане вывода графики на экран?

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

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

Ну так значит с таких мобильников звонить только нужно. На PC рендеринг screen aligned quad, да ещё и с шейдером, делается несколько раз за кадр, когда цепочка постпроцессинга идет. И никто на fillrate не жалуется.

А блит npot сурфейса тут хуже?

Вопрос был конкретно про SDL. И конкретно про SDL я могу сказать: да, гораздо хуже.

Вы бы лучше не позорились со своими знаними.

Скромно скажу, что про ваше мерзкое 3D я знаю довольно много, гораздо больше чем хотелось бы.

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

Для чего конкретно базового OGL может не хватить в плане вывода графики на экран?

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

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

Может и шейдеры ему сразу прикажете использовать

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

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

Ну так значит с таких мобильников звонить только нужно. На PC рендеринг screen aligned quad, да ещё и с шейдером, делается несколько раз за кадр, когда цепочка постпроцессинга идет. И никто на fillrate не жалуется.

Вы один из тех разработчиков, которые гонятся за новым железом потому, что на «старом» их приложение не работает?

Вопрос был конкретно про SDL. И конкретно про SDL я могу сказать: да, гораздо хуже.

Ну-ну. Может тесты проведете на одной и той же платформе с SDL и OGL? Сурфейсы и текстуры в обоих тестах разместите в видеопамяти. Сравните результаты, может что то новое для себя откроеете.

Вы еще забыли о том, что предлагая ТСу чистый OGL ему нужно с ним разобраться - научиться грузить текстуры (с учетом pot), разобраться с текстурными координатами, экранными координатами, матрицами, установкой вьюпорта, камеры...
В случае с SDL он загрузит сурфейс, сделает ему блит. Все. Дальше он будет заниматься логикой игры.

Скромно скажу, что про ваше мерзкое 3D я знаю довольно много, гораздо больше чем хотелось бы.

Про мое 3D? Знаете вы? Где вы прочли, что ТС знает столько же, сколько и вы?

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

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

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

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

Если делать через шейдеры, затем будет проще портировать на айфоны и получить после этого сотни нефти.

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

Если делать через шейдеры, затем будет проще портировать на айфоны и получить после этого сотни нефти.

А кто сказал, что нужно неприменно использовать OpenGL ES 2, вместо OpenGL ES 1?

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

SDL штука приятная, но в версии 1.2 нет хардварного ускорения 2д.

Хардварный блит там есть. Блита с поворотом или скейлом, конечно, нет.
Опять же SDL 1.3 умеет OGL и D3D.

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

OpenGL ES 1

Устройство с opengl es 2.0 не обязано поддерживать 1.0.

И вообще, никто не говорит про ручную возню с gl* функциями, можно использовать библиотеку, в которой всё это аккуратно обёрнуто, например под ведроид (и под ios в некоторой перспективе) есть няшный libgdx.

PolarFox ★★★★★
()

Многовато сленга.

SDL слишком низкоуровневый для такой задачи, да и вообще годится только как тонкий слой для инициализации OpenGL и получения событий с устройств ввода. Попробуй лучше какой-нибудь Allegro или ClanLib.

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

Ну-ну. Может тесты проведете на одной и той же платформе с SDL и OGL? Сурфейсы и текстуры в обоих тестах разместите в видеопамяти. Сравните результаты, может что то новое для себя откроеете.

Я и проводил вообще-то.

Про мое 3D?

«это ваше x» - это такой распространённый речевой оборот, который показывает нежелание иметь что-то общее с x.

Вы один из тех разработчиков, которые гонятся за новым железом потому, что на «старом» их приложение не работает?

Я, во-первых, не разработчик, во-вторых, я просто люблю изучать новое.

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

Еще есть отличнейший Cocos2d, но не уверен, насколько его десктопная версия функциональна. В последний раз, когда я запускал его демки, были проблемы как минимум с отображением текста.

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

Устройство с opengl es 2.0 не обязано поддерживать 1.0.

Где такое написано? Это как железо под OGL 3 не обязано поддерживать OGL 1?

И вообще, никто не говорит про ручную возню с gl* функциями, можно использовать библиотеку, в которой всё это аккуратно обёрнуто, например под ведроид (и под ios в некоторой перспективе) есть няшный libgdx.

Тут говорят о начинающем разработчике, который хочет написать игру. Почему ему начинают советовать то, что ему явно сейчас не нужно, я понять не могу.

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

> Ну-ну. Может тесты проведете на одной и той же платформе с SDL и OGL? Сурфейсы и текстуры в обоих тестах разместите в видеопамяти. Сравните результаты, может что то новое для себя откроеете.
Я и проводил вообще-то.

В обоих случаях текстуры были в видеопамяти?
Что то я очень сомневаюсь в адекватности ваших тестов. Филлрейт для всех способов один.

Я, во-первых, не разработчик, во-вторых, я просто люблю изучать новое.

Изучать и использовать для достижения результата несколько разные вещи. Если ТС, следуя вашему совету, будет изучать что то новое, то игру он никогда не закончит.

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

Где такое написано?

Ну как бы в ogl es 1.0 есть много того, что выпилили в ogl es 2.0, соответственно и железки для второго в некотором плане могут быть проще.

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

Еще есть отличнейший Cocos2d, но не уверен, насколько его десктопная версия функциональна. В последний раз, когда я запускал его демки, были проблемы как минимум с отображением текста.

Как то мне его рекомендовали. Попробовал я это чудо (в том числе и его родные демки), до производительности и удобства моего движка ему как до луны.

Тот, кто мне его рекомедовал (и выпустил на нем игры), недавно сказал забавную фразу - «ну и говно же, куча ограничения и кривого кода; поддерживать свой движок гораздо дешевле, чем править этот».

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

Ну как бы в ogl es 1.0 есть много того, что выпилили в ogl es 2.0, соответственно и железки для второго в некотором плане могут быть проще.

Выпилили из ES2, но не значит, что отрезали от ES1. Если не нужны шейедры, то по производительности они отличаются не критично.
Впрочем, на девайсах, которые поддерживают ES2, ES1 делается через ES2 внутри драйвера.

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

да в силе, я только до компа добрался. Только у меня сейчас в фоне висит: 1)плагин для сайта, нужный заказчику; 2)задание по курсам С++ местной конторы, куда хочу попасть на работу; 3)собственное задание по книге «Inroduction to design patterns with Qt», но у этого наименьший приоритет; 4)работа, на которой надо появляться и быть 8 часов в день, хотя работать несколько меньше. Но это всё поддается оптимизации. Пиши на почту.

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

В обоих случаях текстуры были в видеопамяти?

HW_SURFACE, или как там его.

Филлрейт для всех способов один.

Блиттинг в SDL делается OpenGL'ным растеризатором? Только в этом fillrate будет одинаковым.

dmfd
()

А вообще, ТС обязательно нужны плюсы, что ли? Почему бы не взять что-нибудь попроще, что позволяет гораздо быстрее достичь желаемого результата? К примеру, Python с библиотекой pyglet или движок love2d. Их производительности и возможностей вполне достаточно для того, что хочет ТС, а о всяких OpenGL при их использовании можно практически не задумываться (несмотря на то, что обе библиотеки основаны именно на нем). Если нужна поддержка андроида, то вышеназванный libgdx очень даже неплох, хотя и не такой высокоуровневый.

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

Единственный кроссплатформенный вариант — браузерная игрушка на webGL.

Лолшто? У меня, например, WebGL пинками работать не заставишь.

buddhist ★★★★★
()

SDL торт?

Один из самых тортовых тортов. Если хотите, взгляните еще на Allegro.

Реализацию поля игры лучше делать двумерным массивом, двунаправленным списком, вектором или ещё какой приблудой?

Линеаризованным двухмерным массивом.

A*, алгоритм Дейкстры или ещё что-то?

Я бы А* взял...

Tower Defence

Tower Assault сделайте же, ну :)

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

аа, я забыл про «виден только вам и модераторам») gruz103 at gmail.com

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

Счасс, шесть сек, тормоза на велике подтяну токмо.

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

Любопытно, в пользу чего?

В пользу нативной реализации для каждой платформы.

andreyu ★★★★★
()

У Вас лурчанка. Обратитесь к врачу

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

В OGL вы тоже упретесь в филлрейт.

Конечно, рано или поздно. Только для этого нужно ещё постараться. А в 2D графике такой ситуации вообще пройти не может, если рендер писал не полный идиот.
Рендеринг квада с npot-текстурой - «современная фишка»?

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

Esh ★★★★
()

ТС, у тебя проблема не с SDL, а в целом с опытом и знанием языка программирования. Бери SDL, делай как можешь - через год будешь смеяться над этим сообщением.

Esh ★★★★
()

Рыбято, начал тут быдлокодить потихоньку. Ядро удачно загребает 100% ресурсов и спустя 3-4 минуты работы ОСь уходит в экстренный халт по температуре. Нид хелп, сам ничего путного придумать не могу, проблема явно с циклом по событиям, но не представляю как это чудо переписать.

Залил всё на https://github.com/ThisNameWasFree/TowerDefence Буду благодарен если кто-то пнёт в нужном направлении.

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