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)

И чтобы обязательно игрушка была кроссплатформенная

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

Eddy_Em ☆☆☆☆☆
()

1. sdl не годится для графона. даже не пытайся, сразу делай на opengl. в остальном торт.

2. я бы сделал линейным массивом структур, содержащих координаты.

3. в связи с 2 скорее нужно делать bvh-tree.

4. желание сразу создать что-то комплексное, и попытка делать слишком большие шаги.

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

Проблемка в том, что «базового» OpenGL'я (который кроссплатформенный) нифига не хватит! А все необходимые «фичи» на каждой платформе реализуются по-своему. Да еще и зачастую от железа зависят…

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

Это как это? У меня первые пробные чисто openGL'ные приложения спокойненько и с мышкой, и с клавиатурой работали…

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

Дык, там же хреновенькая 2D-графика. Для такой и webGL хватило бы (если бы ИИ не нужен был).

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

Если SDL не для графики, то как тогда лучше всего работать с моделями башенок\супостатов? OpenGL поддерживает загрузку и рендер .jpg\.png? Или надо картинки скармливать OpenGL после каких-то хитрых манипуляций? И вообще башенки планируются с минимальной анимацией, то если либо поворот имэйджа, либо каким-то образом .gif скормить, либо вообще спрайты? Не понимаю этого, нужны линки на матчасть.

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

OpenGL поддерживает загрузку и рендер .jpg\.png?

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

Стоит начать с готового графического (или даже игрового движка). Как всегда, советую unity3d. Если нужен результат, а не процесс, то лучше ничего не найти.

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

Стоит начать с готового графического (или даже игрового движка). Как всегда, советую unity3d. Если нужен результат, а не процесс, то лучше ничего не найти.

Одно нормальное предложение за весь тред.

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

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

dmfd
()

Я достаточно давно смотрел SDL, понравилось больше, чем glut. Если надумаешь что-то на нем делать, я хотел бы присоединиться. Но сначала для графики, имхо, проще взять тот же огр и не париться. Давно хотел сделать трехмерный вариант «шашек» в кубике - мне кажется, это проще, чем tower defence.

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

Я достаточно давно смотрел SDL, понравилось больше, чем glut. Если надумаешь что-то на нем делать, я хотел бы присоединиться. Но сначала для графики, имхо, проще взять тот же огр и не париться. Давно хотел сделать трехмерный вариант «шашек» в кубике - мне кажется, это проще, чем tower defence.

Присоединиться? Вэйт, я же тотал нуб, меня нельзя в команду. Никак. Ещё вдруг забью на полпути :с

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

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

Понял, что мне нужны паттерны, учу их. В августе примусь за огр

wingear ★★★★
()

SDL - торт.

Сам неспешно ваяю невнятный игровой распределённый долгострой на чистых православных Сях.

drSchur ★★★
()

Ищи кроссплатформенный OpenGL-движок.

Например, OpenSceneGraph.

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

В общем: если не жалко тащить на горбу и обучать откровенного начинающего, то я только «за» что-нибудь запилить совместно. Но предупреждаю сразу: я ничерта почти не знаю и со мной будет тяжко. Какое-то время :3

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

Но чтобы была не просто дорожка, по которой бегут 20 шариков, и по бокам башенки

начать все равно придется именно с этого.

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

и со мной будет тяжко.

Почитай его микробложек. Ну или на аватарку посмотри.

Вот сделает он вдоль, кто потом его быдлокод будет разбирать?

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

Почитал этот Juck — ну и быдлятник.

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

Угу. Пытаясь сделать своё поделие максимально кроссплатформенным, натолкнулся на такие рифы, шо мама дорогая.

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

это никуда не уйдет, когда на работе буду общаться с кодом, а небухами/манагерами - пока задача-минимум такова. Clojure друг показал, интересно

wingear ★★★★
()

1. SDL торт?

Зависит от задачи. Я от SDL отказался. Раньше использовал для инициализации окна и ввода (мыша, джойстик, клавиатура).

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

Вы хотите игровое поле строить из тайлов? На мой взгляд массив (двумерный или одномерный, значения не имеет) подойдет лучше. Быстрее и проще будет расчет для A*.

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

А там разве не A* с делением на области. Типа мип-мэпов?

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

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

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

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

Так и представляю себе мобильники и консоли с webgl.

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

Это как это? У меня первые пробные чисто openGL'ные приложения спокойненько и с мышкой, и с клавиатурой работали…

GLUT != OpenGL

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

Я про ARB и т.п. GLUT лишь облегчает взаимодействие с оконной подсистемой.

Как ARB поможет вам с инпутом или загрузкой имиджей?

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

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

Ну вебдев же, ещё бы не знать. Мне для начала нужно найти в себе силы сделать что-то посложнее, чем вращающийся кубик :-\

Банально ужасает объём матчасти, который нужно осиливать и не знаю с чего начать, как лучше писать код, какой движок использовать и вообще. Вот :с

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

Если SDL не для графики, то как тогда лучше всего работать с моделями башенок\супостатов?

SDL для графики. Растровой графики. Без поворота, скейла. Только альфаблендинг.
Но для спрайтов без поворотов и скейла в самый раз. Т.к. SDL_image даст возможность грузить имиджи в разных форматах и преобразовывать их к нужному формату текстуры.
В качестве бонуса - потоки, звук, мьютексы, инпут. И все это кроссплатформенно (как минимум для windows, linux, mac os x).

OpenGL поддерживает загрузку и рендер .jpg\.png? Или надо картинки скармливать OpenGL после каких-то хитрых манипуляций?

Нет напрямую не умеет. Да и не должен. Я использую libpng и jpeg + преобразования во время загрузки (не все железо умеет npot).

И вообще башенки планируются с минимальной анимацией, то если либо поворот имэйджа, либо каким-то образом .gif скормить, либо вообще спрайты?

Гиф тут не поможет. Да и не нужен это формат вам. Работайте с фреймами, упакованными в атлас.

Не понимаю этого, нужны линки на матчасть.

Читайте уроки NEHE.

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

Банально ужасает объём матчасти, который нужно осиливать и не знаю с чего начать, как лучше писать код, какой движок использовать и вообще. Вот :с

Дядь, ну а ты как думал? Я, кстати, раньше тоже пытался играться с 3D движками, а теперь я веб-программист ;)

Начинай потихоньку, с туториалов, примеров, разбора и допиливания демок. Через какое-то время сам поймёшь что «остыл» либо наоборот это «твое». Банальные вещи я написал, но всё же.

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

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

А есть такой парень, по имени David Olofson, которы написал врапер glSDL - интерфейс SDL, но все делается через OpenGL - тут и блендинг, и скейл, и вращение - чистая халява, все на железе.
Так что для новичка SDL + glSDL будет в самый раз.

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

Пытаясь сделать своё поделие максимально кроссплатформенным, натолкнулся на такие рифы, шо мама дорогая.

Да? На какие?

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

А масштабирование текстур? А буферы?

Врапер glSDL. Да и не факт, что ему все это будет нужно.

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

А нафига на мобильнике в игрушку играться?

Да я не настаиваю, не хотите - не играйтесь.

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

Но для спрайтов без поворотов и скейла в самый раз.

4.2 Попробуй блиттить каждый кадр спрайт размером хоть 800x600. Будут адские тормоза, при том что с помощью OpenGL таких же спрайтов можно рисовать десятки, да ещё и с аффиными преобразованиями без возни с rotozoom.

не все железо умеет npot

Срочно в музей несите.

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

4.2 Попробуй блиттить каждый кадр спрайт размером хоть 800x600. Будут адские тормоза, при том что с помощью OpenGL таких же спрайтов можно рисовать десятки, да ещё и с аффиными преобразованиями без возни с rotozoom.

В OGL вы тоже упретесь в филлрейт.
Впрочем ТСу за глаза хватит glSDL или даже чистого SDL. А вы можете продолжать дрочить на все современные фишки упуская время на разработку игры.

> не все железо умеет npot
Срочно в музей несите.

Вы совсем дурак? Такого железа валом. Особенно на мобильных платформах.

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

В Haskell для 2D-графики есть отличная обёртка GLUT - gloss, так что SDL мне больше не интересна.

Можно подумать, что я вас уговариваю или заставляю использовать SDL. Я, как написал в первом своем посте тоже давно ушел от SDL. Но у ТСа с SDL есть шанс сделать хоть что то.

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