Разработка и ромхакинг > Ромхакинг и программирование
какие программы использовать для создания своих игр?
<< < (4/11) > >>
r57shell:
Эмм это вопрос спорный, если я правильно помню из курса операционных систем, то дрова работают напрямую с железом, и ктомуже они какбы в едре и тусят )). Поэтому дрова могут с лёгкостью генерировать BSOD-ы )).
Спорить не буду, т.к. давно это было, но останусь на своём мнении пока кто-то не переубедит ).
Mr2:

--- Цитата: r57shell от 27 Август 2010, 15:36:41 ---а называется это физика. В разных движках разная физика, основы - реальная )), а чаще всего реальную упрощают, так как сэмулировать реальную физику до "микрон" невозможно.
--- Конец цитаты ---
Поражаюсь твоей способности всё усложнять. :D
Это называется автомобиль.
Я думал что у движка тоже есть составляющие как и у автомобиля. :?
r57shell:
А, блин, это было в переносном смысле в представлении что движок это машина?) Нужно пояснять) Или я просто такой тупой что не осознал...
В каждом движке, свои запчасти... такчто, это уже к конкретному движку вопрос.
УльтраБлокС:

--- Цитата ---Я думал что у движка тоже есть составляющие как и у автомобиля.
--- Конец цитаты ---

На самом деле есть. Рендерер, Звуковая система, Движок физики, Скриптовая подсистема...
r57shell:
(А раз к конкретному движку вопрос, то вопрос ко мне только в случае: OpenGL, DirectX, Unity3D, с другими движками/API не знаком)

--- Цитата: УльтраБлокС от 27 Август 2010, 15:52:04 ---На самом деле есть. Рендерер, Звуковая система, Движок физики, Скриптовая подсистема...

--- Конец цитаты ---
Да, можно такое выделить). Но ты скорее всего автора вопроса не удивил)). Рендерер у всех есть, а вот остального ничего не обязательно. Если звук - то я с ним так и не разобрался... Всё руки не доходят. Одно известно - есть Listeners (слушатели), и ещё Sources (источники) звука. И они в пространстве размещаются, и всё становится тру )). Движок физики обычно состоит из CollisionDetection - регистрация столкновений и объектов для неё Colliders, и системы которая уже на столкновения отвечает (непомню названия). А про Render опятьже - к видяхе ). Scripts - скрипты это просто интерфейс для работы со всеми объектами представленными в движке. Не всегда конечно всё из скриптов доступно...
Mr2:

--- Цитата: УльтраБлокС от 27 Август 2010, 15:52:04 ---На самом деле есть. Рендерер, Звуковая система, Движок физики, Скриптовая подсистема...

--- Конец цитаты ---
Что делает скриптовая система?

--- Цитата: r57shell от 27 Август 2010, 15:50:40 ---В каждом движке, свои запчасти... такчто, это уже к конкретному движку вопрос.

--- Конец цитаты ---
К какому движку вопрос если его нет? :lol:
Допустим решил я сделать движок,не будим далеко ходить: для  [nes]BAttletoads.
Какие запчасти мне нужны? И коротко о том как они взаимодействуют и за что отвечают.
r57shell:
Выше написал, просто решил дополнить до того как ты ответил ). Прям догадываюсь до сопутствующих вопросов ).
УльтраБлокС:

--- Цитата ---Что делает скриптовая система?
--- Конец цитаты ---

Некоторые движки (например Unreal Engine) управляются скриптами. Можно добавлять свой код.
r57shell:
Кстати ещё бывает выделяют ParticleSystem - систему частиц.


--- Цитата: Mr2 от 27 Август 2010, 16:00:44 ---Допустим решил я сделать движок,не будим далеко ходить: для  [nes]BAttletoads.

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

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

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

r57shell:
Mr2, увы но даже это не всегда так ).

Добавлено позже:
Смотрится движок, определяются его возможности, и думается: хватит мне его или нет? И тогда уже решается.
Kostey D.:
Вы бы могли использовать своё время более продуктивно читая документацию и отзывы о конкретных продуктах.
УльтраБлокС:

--- Цитата ---Движок работает так?

for( ; ; ){
video();
audio();
physics();
}
--- Конец цитаты ---

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

--- Цитата ---Ну давайте в физике скажем "вот такой вот закон" а почему оно так, объяснять не будем.
--- Конец цитаты ---
Зачем, например, грузчику это знать? Он знает, что есть такой закон и прекрасно его ощущает, без всяких тонкостей.


--- Цитата ---Движки вытекают как следствие из свойств, и методов видеокарты.
--- Конец цитаты ---
Угу, а "методы" видеокарты из движения электронов и так далее... Давайте знать всё, вплоть до физических процессов, потом вернёмся к спецификации 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:

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

--- Конец цитаты ---
Ну а какой же тогда алгоритм у движка? o_0
УльтраБлокС:

--- Цитата ---Ну а какой же тогда алгоритм у движка?
--- Конец цитаты ---

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

--- Цитата: Mr2 от 27 Август 2010, 16:20:43 ---Ну а какой же тогда алгоритм у движка? o_0

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

--- Цитата: HoRRoR от 27 Август 2010, 16:18:10 ---Зачем, например, грузчику это знать? Он знает, что есть такой закон и прекрасно его ощущает, без всяких тонкостей.

--- Конец цитаты ---
Просто грузщик уже знает о гравитации на своём опыте, даже если он её не так называет. Может это не гравитация? Кто мне докажет что это именно она?! Просто по научному принципу, то что проверенно опытом - считается истинной.


--- Цитата: HoRRoR от 27 Август 2010, 16:18:10 ---Угу, а "методы" видеокарты из движения электронов и так далее... Давайте знать всё, вплоть до физических процессов, потом вернёмся к спецификации API и будем писать движок, не используя эти знания!
Далековато ты от сабжа уходишь, это совсем другая тема.

--- Конец цитаты ---
Теперь, вопрос, где я такое сказал? Ты отличаешь слово "принципы" от реализации до тонкостей?


--- Цитата: HoRRoR от 27 Август 2010, 16:18:10 ---Видимо, это неспроста.

--- Конец цитаты ---
Видимо.


--- Цитата: HoRRoR от 27 Август 2010, 16:18:10 ---Простейший пример отображения спрайта на 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 что такое текстуры, что такое текстурные координаты, камера, а точнее что её на самом деле нет, камеру придумали для упрощения, и т д. Что видеокарта не так работает как рендерят фильмы, и так далее, можно перечислять долго... а лучше почитать гденибудь там, где уже это всё описано, чем я тут буду всё это писать снова, хотя это уже есть.

Добавлено позже:

--- Цитата: HoRRoR от 27 Август 2010, 16:26:09 ---Всё очень просто:
1. Отображаешь текущую графику.
2. Параллельно обрабатываешь звук.
3. Просчитываешь физику (если есть), коллизии, значения, учитываешь нажатые клавиши и т.п. - в идеале это тоже идёт отдельным потоком, или во время работы GPU.
4. Кадр готов - выводишь графику на экран.

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

Добавлено позже:

--- Цитата: УльтраБлокС от 27 Август 2010, 16:23:02 ---Цикл примерно такой и должен быть.

--- Конец цитаты ---
Должность определяет автор).
Mr2:

--- Цитата: HoRRoR от 27 Август 2010, 16:26:09 ---Всё очень просто:
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:
r57shell, пока не предоставишь мне написанный тобой движок, буду считать тебя клоуном.


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

Перейти к полной версии