OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 14 Июнь, 2025 18:51

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 332 ]  На страницу Пред.  1 ... 10, 11, 12, 13, 14, 15, 16, 17  След.
Автор Сообщение
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Четверг, 10 Октябрь, 2024 21:50 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
впили в игру музоний. а то чо как неродные ваще…

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Пятница, 11 Октябрь, 2024 19:25 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
алиса обещала — алиса делает!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Воскресенье, 13 Октябрь, 2024 07:37 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
порт NukedOPL3 выдал bit-exact, как сишечный вариант. был один баг (схоронял в память шортинт как байт, лол), и один не-баг: оберон использует деление floored, а цпу (и сишечка) — симметричное. соответственно, выхлоп на единичку отличался местами. чисто для спокойствия сделал буилт-ин `SYMDIV()`, чтобы уж точно убедиться.

алсо, скоро будет большой апдейт с кучей фиксов, которые приближают игру к оригиналу. я в процессе отладки кое-где кое-что сделал не совсем так — сейчас вернул. с фпс накосячил, например: у оригинала таки 20, у меня 30. я зачем-то в коде вставил задержку всех думалок на один кадр, а потом забыл. убрал, сделал фпс как в оригинале. заодно чуть подрихтовал лёгкие уровни: на них монстрики чуть реже стреляют/кусаются. ну, и всякое разное другое по мелочи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Понедельник, 14 Октябрь, 2024 07:31 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
много-много разных фиксов. кажется, игра полностью проходима со всеми фиксами, и теперь намного ближе к оригиналу. а ещё добавил паузу перед заставкой, чтобы можно было окошко подвигать, и не потерять синк заставки с музонием. а фулскрин не хочу, лень. ;-)

просьба убрать прошлый аттач ввиду неактуальности.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Четверг, 17 Октябрь, 2024 00:10 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
портанул рисовалку из system 3. вместе с масками. на удивление — работает. серый прямоугольничек в центре нарисован самым первым, а потом я его просто из маски вырезал, и большой полноэкранный прямоугольник поверх нарисовал, и кружочек. и рисовалку эллипсов из своего LC-порта перетащил. она там ужасная, конечно, очень кривая — но лучше, чем в оригинале. как минимум умеет кое-как эллипсы вписывать в прямоугольник, и жирный контур делать. оригинал — нет.


