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

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

 , , ,


1

3

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

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



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

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

Так там даже alert нету, только document.write вроде, лол. Я хочу AJAX+DOM хоть какой то.

А каковы критерии «правильности»?

«Слишком сложно!», «Это тут не должно быть». Ну например видео в браузере, лучше сделать возможность открывать видео в mpv каком нибудь, так же со звуком. WebGL, canvas тоже выкину, хотя наверное стоит прикрутить возможность добавлять плагины, пока не придумал в каком виде.

Также я не понял, каким образом

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

облегчает синхронизацию исходников на всех поддерживаемых платформах

А я всегда так делал, это «плохо»?

 
#ifndef PLATFORM_A
...
#elseif PLATFORM_B
...
#endif

Ну послезавтра/завтра переписывать буду, подумаю. Git сейчас выбирают, да?

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

А я его и не сохранил пока систему переустанавливал...))

Выглядит так будто я вру, поэтому вот тебе мой предыдущий «опыт». http://ibb.co/jTPNFx вот он убийца Servo, пока его писали все растеры дрожали. В отличие от Servo в Cervo js-движок написан на языке браузера. Тут хоть рендер есть, правда без CSS, зато script и event click на элементы работает. Я не троль, все пишется, все делается!

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

Может ты наконец заглянешь в сорцы и не будешь пытаться умничать? Потому что с фразы «объекты по сути полигоны, разве что с высотой» я аж закашлялся.

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

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

Как раз это можно было бы к NetSurf прикрутить.

Постоянно сохранять напрягает.)

Это оно как раз напрягает, когда руками сохранять надо, а не через коммиты. Или ты из тех, кто вообще «ещё не делает бэкапы»?

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

Пиши на родном, никто не заставляет себя насиловать. Местных троллей шли лесом. Наличие VCS и язык коммитов ортогональны, вообще-то. А само по себе описание дисциплинирует.

А я всегда так делал, это «плохо»?

Я не про то, как ты обеспечиваешь кроссплатформенность в исходном коде, а про то, как ты сам код перешвыриваешь.

Git сейчас выбирают, да?

То, что тебе удобнее, то и выбираешь. У меня на работе вообще SVN, но там распределённость неактуальна, да.

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

Как раз это можно было бы к NetSurf прикрутить.

Ну так мне JavaScript хочется.)

Это оно как раз напрягает, когда руками сохранять надо, а не через коммиты. Или ты из тех, кто вообще «ещё не делает бэкапы»?

Cervo1, Cervo2, Cervo3...) Еще ветки есть! CervoJs, CervoStringTag

То, что тебе удобнее, то и выбираешь.

Окай, я думал там есть «самый лучший» и «устаревшие».)

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

Ну так мне JavaScript хочется.)

Так никто не запрещает работать над поддержкой JS в NetSurf.

Нет-нет, я не говорю, что твой проект «не нужен». Вполне может быть, что у него будут свои фишки. Просто когда проект без очень серьёзной причины делается с нуля - гораздо больше шансов через некоторое время получить 1001-й заброшенный велосипед.

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

А горку в DOOM можно сделать? А многоэтажку? Пускай рисуется криво, можно? Нет - значит это 3D с ограничениями. Ну как его еще назвать то? Ну я считаю так, и усе. 2.5D еще называют, или можно как то по другому это описать?

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

Так никто не запрещает работать над поддержкой JS в NetSurf.

Мне не нравится то как он написан, какой то старосишный стиль, вот nginx по моему хорошо написан.

Нет-нет, я не говорю, что твой проект «не нужен»

Да, я понимаю. Причины в том что NetSurf есть, но пользоваться им нельзя, еще и медленный он, думаю рендер какой нибудь замудренный написать.

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

Я уже ответил на это и повторяться не буду. Хочешь — перечитай мои сообщения.

Ну я считаю так

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

Ничего страшного, опыт же.

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

перечитай мои сообщения.
с околонулевыми знаниями написать

Прочитай хотя бы свой ответ в моем треде браузерном... В игнор.

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

Я тоже. Просто ТС мается дурью, выдумав сорта тридэ... Нет такого якобы псевдо 3Д, которое не может быть нарисовано OpenGL-ем.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от linuhs_user

Чот на первой картинке палемун светится.

На второй ок, верится.

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

Нет, я не только интересуюсь. И критиковать буду, с аргументами. Лично мой интерес — ксс парсинг, селекторы и их объектное (структурное) представление после парсинга. На чистых сях, да.

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

Ага, а игнор что бы ты не погружал меня в депрессию с моей тонкой душевной организацией. Вообще всегда удивляли те кто постоянно отговаривают, это менталитет краба? Меня реально от всех моих проектов отговаривали (если я говорил о них на всяких форумах), даже по началу «друзья» которых я удалил из ICQ. Вот браузер, что мне помешает? Ничего, это ты просто «краб», я могу сделать apt-get install qtcreator и кинуть на форму QtWebBrowser или что там, все готово (конечно это не то что я хочу, но не суть). Вот будут сложности в браузере, возьму готовое, но сложностей не будет, все уже написанно в базовом виде, надо только переписать старые вещи и добавить функционал. Ну разве что всякие Cookie, Gui, Settings, Plugins из нового. Только для написания браузера надо терпение, а все это «ты дурак», «ты ничего не сможешь» очень его убивают.

Или ты сможешь назвать что мне помешает?

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

сможешь назвать что мне помешает?

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

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

Отсутствие свободного времени

До весны буду сидеть дома, а потом переселяюсь в лес. Так что времени у меня можно сказать целая жизнь...

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

Ну тогда только удачи. И жду код в личку. Я даже что-то архитектурно подсказать могу. Понравится — запользуешь.

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

