Автор Тема: какие программы использовать для создания своих игр?  (Прочитано 42201 раз)

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

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
Эмм это вопрос спорный, если я правильно помню из курса операционных систем, то дрова работают напрямую с железом, и ктомуже они какбы в едре и тусят )). Поэтому дрова могут с лёгкостью генерировать BSOD-ы )).
Спорить не буду, т.к. давно это было, но останусь на своём мнении пока кто-то не переубедит ).

Онлайн Mr2

  • Пользователь
  • Сообщений: 1597
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
а называется это физика. В разных движках разная физика, основы - реальная )), а чаще всего реальную упрощают, так как сэмулировать реальную физику до "микрон" невозможно.
Поражаюсь твоей способности всё усложнять. :D
Это называется автомобиль.
Я думал что у движка тоже есть составляющие как и у автомобиля. :?

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
А, блин, это было в переносном смысле в представлении что движок это машина?) Нужно пояснять) Или я просто такой тупой что не осознал...
В каждом движке, свои запчасти... такчто, это уже к конкретному движку вопрос.

Оффлайн УльтраБлокС

  • Пользователь
  • Сообщений: 1166
  • Пол: Мужской
    • Просмотр профиля
Цитата
Я думал что у движка тоже есть составляющие как и у автомобиля.

На самом деле есть. Рендерер, Звуковая система, Движок физики, Скриптовая подсистема...

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
(А раз к конкретному движку вопрос, то вопрос ко мне только в случае: OpenGL, DirectX, Unity3D, с другими движками/API не знаком)
На самом деле есть. Рендерер, Звуковая система, Движок физики, Скриптовая подсистема...
Да, можно такое выделить). Но ты скорее всего автора вопроса не удивил)). Рендерер у всех есть, а вот остального ничего не обязательно. Если звук - то я с ним так и не разобрался... Всё руки не доходят. Одно известно - есть Listeners (слушатели), и ещё Sources (источники) звука. И они в пространстве размещаются, и всё становится тру )). Движок физики обычно состоит из CollisionDetection - регистрация столкновений и объектов для неё Colliders, и системы которая уже на столкновения отвечает (непомню названия). А про Render опятьже - к видяхе ). Scripts - скрипты это просто интерфейс для работы со всеми объектами представленными в движке. Не всегда конечно всё из скриптов доступно...
« Последнее редактирование: 27 Август 2010, 16:01:36 от r57shell »

Онлайн Mr2

  • Пользователь
  • Сообщений: 1597
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
На самом деле есть. Рендерер, Звуковая система, Движок физики, Скриптовая подсистема...
Что делает скриптовая система?
В каждом движке, свои запчасти... такчто, это уже к конкретному движку вопрос.
К какому движку вопрос если его нет? :lol:
Допустим решил я сделать движок,не будим далеко ходить: для  [nes]BAttletoads.
Какие запчасти мне нужны? И коротко о том как они взаимодействуют и за что отвечают.

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
Выше написал, просто решил дополнить до того как ты ответил ). Прям догадываюсь до сопутствующих вопросов ).

Оффлайн УльтраБлокС

  • Пользователь
  • Сообщений: 1166
  • Пол: Мужской
    • Просмотр профиля
Цитата
Что делает скриптовая система?

Некоторые движки (например Unreal Engine) управляются скриптами. Можно добавлять свой код.

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
Кстати ещё бывает выделяют ParticleSystem - систему частиц.

Допустим решил я сделать движок,не будим далеко ходить: для  [nes]BAttletoads.
Я бы делал такой движок из запчастей: система спрайтов, система частиц, HUD & GUI. Это из части  Render.
Потом логично надо было бы наделать всяких объектов типо Player, Enemy, и т д %). Загрузка карт... ну короче... архитектуру надо придумывать, а я не нанимался ).

Добавлено позже:
Кстати, надо бы отметить, что если платформа Сега или Денди, то там другие принципы, поэтому нужно уже смотреть если для Genesis то VDP - то что выводит графику, если денди то там тоже есть палюбому система. Видеокарта - это про компы восновном ). И кстати звук тоже в сеге и денди на своих системах поэтому тоже надо их смотреть, знание принципов на компах может только помочь.

Онлайн Mr2

  • Пользователь
  • Сообщений: 1597
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Движок работает так?

for( ; ; ){
video();
audio();
physics();
}
 :blush:


Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
Mr2, увы но даже это не всегда так ).

Добавлено позже:
Смотрится движок, определяются его возможности, и думается: хватит мне его или нет? И тогда уже решается.

Оффлайн Kostey D.

  • Emu-Land Team
  • Сообщений: 2979
  • Пол: Мужской
  • to destroy us all!
    • Просмотр профиля