Вложения:
2024_10_17_00_07_59_960x800.png
2024_10_17_00_07_59_960x800.png [ 2.11 КБ | Просмотров: 3093 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Четверг, 17 Октябрь, 2024 06:55 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
там, кстати, есть ещё gfx — вполне годный рендер путей из леонардо, кажется. надо бы и его. у меня нездоровая любовь к 2д-рисовалкам, особенно если они умеют делать картинки без размазни (ака «сглаживания»). он интересный: для неволосяных рендеров создаёт регионы (наподобие масок из Display3), которые потом закрашивает.

алсо, порт растеризатора из AGG со сглаживанием у меня тоже есть, где-то в LC. не в репозитории, кажется. надо бы причесать и в репу положить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Суббота, 19 Октябрь, 2024 01:34 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
нашёл смешной баг в `ABS()`. никогда не пишите кодоген с устатку. сделал блиттинг картинок, и писание обероновскими шрифтами.

кстати, очень недоволен: всё-таки формат шрифтов в обероне делали люди, плохо в этом понимающие. почему в файле шрифта явно не указаны ascender и descender? собственно, поля `height` в шрифте вообще быть не дожно, а должны быть предыдущие два. почему там нет таблицы kerning pairs? пусть хотя бы пустой. это ужасно, господа, ужасно. когда в Высокое Искусство лезут холопы, своими немытыми лапищами… у меня нервический тик разыгрался, пойду выпью абсенту.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Среда, 23 Октябрь, 2024 08:33 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
собственно, как я не хочу таскать с собой порт zlib, то, наконец, решил написать deflate. так-то я разные компрессоры писал, но конкретно deflate — ни разу. и полезно, и познавательно. там всё оказалось не так страшно: практически всё по учебнику. единственная часть, которую надо Просто Запомнить — это кодирование записаного дерева Хаффмана. я даже не буду пытаться понять, каким образом Фил придумал эту схему, а Просто Сделаю Это.

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

да, ничего оптимизировать не пытаюсь: всё по учебнику, всё самым дубовым методом. к счастью, сейчас можно себе это позволить. поскольку частоты в любом случае надо сортировать, то проще всего для построения дерева использовать хип (zlib тоже так делает).

p.s.: следует понимать, что «пишутся со страшего бита» обозначает, что читалка сначала должна увидеть старший бит. то бишь, на самом деле именно пишутся они с младшего бита. deal with it.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Среда, 23 Октябрь, 2024 16:54 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
я чота адски устал тащить SYSTEM чтобы просто кастануть инты в адреса для беззнаковых сравнений да умножений. технически ничего особо системного там нет. поэтому во-первых, добавил `UMUL()`, `UDIV()` и `UMOD()`, а во-вторых, позволил сравнивать SET-ы. сравнение SET-ов работает как сравнение 32-битовых беззнаковых целых. да, криво, да, контринтуитивно — но мне просто очень лень пилить в парзер ещё встроеных функций. в конце концов: я для оберона, или оберон для меня?

в принципе, никто ведь не мешает определить операцию сравнения множеств как «сравнение их 32-битных представлений», правда? может, я потом добавлю встроеные функции, конечно — но сейчас мне лень. а `=` и `#` уже удовлетворяют этому определению (случайно, но ведь удовлетворяют).

p.s.: я знаю, что `UMUL()` не нужен. это для красоты, и чтобы при чтении кода было понятно, что именно в коде хотелось сделать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Четверг, 24 Октябрь, 2024 12:15 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
запилил свой deflate. жмёт где-то на уровне zlib (иногда чуть лучше, иногда чуть хуже), но медленней. медленней — потому что я особо не старался оптимизировать, писал тупо в лоб. в принципе, меня устраивает. будет в следующем релизе Threat, как полагается (потому что там вся система же).

p.s.: я не то чтобы совсем с нуля писал — как полагается, взял другое рабочее и испортил. ну, потому что пилить с нуля binary heap там, и прочая… скучно. и в итоге более-менее тот же самый код получится. я так-то объяснения лучше кодом понимаю, нежели языком — потому читал код, по дороге переделывал. могу, конечно, и с нуля теперь, но смысл.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Четверг, 24 Октябрь, 2024 15:40 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
в общем, немножко поколдовал — и вместо, например, шести секунд на картинку она же жмётся чуть меньше секунды. практически как zlib, теперь точно плюс-минус ерунда. тащемта, пинги пишутся с вполне нормальной скоростью.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Четверг, 24 Октябрь, 2024 17:01 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
в общем, примерно так по размерам:
Код:
          791,087          789,098  99% z000.def.png
        2,231,697        2,231,697 100% z001.def.png (Bigger 2232141)
        1,384,126        1,384,022  99% z002.def.png
        1,327,037        1,327,019  99% z003.def.png
          945,355          945,355 100% z004.def.png (Bigger 948623)
          945,355          945,355 100% z005.def.png (Bigger 948623)

как видим, более-менее паритет (это я пережимал чисто IDAT-чанк zlib-ом). почему на первой картинке такой выигрыш — фиг его знает. ну и ладно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Суббота, 26 Октябрь, 2024 19:36 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
скоро будет новый билд. в прошлом билде был подарок, который никто не заметил, наверное: полные исходники компилера и кодогена. в новом, вероятно, тоже будет. под проприетарной лицензией, но все ж понимают, что это not enforceable, правда? ;-)

(я не буду протестовать, если кто-то это возьмёт и использует, стерев авторство. потому что — а как я смогу, гыг? а если не стерев авторство — то буду.)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Понедельник, 28 Октябрь, 2024 01:38 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
удивительное дело: порт `Stores` даже смог что-то записать, а потом прочитать обратно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Суббота, 02 Ноябрь, 2024 05:13 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
кросивое!

и немножко видеонаркомании.