В дюке не было видимых одновременно сектора-над-сектором. Но зачатки для этого были благодаря портальной архитектуре. Уже в redneck rampage эту возможность использовали на полную.

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

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

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

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

селекторы

По памяти как то так, сейчас думаю сделать html_tag_t где будет представление в виде строчки и в виде enum html_tag {body,title}.

struct select {
    type = { BY_TAG, BY_ID, BY_CLASS, BY_TAG_AND_CLASS, ... };

    /* key - просто тэг или тэг в таком выражении "tag#id" */ 
    String key;

    /* value - class, id */
    String value;
};

struct selector {
    /* path: div class id, list: div, class, id */
    type = {PATH, LIST}; 
    Array(select) selects;
};

Пойду разбираться с гитом тогда.

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

Мне трудно формулировать, получается сумбурно, т.к. кода (архитектуры) я не видел.

html_tag_t

Чому не (а-ля наследственно):

dom_node_t
    -> dom_comment_t
    -> dom_text_node_t
    -> dom_attr_t
    -> dom_element_t
        -> dom_document_t

? Обработку чистого ХМЛ то закладывать надо сразу.

enum html_tag {body,title}

Ну, только ради tag_name_get(const dom_element_t *elem) где в элеме тип из енама а в геттере по енаму возврат известного имени. Другого применения на быстрый взгляд не вижу.

А чому селекторы не:

struct selection {
    String key; // только ради посмотреть
    // не важно, хоть BY_ZHOPA,
    // варианта только два: геттером их нашли или не нашли
    // и тут или пусто или густо
    dom_element_t **nodes // или лево-право, главное тогда не путать с сиблингами
}
?

Возможно, открою тебе тайну. Важную.

Любой селектор, например «div#foo .bar > h1 .bazz» ищщеца справа налево, каждым проходом откидывая не подошедшие элементы.

И еще вот, смотрел ли ты что такое xpath?

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

Чому не (а-ля наследственно):

Так tag это не HtmlElement это поле в HtmlElement, оставлять только ENUM_HTML_TAG_BODY нельзя, по строкам медленно. Нужно что бы было int tag_get_enum() и char* tag_get_enum() второе для js, первое для рендера итд.

Обработку чистого ХМЛ то закладывать надо сразу.

Он у меня адекватно парсится в HTML деревце.

А чому селекторы не:

Selector это описание вот такой фигни «#menu .class», по ней потом можно найти html_elements. Зачем там dom_elements? Это может и архитектурно правильно но не особо удобно.

справа налево

А смысл?

И еще вот, смотрел ли ты что такое xpath?

неа

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

Посмотрел я что такое xpath, не понял зачем это мне, без подтекста. Я знал что XML и HTML разные вещи, но не думал что настолько.

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

на подобии

Не взлетит.

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

второе для js, первое для рендера итд

Ок, вроде мы об одном разными словами.

архитектурно правильно но не особо удобно

Ты прав если там у тебя продумано иначе в угоду ништяков в других местах о которых я не в курсе.

А смысл?

Типа штандартен же.

XML и HTML разные вещи, но не думал что настолько

Не, хтмл же подвид хмл. Икспач — там можно подглядеть алгоритмы поиска в дереве.

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

Икспач — там можно подглядеть алгоритмы поиска в дереве.

А окей, посмотрю.

Типа штандартен же.

А пример селектора с которым слева-направо не заработает есть?

других местах о которых я не в курсе.

Рендер возможно буду делать необычный. Де. Хотя вот смотрю исходники OperaPresto, там почти так же сделанно как и у меня. Заодно вспомнил что я совсем забыл про :hover, etc.

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

с которым слева-направо не заработает есть?

А не в этом дело. Парента легче прочекать, чем циклить потомков. Плюс — не забывай про всплытие событий.

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

А, точно, сонный уже.) Завтра тогда разберусь с xpath, посмотрю другие парсеры.

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

А где ТС говорил про «не может быть нарисовано openGL-ем»? Насколько я понимаю, проблема обратная. На компах из 90-х, чтобы снизить нагрузку, рисовали ограниченное подмножество 3D. В играх на движке 1-2 Думов, в частности, один персонаж не мог находиться под другим, любой объект однозначно задавался двумя координатами.

Понятно, что при полноценно работающем openGL нарисовать можно всё, и такую упрощённую схему тоже.

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

Пойду разбираться с гитом тогда.

Вот это правильно. VCS (даже не так важно, какая) существенно облегчает жизнь даже одному разработчику.

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

А твой браузер будет адекватно работать на медленном интернете? Вот Opera Presto в этом плане была просто сказка, до сих пор жалко. Под какой лицензией планируешь держать код? Будет ли GUI отделён от парсера (в этом плане NetSurf очень хорошо сделан, там единый движок, а нативный гуй под каждую платформу свой)?

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

FreeDoom

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

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

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

оригинальный майнкрафт на жабе как-то ворочается, а что пистон ещё больше сожрёт?

TheAnonymous ★★★★★
()

Тему зафлудили подростки с комплексами.

Возвращаясь в теме. PyOpenGL - вот что нужно автору. Игра наподобие Doom будет на OpenGL летать, и даже Python не сможет замедлить это.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от hobbit

А твой браузер будет адекватно работать на медленном интернете?

Загрузка сайта по кусочкам? Да, будет.

Под какой лицензией планируешь держать код?

Что нибудь максимально свободное, посмотрим.

Будет ли GUI отделён от парсера

Нет, не те цели. Для такого есть Modest)

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

Может вы там со своими вимами пока наберете по 5 линий и день кончается.

А ты в чем пишешь?

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