Вы бы могли использовать своё время более продуктивно читая документацию и отзывы о конкретных продуктах.

Оффлайн УльтраБлокС

  • Пользователь
  • Сообщений: 1166
  • Пол: Мужской
    • Просмотр профиля
Re: какие программы использовать для создан&#
« Ответ #72 : 27 Август 2010, 16:17:18 »
Цитата
Движок работает так?

for( ; ; ){
video();
audio();
physics();
}

Это больше похоже на код эмулятора. Цикл "Считать инструкцию, выполнить инструкцию, обновить картинку с PPU и вывести звук" где каждый этап эмуляции выделен в отдельную процедуру. Однако надо ещё процедуры video(), audio() и physics() реализовать. Это похоже на main() процедуру.

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Цитата
Ну давайте в физике скажем "вот такой вот закон" а почему оно так, объяснять не будем.
Зачем, например, грузчику это знать? Он знает, что есть такой закон и прекрасно его ощущает, без всяких тонкостей.

Цитата
Движки вытекают как следствие из свойств, и методов видеокарты.
Угу, а "методы" видеокарты из движения электронов и так далее... Давайте знать всё, вплоть до физических процессов, потом вернёмся к спецификации API и будем писать движок, не используя эти знания!
Далековато ты от сабжа уходишь, это совсем другая тема.

Цитата
А за меня думать/говорить не надо (просто убивает количество людей которые это делают).
Видимо, это неспроста.

Цитата
Допустим решил я сделать движок,не будим далеко ходить: для  [nes]BAttletoads.
Какие запчасти мне нужны? И коротко о том как они взаимодействуют и за что отвечают.
Простейший пример отображения спрайта на OpenGL (без инициализации и загрузки текстур):
glBindTexture(GL_TEXTURE_2D, tex);
glBegin(GL_QUADS);
  glTexCoord2f( 0.0, 0.0 ); glVertex2f(0.0,  0.0);
  glTexCoord2f( 0.0, 1.0 ); glVertex2f(0.0,  64.0);
  glTexCoord2f( 1.0, 1.0 ); glVertex2f(64.0, 64.0);
  glTexCoord2f( 1.0, 0.0 ); glVertex2f(64.0, 0);
glEnd();

Онлайн Mr2

  • Пользователь
  • Сообщений: 1597
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Это больше похоже на код эмулятора. Цикл "Считать инструкцию, выполнить инструкцию, обновить картинку с PPU и вывести звук" где каждый этап эмуляции выделен в отдельную процедуру. Однако надо ещё процедуры video(), audio() и physics() реализовать. Это похоже на main() процедуру.
Ну а какой же тогда алгоритм у движка? o_0

Оффлайн УльтраБлокС

  • Пользователь
  • Сообщений: 1166
  • Пол: Мужской
    • Просмотр профиля
Re: какие программы использовать для создан&#
« Ответ #75 : 27 Август 2010, 16:23:02 »
Цитата
Ну а какой же тогда алгоритм у движка?

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

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Ну а какой же тогда алгоритм у движка? o_0
Всё очень просто:
1. Отображаешь текущую графику.
2. Параллельно обрабатываешь звук.
3. Просчитываешь физику (если есть), коллизии, значения, учитываешь нажатые клавиши и т.п. - в идеале это тоже идёт отдельным потоком, или во время работы GPU.
4. Кадр готов - выводишь графику на экран.

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
Зачем, например, грузчику это знать? Он знает, что есть такой закон и прекрасно его ощущает, без всяких тонкостей.
Просто грузщик уже знает о гравитации на своём опыте, даже если он её не так называет. Может это не гравитация? Кто мне докажет что это именно она?! Просто по научному принципу, то что проверенно опытом - считается истинной.

Угу, а "методы" видеокарты из движения электронов и так далее... Давайте знать всё, вплоть до физических процессов, потом вернёмся к спецификации API и будем писать движок, не используя эти знания!
Далековато ты от сабжа уходишь, это совсем другая тема.
Теперь, вопрос, где я такое сказал? Ты отличаешь слово "принципы" от реализации до тонкостей?

Видимо, это неспроста.
Видимо.

Простейший пример отображения спрайта на OpenGL (без инициализации и загрузки текстур):
glBindTexture(GL_TEXTURE_2D, tex);
glBegin(GL_QUADS);
  glTexCoord2f( 0.0, 0.0 ); glVertex2f(0.0,  0.0);
  glTexCoord2f( 0.0, 1.0 ); glVertex2f(0.0,  64.0);
  glTexCoord2f( 1.0, 1.0 ); glVertex2f(64.0, 64.0);
  glTexCoord2f( 1.0, 0.0 ); glVertex2f(64.0, 0);
glEnd();
Чего этот пример даст? Ну и что что он отрисует спрайт? И от этого человек будет знать как работают движки, гениально. А если DirectX? То всё, надо другой пример, и даже если ты его дашь, то понятности движков - не прибавит. А если про видеокарту почитать, то можно узнать что такое Mesh что такое текстуры, что такое текстурные координаты, камера, а точнее что её на самом деле нет, камеру придумали для упрощения, и т д. Что видеокарта не так работает как рендерят фильмы, и так далее, можно перечислять долго... а лучше почитать гденибудь там, где уже это всё описано, чем я тут буду всё это писать снова, хотя это уже есть.

Добавлено позже:
Всё очень просто:
1. Отображаешь текущую графику.
2. Параллельно обрабатываешь звук.
3. Просчитываешь физику (если есть), коллизии, значения, учитываешь нажатые клавиши и т.п. - в идеале это тоже идёт отдельным потоком, или во время работы GPU.
4. Кадр готов - выводишь графику на экран.
Это один из варьянтов, можно придумать тысячу других. Опятьже это только возможный варьянт в движке.

Добавлено позже:
Цикл примерно такой и должен быть.
Должность определяет автор).

Онлайн Mr2

  • Пользователь
  • Сообщений: 1597
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Всё очень просто:
1. Отображаешь текущую графику.
2. Параллельно обрабатываешь звук.
3. Просчитываешь физику (если есть), коллизии, значения, учитываешь нажатые клавиши и т.п. - в идеале это тоже идёт отдельным потоком, или во время работы GPU.
4. Кадр готов - выводишь графику на экран.
Что то вроде этого?
for( ; ; ){
  physics();
  video();
  audio();
}

phisics(){
 player position
 player action
 enemy position
 enemy action
 background_landscape
 background_action
}

video(){
 Sprites     // каждый спрайт загружаем в отдельный массив
 hero_1 [5000];
 hero_2 [5500];
 enemy_1 [520];
 enemy_2 [710];
 Background // Загружаем в массив весь Background, или почастям.
}

audio(){
 music // загружаем трэк и проигрываем
 sounds // загружаем звуки и проигрываем в зависимости от Phisics
}

2. Параллельно обрабатываешь звук.
Это как. Ведь комп обрабатывает данные последовательно.
Разве можно обрабатывать графику и параллельно звук?
Можно как то одновременно запустить циклы параллельно друг другу?
Я думал что пока цикл не пройдёт по  physics и video звук остаётся нетронутым... o_0

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: какие программы использовать для создан&#
« Ответ #79 : 27 Август 2010, 16:50:54 »
r57shell, пока не предоставишь мне написанный тобой движок, буду считать тебя клоуном.

Цитата
Это как. Ведь комп обрабатывает данные последовательно.
Разве можно обрабатывать графику и параллельно звук?
Можно как то одновременно запустить циклы параллельно друг другу?
http://ru.wikipedia.org/wiki/Многопоточность
В случае с OpenGL, например, во время работы GPU простаивает CPU, хотя вроде было какое-то расширение для параллельных вычислений. Поэтому разумно что-то считать в параллельном потоке. В DirectX присутствуют средства для явного распараллеливания вычислений - ты ставишь всю графику в очередь на прорисовку, запускаешь обработку GPU, выполняешь код CPU, а потом уже ждёшь завершения работы GPU, если он ещё не справился.

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
r57shell, пока не предоставишь мне написанный тобой движок, буду считать тебя клоуном.
Тогда я клоун, т.к. я тебе ничего не должен. Да время терять, на спор, уже надоело. Такчто сейчас вполне имею право отвечать только тем, кто спрашивает). Фаллометрией тоже заниматься не охото.

Онлайн Mr2

  • Пользователь
  • Сообщений: 1597
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
r57shell, пока не предоставишь мне написанный тобой движок, буду считать тебя клоуном.
http://ru.wikipedia.org/wiki/Многопоточность
В случае с OpenGL, например, во время работы GPU простаивает CPU, хотя вроде было какое-то расширение для параллельных вычислений. Поэтому разумно что-то считать в параллельном потоке. В DirectX присутствуют средства для явного распараллеливания вычислений - ты ставишь всю графику в очередь на прорисовку, запускаешь обработку GPU, выполняешь код CPU, а потом уже ждёшь завершения работы GPU, если он ещё не справился.
А в NES тоже используются параллельные вычисления?

Цитата: r57shell
Такчто сейчас вполне имею право отвечать только тем, кто спрашивает).
Правельный алгоритм движка я написал в посте №78?

Оффлайн УльтраБлокС

  • Пользователь
  • Сообщений: 1166
  • Пол: Мужской
    • Просмотр профиля
Re: какие программы использовать для создан&#
« Ответ #82 : 27 Август 2010, 17:06:47 »
Цитата
А в NES тоже используются параллельные вычисления?

Нет вроде. "Парралельные вычисления" как я понимаю это технологии вроде NVidia CUDA.

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: какие программы использовать для создан&#
« Ответ #83 : 27 Август 2010, 17:09:24 »
Цитата
А в NES тоже используются параллельные вычисления?
Да, как и везде. Отдельно PPU - видеопроцессор, отдельно pAPU - звуковой процессор. Всё это управляется с помощью CPU.

Цитата
Нет вроде. "Парралельные вычисления" как я понимаю это технологии вроде NVidia CUDA.
CUDA - это возможность использовать видеокарты не только в вычислениях графики.

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
А в NES тоже используются параллельные вычисления?
Незнаю про NES - не делал ничего с ним, но вот про Genesis могу сказать что VDP работает паралельно с основным циклом, и Z80 вроде тоже.

Правельный алгоритм движка я написал в посте №78?
Эмм, всё зависит от реализации. Может в твоём случае он правильный. Самому надо тоже уметь думать. И нужно не боятся делать попытки чего-то сделать (конечно если это не про суицид :D).

Онлайн Mr2

  • Пользователь
  • Сообщений: 1597
  • Пол: Мужской
  • Free roaming sorcerer
    • Facebook
    • Просмотр профиля
Да, как и везде. Отдельно PPU - видеопроцессор, отдельно pAPU - звуковой процессор. Всё это управляется с помощью CPU.
Да, как и везде. Отдельно PPU - видеопроцессор, отдельно pAPU - звуковой процессор. Всё это управляется с помощью CPU.
Ага, ястно. То есть определённой командой данные отправляются на обработку звуковому процессору, который начинает параллельно центральному процессору обрабатывать данные.То есть всё - таки центральный процессор не может параллельно обрабатывать два цикла одновременно. Только поочерёдно.

Эмм, всё зависит от реализации. Может в твоём случае он правильный.

Я про суть. По такому алгоритму пишутся движки, или как то подругому?
Самому надо тоже уметь думать.

Как в анекдоте:"что тут думать сматываться надо!"


Оффлайн Kostey D.

  • Emu-Land Team
  • Сообщений: 2979
  • Пол: Мужской
  • to destroy us all!
    • Просмотр профиля
Mr2, иди книжку читай, я бы не советовал учить такие вещи от случайных людей с форума.

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Цитата
То есть всё - таки центральный процессор не может параллельно обрабатывать два цикла одновременно. Только поочерёдно.
Одно ядро не может выполнять параллельно разные потоки кода, но понятия параллельных вычислений или параллельной обработки несколько иные. Два цикла можно обрабатывать параллельно, если выполнять их по частям поочерёдно. У тебя же на компьютере выполняются параллельно десятки программ и процессов.

Mr2, иди книжку читай, я бы не советовал учить такие вещи от случайных людей с форума.
Лучше что-нибудь проверенное, а то много нынче всяких спициалистав-песателей. По статьям и то надёжней...

Оффлайн aptyp

  • Пользователь
  • Сообщений: 6263
    • Просмотр профиля
Есть книги по C касательно написания игр

Оффлайн CrazyMax

  • Пользователь
  • Сообщений: 922
  • Пол: Мужской
  • DeSmuME Team
    • Просмотр профиля
r57shell, ты о чем? Все что ты написал о "движке", ты написал о API.
Движок это совсем другое, ты можешь в своем движке использовать это API.
А движок - это спрайтовая систем (не просто вывод на экран, а например в объекте спрайта хранить его характеристики - id, анимацию, аффект вывода и т.д.), звук, физика, скрипты, файловая система...
И ты его можешь использовать для написания не конкретной игры.

Mr2, то что тебе написал HoRRoR - это главный цикл твоей игры и он пишется в "игре", а не в движке.
Маленький пример:
Цитата

void main_loop()
{
   Движок->gpu->init();
   Движок->audio->init();
и т.д.
  for (;; )
  {
    Движок->gpu->addSprite(…);
    Движок->audio->loadWAV(…)
   Движок->gpu->draw();
   If (…) Движок->audio->playSound(1);
  }
И т.д.
}

Незнаю, может не очень доходчиво, но где-то так :)
« Последнее редактирование: 27 Август 2010, 18:41:46 от CrazyMax »