Вложения:
2024_11_02_04_11_00_960x720.png
2024_11_02_04_11_00_960x720.png [ 4.68 КБ | Просмотров: 2288 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Воскресенье, 03 Ноябрь, 2024 03:39 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 619
arisu писал(а):
кросивое!

Многосвязную (?) область вижу, градиент зелёного вижу; куда ещё смотреть чтоб прям вот "кросивое!"? ;-)

PS: если viewtopic.php?f=114&t=6896&p=119132&sid=3fe771c66c4e9969f2e2c41242aefaba#p119132 то всё понятно


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Воскресенье, 03 Ноябрь, 2024 07:18 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
оно самое.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Понедельник, 04 Ноябрь, 2024 01:07 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
портанул AAPieceTree из LC. я когда-то упоминал: балансированое дерево, которое ещё и массив. для текста-верёвочек. в LC я не стал пока использовать его для текстовой модели, потому что там адовый хак: большие тексты с кучей форматирования очень много кусочков имеют, и GC дико тормозит. разумный вариант — вывести как деревья, так и сами кусочки из-под контроля GC. но это тянет за собой как хаки (у меня несколько типов нод в дереве, и аллокатор напрямую с Kernel.Type работает), так и кучу проблем. проблемы в том, что текстовый поток может содержать объекты, которые из-под GC уводить нельзя, а потому надо делать схему их хранения и ссылок. короче, как обычно: за скорость платить красотой кода. поэтому я пока не переделываю текстовые модели.

однако ж сами деревья давно есть, ноды живут вне GC. и fuzzy-тестер к ним есть. и этот адовый хак я портировал на Oberon/Ur. кое-что пришлось подпилить и допилить, но не так уж много. в основном — добавить в компилятор хаки для `TYPEID(ptr-to-untagged-record^)`. аллокатор нод создаёт «правильные» указатели, но компилятор их использовать отказывался, потому что небезопасно. в принципе, разрешил: всё равно `TYPEID()` требует `SYSTEM`, а с SYSTEM у нас all bets are off.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Понедельник, 04 Ноябрь, 2024 20:55 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
кстати, надо бы тряхнуть стариной и сделать ещё left-leaning red-black tree. оно такое же простое, как и andersson tree, но требует всего одного бита статуса, а не log log n. в принципе, для aa четыре бита уровня тоже можно упаковать в указатели на детей, но с этим неудобно работать. хотя на практике это совершенно неважно в большинстве случаев — в смысле, дополнительный байт в aa.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oberon/Ur
СообщениеДобавлено: Вторник, 05 Ноябрь, 2024 20:36 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1556
утащил из Math ещё больше в built-ins. SIN, COS, SINCOS, TAN, ATAN, ATAN2, DEGREES, RADIANS, PI. в принципе, всё вытащить надо. я, кажется, писал уже, но повторю: Math — наследие тёмного прошлого, когда процессоры не имели встроеного FPU. соответственно, Math действительно было модулем, в котором какой-то реальный код жил, а не инлайны. а у меня вот нет инлайнов. явный Math в итоге вместо облегчения — делает жизнь сложнее для всех. для меня как автора компилятора — надо прыгать через лишний обруч, детектя вызовы оттуда (то есть, всё равно забивая это хардкодом в компилятор). для меня как программера — лишний импорт на пустом месте.

в общем, долой стыд и Math! то есть, там есть смысл оставить что-то редко используемое, типа гиперболических косинусов, которые я даже не знаю, зачем нужны.

на всякий случай напомню (а я вообще это говорил уже?): я не дизайню язык на замену оберону. ровно по заветам Вирта — это оберон, подточеный под моё удобство. личный форк; некоторые носки могут к стене и не прилипнуть. например, `GG.` — префикс для избегания импорта глобальных переменных. он некоторое время побыл, потом ушёл. а вот `CHR()`, `ORD()` и `BITS()` сначала ушли, а потом вернулись.

надо бы (опять планов громадьё!) собраться с силами и запилить (хоть небольшую) статью про мой опыт сексуальных соло-практик. вряд ли она чему-то полезному научит, но я вот люблю читать про сам процесс: какие фичи задумывались, как реализовались, что по пути отвалилось, что в гости зашло.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 332 ]  На страницу Пред.  1 ... 10, 11, 12, 13, 14, 15, 16, 17  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2025, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB