Akustický detektor dronov
Bater je akustický detektor dronov postavený z ESP32 a LORA. Pre to je veľmi lacný a aj používaný na Ukrajine.
Veľmi zaujímavá časť je dokumentácia a použité algoritmy https://docs.batear.io/how-it-works/ (dnes by plno ľudí podobnú úlohu riešili tým, že by poslali zvuk na nejaké LLM s príkonom cirkulárky).
SVG grafy pre Blazor
Táto knižnica prináša statické SVG grafy pre Blazor. Žiadny JavaScript, žiadne problémy.
ReactiveBlazor
Tento silno experimentálny projekt sa snaží poskytovať Blazor Server komponenty len pomocou klasického POST-u, teda bez SignalR kolekcie.
Je postavený na trochu iných princípoch (interaktivita je explicitná) ako štandardný Blazor.
Blades
Blades Ninja/CSS je sémantický CSS framework, ktorý je priamym duchovným nástupcom PicoCSS (ktorý som si obľúbil), pretože vyzerá, že PicoCSS bol svojím tvorcom opustený.
Hezium.Memory
Hezium.Memory je knižnica, ktorá v C# umožňuje alokovať naozaj veľké polia (vtečie ako 2147483647 prvkov) – má vlastné polia, Memory aj vlastný Span.
Prečo by niečo také niekto potreboval? Podlá autora hlavne natívny interop a IPC.
Nie bezpečný USB
Chlapík sa pokúsil vytvoriť vlastný hardvérovo šifrovaný USB kľúč. Zaujímavé čítanie, ale kryptografia je v ňom úplne zle.
Timberborn as a database
Timberborn je návyková budovateľská stratégia s bobrami, ktorá umožňuje vytvárať automatizáciu prakticky čohokoľvek v hre a tiež dokáže volať aj sprístupniť HTTP endpointy. A to autor článku využil a v budovateľskej stratégii si vytvoril databázu.
MonoGame
A to je oslí mostík ku MonoGame. MonoGame nie je herný engin, je to framework, v podstate sprístupňuje abstrakciu nad grafikou (textúry), zvukmi, vstupy z klávesnice, myši, mikrofónu a hernú cyklus. A to je v podstate všetko. Ešte by som povedal, že MonoGame je moderná reimplementácia starého XNA od Microsoftu.
Ja som sa na ňom učil agentove programovanie a spravil si v ňom simuláciu problému troch telies.
Paradoxne si myslím, že keď som si MonoGame porovnával s inými možnosťami ako to spraviť, tak mi to prišlo najjednoduchšie a najpriamočiarejšie riešenie. (ImGui je príliš low-level, Unity je príliš high-level, MonoGame funguje aj v .NET 10 a s AOT kompiláciou a multiplatformovo).
Proste má extrémne plochú krivku učenia, k tomu dobrý tutoriál a ide to doslova samo.
A pri tom som narazil na zaujímavé veci:
Korutiny
Táto knižnica mení používanie async/await na korutiny bez alokácií. To znamená beží to v stále v jednom vlákne a programátor určuje prerušenia.
Arch-ECS
ECS je spôsob akým hry spravujú veľké množstvo dynamických objektov, tak aby šetrili pamäť. Čítal som o tom veľa, ale až dokumentácia Arch-ECS mi to dokázala vysvetliť zrozumiteľne a pochopiteľne a aj ako to používať.
Arch-ECS navyše využíva moderné vlastnosti C# ako record struct a agresívny inlining cez štruktúry pomocou generického polymorizmu.
Zaujímavosť na záver
Pri čítaní o vývoji v týchto nástrojoch som narazil na zaujímavý spôsob cachovania. Kvôli tomu, aby mohol ísť výkon až na dreň tak vývojári hier našli spôsob, ktorý pri cachovaní obchádza serializáciu. Proste sa zoberú dáta a uložia sa na disk rovno z RAM, potom idú zas načítať. Ide to spraviť aj v C#, len je potrebné to robiť nad hodnotovými typmi, napríklad polom štruktúr (ak sa potrebujú odkazovať medzi sebou, tak sa nepoužijú refencie ale indexy do poľa).
