| Разработка и ромхакинг > Ромхакинг и программирование |
| какие программы использовать для создания своих игр? |
| << < (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, если он ещё не справился. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |