Comments: |
Блеать... Планы по выходу сегодня из дому на улицу можно благополучно хоронить.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | March 17th, 2012 - 12:12 pm |
---|
| | | (Link) |
|
why? %-)
p.s. сейчас активно ебошится версия, где весь механизм загрузки уровней тоже перенесен в виртуальную машину (и заодно снято ограничение на размер уровня). i am alpha and i am omega. также добавляется фича динамической подгрузки спрайтов в разные банки. all praise hypnotoad. движок всё больше становится похож на универсальный конструктор неведомой ёбаной хуйни.
бугогашечка, добавив ещё несколько системных вызовов, на этом же движке можно будет заебошить и редактор уровней.
Because it's hard to tear off myself from groking the sources.
Кстати, тупой вопрос: занафига заворачивать тела макросов в do{}while(0)?
I am Alpha and Omega, actually, if you were to quote Rev 1,8.
А ведь с динамической подгрузкой на этом движке можно будет строить не только банальные ходилки, но и что-то поприкольнее, типа The Incredible Machine.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | March 17th, 2012 - 12:44 pm |
---|
| | | (Link) |
|
>занафига заворачивать тела макросов в do{}while(0)? чтобы точка с запятой не создавала проблем, например, вот в таком: if (…) MACRO(…); else …; к тому же внутри тела удобно объявлять «локальные переменные макроса», минихак. у меня периодически то любовь к подобному оформлению макро, то ненависть.
да, процитировал криво, но тут нет редактирования постов, блин. не проснумшись ещё толком.
>А ведь с динамической подгрузкой на этом движке можно будет строить не только >банальные ходилки, но и что-то поприкольнее, типа The Incredible Machine. it's a Plan! вообще-то Awish — это как раз обкатка движка VM и связок. главная идея — как минимум наебошить универсальный движок для платформеров. возможно, я ещё притащу туда полигональную рисовалку из Another World. и, скорее всего, расширю движок до работы с плавающими числами (возможно, опционально, при помощи опций компиляции), плюс уберу ограничение на 64 кб (оно и так чисто искусственное).
а если приделать ещё и микрокомпилятор (да простейший subset сей, например, однопроходный и тупой, как пень) — это даже станет юзабельным для тех, кто cannot into assembler.
>к тому же внутри тела удобно объявлять «локальные переменные макроса», точно. Всё время забываю, что у тебя C99. Сраный M$ лишил меня этой прелести.
>расширю движок до работы с плавающими числами Это не кошерно. Плюс придёлся отельный стек для плавающих городить. ИМХО, интереснее будет запилить арифметику с фиксированной точкой. Ну и в духе времени получится. (ЕМНИП, даже в Думе ещё фиксы были).
>это даже станет юзабельным для тех, кто cannot into assembler. и сделать lisp-подобный синтаксис, чтобы не расслаблялись.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | March 17th, 2012 - 01:33 pm |
---|
| | | (Link) |
|
>Сраный M$ лишил меня этой прелести. не совсем. там тоже можно, но не где попало, а только после фигурной скобки. а вот что в C99 приятно — это упёртое из c++ for (int f = …).
>Плюс придёлся отельный стек для плавающих городить. неа, просто выкинуть целые. вариант такой: или всё на целых, или всё на даблах.
хотя, в принципе, ты прав: баловство это. всегда можно сделать длинную арифметику ручками на том же асме: хардкор, в конце концов, или так, погулять вышли?! и так я форы дал с командами mul, div и mod, совсем халява.
>ЕМНИП, даже в Думе ещё фиксы был дык не от хорошей жизни же. %-)
>и сделать lisp-подобный синтаксис, чтобы не расслаблялись. это неинтересно, я тогда мог просто взять уже написаную мной схему и не трахаться. впрочем, до компилятора ещё далеко: мне он не нужен (ну бля, я асм пилил для того, чтобы на нём писать, а не чтобы компилятор делать), а больше никто всё равно не напишет.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | March 17th, 2012 - 03:15 pm |
---|
| | | (Link) |
|
баста, карапузики. загрузчик уровней утащен в виртуальную машину.
И сотня строк всё удовольствие. Я думал выйдет хуже.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | March 17th, 2012 - 04:05 pm |
---|
| | | (Link) |
|
дык формат уровня-то простой. взял сишный лоадер да перевёл тупо в ассемблер. пришлось апей добавить, правда, но то мелочи. вон, после удивления анонимуса ещё и буфер задницы привинтил, потребление проца упало процентов на 10.
алсо, теперь мы имеем такое удовольствие, как «кастомные лоадеры», гыг. можно извращаться от чтения уровней в хитрых форматах до процедурной генерации. забавно.
Да оно и так не много потребляло. Сейчас глянул -- 7%-8%, в пике до 10% У анончега видимо совсем как-то древний комп. Или нетбук какой.
>до процедурной генерации. забавно. Дайож платформенный Диабло, ага.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | March 17th, 2012 - 04:29 pm |
---|
| | | (Link) |
|
ну, у меня до 18 процентов. от 12 до 18 только так. а сейчас три-шесть. ну, я знал, в принципе, что там весьма узкое место, не в первый раз натыкаюсь.
>Дайож платформенный Диабло, ага. Spelunky.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | March 17th, 2012 - 04:33 pm |
---|
| | | (Link) |
|
кстати, если я верно идентифицировал анона, то техника там весьма неслабая.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | March 17th, 2012 - 04:08 pm |
---|
| | | (Link) |
|
кстати, забавно: в оригинальной паскалевской программе, похоже, массивы уровней с единицы индексируются по иксу, а не с нуля. и с единицы по игреку, потому что по всей игре игрек-координата — это кирпич под объектом. но второе оказалось очень удобно, кстати: избавило от постоянных прибавлений/вычитаний единички.
Так это отродясь различие насильников и пасквилянтов: в С массивы zero-based, в Паскале, вообще говоря, кастомные, но по житейской привычке чаще всего с 1 начинают.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | March 17th, 2012 - 04:32 pm |
---|
| | | (Link) |
|
нихера, я больше десяти лет исключительно на паскале писал, но массивы всегда с нуля начинал. %-)
Значит, у тебя это в ПЗУ ДНК прошито
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | March 17th, 2012 - 04:40 pm |
---|
| | | (Link) |
|
это печальное наследие программирования в машинном коде для КР580ИК80.
p.s. апдейтнул оригинальный пост ссылкой на новую виндовую сборку. заодно вложил в неё вссемблер и ассемблерные исходники. можешь скачать новьё.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | March 17th, 2012 - 04:43 pm |
---|
| | | (Link) |
|
да, фича save/load фатально поломана. don't even try to.
From: | (Anonymous) |
Date: | March 18th, 2012 - 05:29 pm |
---|
| | | (Link) |
|
> чтобы точка с запятой не создавала проблем, например, вот в таком: > if (…) MACRO(…); else …;
я, конечно, кода не видел, но что может быть не так с ';' без do/while? в do{}while(0) обычно заворчивают код, часть которого можно потом красиво поскипать через break при определенном условии, не прибегая к некошерным goto и прожорливым throw.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | March 18th, 2012 - 06:33 pm |
---|
| | | (Link) |
|
#define MAC(n) if (n) doshit();
if (a) MAC(42); else MAC(666);
From: | (Anonymous) |
Date: | March 18th, 2012 - 07:09 pm |
---|
| | | (Link) |
|
угу, точно
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | March 17th, 2012 - 12:48 pm |
---|
| | | (Link) |
|
кстати, ещё один плюс (на который мне плевать, но) подхода с VM — неебическая портируемость. SDL нет разве что на кофемолке (и то не факт), да и не столь сложно переписать блиттеры на другом API. а остальное переносится as-is. а в самой логике игры вообще ни байта менять не надо. при этом сейвы, демки, уровни — автомагически одинаковы для всех платформ.
но я вредный, я специально это всё покрыл GPLv3. | |