LINUX.ORG.RU
решено ФорумGames

Я хочу написать Псевдо-3Д игру на подобии Doom, Wolfenstein 3D, Duke Nukem и т. д.

 , , ,


1

3

Хотелось бы использовать Python и Pygame для этого. Эти игры вовсе не 3Д игры, а значит будут ли эти игры на Python также хорошо работать или нет?

Вот пример: https://youtu.be/yASop1CxXfE



Последнее исправление: ITerator (всего исправлений: 1)

Что значит псевдо-3Д? Кто тебе такое сказал? Обычное 3Д, просто в частности для doom для ускорения отрисовки были наложены существенные ограничения а также использование плоских объектов, снять которые удалось лишь существенным повышением системных требований в Quake 1.

Подумай, что тебе помешает создать аналогичный Doom-у движок на основе OpenGL 3D API? Ничего, что и доказывается многочисленными ремейками.

I-Love-Microsoft ★★★★★
()

2.5D так называются потому что у них игровая логика в 2D но рисуют они 3D. 2.5D игры не проще 3D игр, ну кроме того что физику как в DOOM1/2 можно за вечерок реализовать, а для полноценного 3D придется брать Bullet/ODE ну или писать свое.

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

linuhs_user
()
Последнее исправление: linuhs_user (всего исправлений: 2)
Ответ на: комментарий от I-Love-Microsoft

В те времена 3Д игр ещё не было. Поэтому люди пока ещё писали 2Д игры. И Doom 2Д игра но с иллюзией 3Д. Это называется Псевдо 3Д. Я имел ввиду что сможет ли Питон осилить это. Я считаю что должен, так как 3Д игры сложнее делать.

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

Шо 3D игра на питоне шо 2.5D, работать будет примерно одинаково. Разница будет в обработке мира (хотя возможно Bullet обработает его лучше чем ты свой 2D мирок, и 3D выйдет быстрее. А если еще и рендер будешь писать сам, софтверный какой нибудь то пондобится нехилый такой компьютер). Там все равно куча библиотек это биндинги к библиотекам на настоящих языках (C, C++). Тут зависит от текстур, количества объектов, итд.

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

Да и зачем тебе петон? Он же сложный, возьми лучше си. А то в питоне какие то итераторы, невидимые типы, еще чтоб усложнить указателей не добавили.

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

Текстура это двумерный массив цветов (RGB), картинка. В спрайт это полигон(ы) с натянутой на них картинкой (текстурой).
Все что рисуется это полигоны, полигоны это треугольники по сути, состоящие из 3 точек [X,Y,Z]. Вот что бы нарисовать квадрат нужно два треугольника. Вот пример:

A#######B
#......##
#.....#.#
#....#..#
#...#...#
#..#....#
#.#.....#
C#######D
Представь что это красный квадратик, вот он нарисован таким кодом:
A=какая-нибудь-координата
B=...
C=...
D=...

SetColor(red);
DrawPolygon(A,B,C);
DrawPolygon(C,B,D);

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

Судя по вашему комментарию, вы мазахист. Итераторы очень лёгкие! Я думал взять Си, но документацию хорошую не смог найти и указатели мало того что они не простые, так ещё и они обязательны.

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

2.5D так называются потому что у них игровая логика в 2D но рисуют они 3D. 2.5D игры не проще 3D игр, ну кроме того что физику как в DOOM1/2 можно за вечерок реализовать, а для полноценного 3D придется брать Bullet/ODE ну или писать свое

Что я только что прочитал?

a1batross ★★★★★
()

id Software открыла исходники движков Wolfenstein 3D, DooM и Quake 1-4. Можно просто сделать игру на них, и такие уже есть: FreeDoom и OpenArena.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от ITerator

Судя по вашему комментарию, вы мазахист.

Видишь эту ошибку? Это segment fault, сынок. Больше ничто в мире не пугает так. Я люблю зайти в GDB поутру. Однажды мы дебажили однин говнокод, двенадцать часов подряд. И когда всё закончилось, я запустил ее. Там уже не было ни одного выделения памяти, ни одного malloc. Но баги! Весь код был им пропитан. Это был баг… от переполнение стека! Когда-нибудь эта и стековая память закончится.

Итераторы очень лёгкие!

Нет.

но документацию хорошую не смог найти

Секунду.

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

они не простые

Это просто переменная с адресом в памяти, у нее даже методов нет, ты о чем вообще?

но документацию хорошую не смог

Расскажи что ты хочешь сделать, подробно. Поберу тебе инструменты.

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

Интерактивное обучение языка Си. Мне одни С++/С# попадаются. Желательно с директивами условной компиляции.

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

Это утверждение делает ваш комментарий ещё более идиотским.

Никто не спорит, что вы лучше Кармака, и напишите физ. движок за вечер. Ведь браузер за вечер вы уже написали.

RazrFalcon ★★★★★
()

Использование 2D вместо 3D не сделает питон быстрее. Используйте языки по назначению.

RazrFalcon ★★★★★
()

Гугли raycasting.

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

Но 2.5D игру я уже написал, вообще что в этом странного? Ты по сколько строк в день пишешь? Я по 2к могу набросать, не идеально отточенных по багам конечно. Может вы там со своими вимами пока наберете по 5 линий и день кончается.

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

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

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

Вы не понимаете проблему, но пытаетесь её решить. Я вам предлагаю решение.

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

зайдите в ЮТУБ по ссылке что я оставил.

Ох лол, я только сейчас зашел. Ну если ты не ставишь целью написать игру, то возьми game maker raycasting или типо того. Да и такое можно без указателей в сишке написать...

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

В каких случаях нужно обязательно применять указатели?

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

По ссылка какая-то извращенская игра. ГГ периодически фапает. Видимо, на пистон.

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

Я кажись понял откуда такая реакция. У DOOM был крутой BSP, а я про него ничего не говорил, и браузер я пишу не клон хромиума, а по своему виденью каким он должен быть. Уже кстати умеет CSS на элменты накладывать! Но надо переделать, избавиться от glib.

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

А что не так?

В DOOM действительно 3D было не совсем полноценное. В частности, там не было возможности сделать один коридор над другим. Карта мира была двумерной - вот только отрисовывался этот мир «объёмным» способом.

Настоящее 3D было в Descent (где это было настоящим прорывом, и многие в этот прорыв играть просто не осиливали) и немного погодя в Duke Nukem 3D (где платой за трёхмерность мира стала откровенная мультяшность графики). Ну и да, квака, которая уже жрала сильно больше.

hobbit ★★★★★
()
Ответ на: комментарий от deep-purple

Репа есть?

Какие профиты? Я вижу только замедление.

Покажи!

Если только лично, я же говорю переписывать нужно.)) Да там еще и ничего кроме неоптимизированного парсера HTML+CSS и нету, но html-parser не совсем прост, поддерживает empty tags (в том числе и по атрибуту), итд. А в CSS все селекторы с любым синтаксисом кроме attribute value. Еще заделал наследование наследуемых свойств и inerhit.

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

Хотя бы css 1.0 поддерживает полностью?

Нет конечно, а сколько дней с треда прошло? 2? Я написал на следующий день и сейчас лениво поправляю так как сплю днем, вот войду в режим и будет тебе CSS 1.0. И читал бы ты тред лучше, я не собираюсь многие вещи из HTML5/CSS3 поддерживать, так как считаю их «плохими». Над JS тоже сейчас задумался.

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

Мир(соответсвенно, вообще всё) во всех них трёхмерен. Везде он настоящий. Разница лишь в том как всё это выводилось и как с этим работали.

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

Ну пройтись и адекватно он может, но margin: 10px 10px 10px 10px; он нормально не обработает а просто в параметр style положит.

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

Ну он не совсем «без JS», просто поддержка JS там экспериментальная и отключаемая (второй пункт меня, кстати, радует). А каковы критерии «правильности»?

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

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

В DOOM(1/2) объекты по сути полигоны, разве что с высотой. Их можно представить ну к примеру вот так:

struct Wall { Point2D a; Point2D b; };
struct Object { Wall* walls; size_t walls_count; float bottom; float top; };
Где bottom это нижняя точка, а top верхняя.

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

Тебе шашки/ехать? Повторяю, PyOpenGL или даже PyGame - будет то что ты хочешь.

Ты сам в своей голове придумал это разделение 3D/псевдо-3D. Я с этим разделение не согласен. Вот соник - псевдо-3Д, только фон создает иллюзию хоть какого-то объема. Doom это самое 3Д высшей пробы, просто метод отрисовки упрощенный - нет многоуровневых и наклонных поверхностей.

Так что бросай споры о терминах, бери PyOpenGL/PyGame и давай наяривай игру. Будет работать как надо.

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