master
Miloslav Ciz 6 months ago
parent 14fc271097
commit 01203e13ab

@ -1,6 +1,6 @@
# Anarch
Anarch is a [LRS](lrs.ms)/[suckless](suckless.md), [free as in freedom](free_software.md) first person shooter [game](game.md) similar to [Doom](doom.md), written by [drummyfish](drummyfish.md). It has been designed to follow the LRS principles very closely and set an example of how games, and software in general, should be written. It also tries to be compatible with principles of [less retarded society](less_retarded_society.md), i.e. it promotes [anarchism](anarchism.md), anti-capitalism, pacifism etc.
Anarch is a [LRS](lrs.ms)/[suckless](suckless.md), [free as in freedom](free_software.md) first person shooter [game](game.md) similar to [Doom](doom.md), written by [drummyfish](drummyfish.md). It has been designed to follow the LRS principles very closely and set an example of how games, and software in general, should be written. It also tries to be compatible with principles of [less retarded society](less_retarded_society.md), i.e. it promotes [anarchism](anarchism.md), anti-[capitalism](capitalism.md), pacifism etc.
The repo is available at https://codeberg.org/drummyfish/Anarch
or https://gitlab.com/drummyfish/anarch. Some info about the game can also be found at the [libregamewiki](lgw.md): https://libregamewiki.org/Anarch.
@ -61,7 +61,9 @@ Anarch has these features:
## Technical Details
Anarch's engine uses [raycastlib](raycastlib.md), a LRS library for advanced 2D [ray casting](ray_casting.md) which is often called a "pseudo 3D". This method was used by Wolf3D, but Anarch improves it to allow different levels of floor and ceiling which makes it look a little closer to Doom (which however used a different methods called [BSP](bsp.md) rendering).
Anarch's engine uses [raycastlib](raycastlib.md), a LRS library for advanced 2D [ray casting](ray_casting.md) which is often called a "pseudo 3D". This method was used by [Wolf3D](wolf3d.md), but Anarch improves it to allow different levels of floor and ceiling which makes it look a little closer to [Doom](doom.md) (which however used a different methods called [BSP](bsp.md) rendering).
The whole codebase (including raycastlib AND the assets converted to C array) has fewer than 15000 [lines of code](loc.md). Compiled binary is about 200 kB big, though with [compression](compression.md) and replacing assets with [procedurally generated](procgen.md) ones the size was made as low as 57 kB.
The music in the game is [procedurally generated](procedural_generation.md) using [bytebeat](bytebeat.md).

@ -8,7 +8,7 @@ Capitali$m is the worst socioeconomic system we've yet seen in [history](history
**Capitalism is fundamentally flawed and CANNOT be fixed** -- capitalists build on the idea that competition will drive society, that market will be self sustaining, however capitalism itself works for instating the rule of the winners who eliminate their competition, capitalism is self destabilizing, i.e. the driving force of capitalism is completely unsustainable and leads to catastrophic results as those who get ahead in working competition are also in advantage -- as it's said: money makes money, therefore money flow from the poor to the rich and create a huge imbalance in which competition has to be highly forced, eventually completely arbitrarily and in very harmful ways (invention of bullshit jobs, creating artificial needs and hugely complex state control and laws). It's as if we set up a race in which those who get ahead start to also go faster, and those become the ones who oversee and start to create the rules of the race -- expecting a sustained balance in such a race is just insanity. Society tries to "[fight](fight_culture.md)" this emerging imbalance with various laws and rules of market, but this effort is like trying to fight math itself -- the system is mathematically destined to be unstable, pretending we can win over laws of nature themselves is just pure madness.
**Capitalism produces the [worst imaginable technology](capitalist_software.md)** and rewards people for [being cruel to each other](entrepreneur.md). It points the direction of society towards a [collapse](collapse.md) and may very likely be the [great filter](great_filter.md) of civilizations; in capitalism people [de-facto](de_facto.md) own nothing and become wholly dependent on corporations which exploit this fact to abuse them as much as possible. This is achieved by [slowly boiling the frog](slowly_boiling_the_frog.md) and [leading the pig to the slaughterhouse](leading_the_pig_to_the_slaughterhouse.md). No one owns anything, products become [services](saas.md) (your car won't drive without Internet connection and permission from its manufacturer), all independency and decentralization is lost in favor of a highly fragile and interdependent economy and infrastructure of services, each one controlled by the monopoly corporation. Then only a slight break in the chain is enough to bring the whole civilization down in a spectacular domino effect.
**Capitalism produces the [worst imaginable technology](capitalist_software.md)** and rewards people for [being cruel to each other](entrepreneur.md). It points the direction of society towards a [collapse](collapse.md) and may very likely be the [great filter](great_filter.md) of civilizations; in capitalism people [de-facto](de_facto.md) own nothing and become wholly dependent on corporations which exploit this fact to abuse them as much as possible. This is achieved by **[slowly boiling the frog](slowly_boiling_the_frog.md)** and **[leading the pig to the slaughterhouse](leading_the_pig_to_the_slaughterhouse.md)**. Capitalism further achieves enslavement of society while staying accepted by **deflecting responsibility** from the big picture to insignificant details: it says "Look, this politican fucked up your society! This one CEO of this corporation did it! This law here fucked your society! This one immigrant minority is responsible for it! Social media is to blame!" while in fact all of these are just symptomes of the underlying cancer of capitalism; it is relied on an average idiot's inability to see the big picture (society made mostly of idiots is achieved by indoctrination, propaganda and brainwashing that teaches one to only care about the immediate, himself and his daily food; big picture related concepts such as [ethics](ethics.md) and [morality](morality.md) are laughed at). No one owns anything, products become [services](saas.md) (your car won't drive without Internet connection and permission from its manufacturer), all independency and decentralization is lost in favor of a highly fragile and interdependent economy and infrastructure of services, each one controlled by the monopoly corporation. Then only a slight break in the chain is enough to bring the whole civilization down in a spectacular domino effect.
**The underlying issue of capitalism is [competition](competition.md)** and conflict -- competition is the root of all evil in any social system, however capitalism is the absolute glorification of competition, amplification of this evil to maximum. It is implemented by setting and supporting a very stupid idea that **everyone's primary and only goal is to be self-benefit**, i.e. maximization of capital. This is combined with the fact that the environment of [free market](free_market.md) is a an **[evolutionary system](evolution.md)** which through natural selection extremely effectively and quickly optimizes the organisms (corporations) for achieving this given goal, i.e. generating maximum profit, on the detriment of all other values such as wellbeing of people, sustainability or morality. In other words capitalism has never promised a good society, it literally only states that everyone should try to benefit oneself as much as possible, i.e. defines the [fitness function](fitness_function.md) purely as the ability to seize as many resources as possible, and then selects and rewards those who best implement this function, i.e. those we would call sociopaths or "dicks", and to those is given the power in society. Yes, this is how nature works, but it must NOT be how a technologically advanced civilization with unlimited power of destruction should work. In other words we simply get what we set to achieve: find entities that are best at making profit at any cost. The inevitable decline of society can not possibly be prevented by laws, any effort of trying to stop evolution by inventing artificial rules on the go is a battle against nature itself and is extremely naive, the immense power of the evolutionary system that's constantly at work to find ways to bypass or cancel laws in the way of profit and abuse of others will prevails just as life will always find its way to survive and thrive even in the worst conditions on Earth. Trying to stop corporations with laws is like trying to stop a train by throwing sticks in its path. The problem is not that "people are dicks", it is that we choose to put in place a system that rewards the dicks, a system that fuels the worst in people and smothers the best in them.

@ -135,9 +135,9 @@ Trademarks have been known to cause problems in the realm of libre games, for ex
## Nice And Notable Gaymes
Of [proprietary](proprietary.md) video games we should mention especially those that for us have [clonning](clone.md) potential. [Doom](doom.md) (possibly also [Wolfenstein 3d](wolf3d.md)) and other 90s shooters such as [Duke Nukem 3D](duke3d.md), Shadow Warrior and [Blood](blood.md) were excellent. [Trackmania](trackmania.md) is a very interesting racing game like no other, based on kind of [speedrunning](speedrun.md), [easy to learn, hard to master](easy_to_learn_hard_to_master.md), very entertaining even solo. The Witness was a pretty rare case of a good newer game. The Elder Scrolls are very captivating [RPG](rpg.md) games like no other, with extreme emphasis on [freedom](freedom.md) and lore; [Pokemon](pokemon.md) games on [GBC](gbc.md) and [GBA](gba.md) were similar in this while being actually pretty tiny games on small old handhelds. [GTA](gta.md) games also offered a great open world freedom and fun based on violence. Advance Wars was a great turn based strategy on [GBA](gba.md) (and possibly one of the best games on that console). Warcraft III was possibly the best real time strategy game with awesome aesthetics. Legend of Grimrock (one and two) is another rare case of actually good new take on an old concept of [dungeon crawlers](dungeon_crawler.md). TODO: more.
Of [proprietary](proprietary.md) video games we should mention especially those that to us have [clonning](clone.md) potential. [Doom](doom.md) (possibly also [Wolfenstein 3d](wolf3d.md)) and other 90s shooters such as [Duke Nukem 3D](duke3d.md), Shadow Warrior and [Blood](blood.md) (the great 90s [boomer shooters](boomer_shooter.md)) were excellent. [Trackmania](trackmania.md) is a very interesting racing game like no other, based on kind of [speedrunning](speedrun.md), [easy to learn, hard to master](easy_to_learn_hard_to_master.md), very entertaining even solo. The Witness was a pretty rare case of a good newer game, set on a strange island with puzzles the player learns purely by observation. [The Elder Scrolls](tes.md) (mainly Morrowind, Obvlidion and Skyrim) are very captivating [RPG](rpg.md) games like no other, with extreme emphasis on [freedom](freedom.md) and lore; [Pokemon](pokemon.md) games on [GBC](gbc.md) and [GBA](gba.md) were similar in this while being actually pretty tiny games on small old handhelds. [GTA](gta.md) games also offered a great open world freedom and fun based on violence, sandbox world and great gangster-themed story. Advance Wars was a great turn based strategy on [GBA](gba.md) (and possibly one of the best games on that console), kind of glorified [chess](chess.md) with amazing pixel art graphics. Warcraft III was possibly the best real time strategy game with awesome aesthetics. Its successor, [World of Warcraft](wow.md), is probably the most notable [MMORPG](mmorpg.md) with the same lovely aesthetics and amazing feel that would be worth bringing over to the free world (even if just in 2D or only [text](mud.md)). Legend of Grimrock (one and two) is another rare case of actually good new take on an old concept of [dungeon crawlers](dungeon_crawler.md). Half Life games are also notable especially for their atmosphere, storyline and lore. [Minecraft](minecraft.md) was another greatly influential game that spawned basically a new genre, though we have now basically a perfect clone called [Minetest](minetest.md). [Dward Fortress](dwarf_fortress.md) is also worth mentioning as the "most complex simulation ever made" -- it would be nice to have a free clone. TODO: more.
As for the [free (as in freedom)](free_software.md) game, let the following be a sum up of some nice games that are somewhat close to [LRS](lrs.md), at least by some considerations.
As for the [free (as in freedom)](free_software.md) libre games, let the following be a sum up of some nice games that are somewhat close to [LRS](lrs.md), at least by some considerations.
**Computer games:** [Anarch](anarch.md) and [microTD](utd.md) are examples of games trying to closely follow the [less retarded](lrs.md) principles while still being what we would normally call a computer game. [SAF](saf.md) is a less retarded game library/fantasy console which comes with some less retarded games such as [microTD](utd.md). If you want something closer to the mainstream while caring about freedom, you probably want to check out libre games (but keep in mind they are typically not so LRS and do suck in many ways). Some of the highest quality among them are [Xonotic](xonotic.md), 0 A.D., [openarena](openarena.md), [Freedoom](Freedoom.md), Neverball, SupertuxKart, [Minetest](minetest.md), The Battle for Wesnoth, Blackvoxel etcetc. -- these are usually quite [bloated](bloat.md) though.

@ -2,7 +2,7 @@
Interaction nets are a way of performing computation by manipulating graphical diagrams according to a few simple rules. Interaction nets can be seen as one of many possible ways to create the lowest level basis for a [computer](computer.md), so we call them a *[model of computation](model_of_computation.md)*; other models of computation are for example [grammars](grammar.md), [Turing machines](turing_machine.md), [lambda calculus](lambda_calculus.md), [cellular automata](cellular_automaton.md) etc. -- all of these can be used to perform the same computations, though in different ways; interaction nets do this by representing a [program](program.md) with a [graph](graph.md)-like diagram which is then manipulated by some predefined rules and "reshaped" into another graph that represents the result of the performed computation. For this interaction nets can also be see as a kind of graphical [programming language](programming_language.md) (and even a textual one once we learn how to represent the graphical diagrams with text, which we call *interaction calculus*), though it's an extremely low level language (even things such as addition of natural numbers have to be programmed from scratch) that would be extremely impractical for everyday programming. The advantage of interaction nets is besides their simplicity usually said to be mainly their **[parallel nature](parallelism.md)**: as computation really means locally replacing parts of the network with predefined patterns, it is possible to simultaneously process multiple parts of the network at once, greatly speeding up the computation.
**WATCH OUT**: interaction nets are a bit confusing to newcomers because they look a bit like [logic circuits](logic_circuit.md) and so people think the computation happens by passing some data through the network -- THIS IS NOT THE CASE! The computation happens by CHANGING THE NETWORK itself, i.e. there is no data flowing, all that happens is REPLACING parts of the network with patterns defined by the rewriting rules. The idea is similar to that of [grammars](grammar.md).
**WATCH OUT**: interaction nets are a bit confusing to newcomers because they look a bit like [logic circuits](logic_circuit.md) and so people think the computation happens by passing some data through the network -- THIS IS NOT THE CASE! The computation happens by CHANGING THE NETWORK itself, i.e. there is no data flowing, all that happens is REPLACING parts of the network with patterns defined by the rewriting rules (similarly to how in lambda calculus there are really no function calls but just text replacement). The idea is similar to that of rewriting rules in [grammars](grammar.md). Think of the connections less like of electric wires and more like of strings with knots that you tie and untie to perform the computation.
A general interaction net consists of nodes, or **agents**, that are connected with wires, or **edges**. Alongside the net exist **interaction rules** that say how patterns in the net get replaced with other patterns. A concrete definition of specific agent types and interaction rules is called an **interaction system** (i.e. *interaction net* is the general idea, like for example a *[cellular automaton](cellular_automaton.md)*, while *interaction system* is a specific realization of that idea, like for example *[game of life](game_of_life.md)*).
@ -94,8 +94,39 @@ apply rule 1:
no more rules to apply
```
TODO: continue
One specific very important interaction system is called **"interaction combinators"** -- it is a very simple system, consisting of three predefined agents and three patterns of rewrite rules, which can simulate any other system, i.e. it is [Turing complete](turing_complete.md) (we say the model is capable of *universal computation*); we know this because it's possible to e.g. automatically convert any [lambda calculus](lambda_calculus.md) expression to interaction combinators. The following show the interaction combinator rules (`E`, `D` and `Y` are the three agents, `t` is a general subtree with possible additional inputs `{...}`):
```
erasing rule: _____
_____ _____ | |
x ---| | | | x <==| E |
{...}| t |==><==| E | rewrites to |_____|
y ---|_____| |_____| {...} _____
| |
y <==| E |
|_____|
duplication rule:
_____ _____
| |------| |
_____ _____ x <==| D | {...}| t |==> z
x ---| | | |--- z |_____|--. .-|_____|
{...}| t |==><==| D | rewrites to {...} _____ X _____
y ---|_____| |_____|--- w | |--' '-| |
y <==| D | {...}| t |==> w
|_____|------|_____|
non-termination rule:
_____ _____
| | _____ _____ | | .---.
| E |==>---| | | |---<==| E | rewrites to ( )
|_____| | D |==><==| Y | |_____| '---'
.---|_____| |_____|---.
( )
'--------------------------'
```
One specific very important interaction system is called **interaction combinators** -- it is a very simple system, consisting of three predefined agents and three rewrite rules, which can simulate any other system, i.e. it is [Turing complete](turing_complete.md) (also *universal*).
TODO
TODO: text representation, compare text representation of interaction nets with grammars?

@ -15,6 +15,8 @@ Political correctness (abbreviated PC) means [pseudoleftist](pseudoleft.md) [cen
*Example of politically correct ASCII art. Note the absence of any content that might offend someone. Still the art is imperfect because it has a white background which might be seen as racially offensive.*
While political correctness loves to boast about "diversity" and somehow "protecting it", it is doing the exact opposite -- **political correctness kills diversity in society**, it aims for **a unified, sterile society** that's afraid of even hinting on someone else's difference out of fear of punishment. People are different, [stereotypes](stereotype.md) are based on reality, acknowledging this -- and even [joking](jokes.md) about it -- doesn't at all mean we have to start to hate each other (in fact that requires some fucked up mental gymnastics and a shitty society that pushes [competitive](capitalism.md) thinking), diversity is good, keeps us aware of strength in unity: everyone is good at something and bad at something, and sometimes we just do things differently, a westener might approach problem differently than Asian or Arab, they look different, think and behave differently, and that's a good thing; political correctness forbids such thinking and only states "there is no such thing as differences in people or culture, don't even dare to hint on it", it will go on to censor anything showing the differences do actually exist and leave nothing but plain white sheet of paper without anything on it, a robotic member of society that's afraid to ask someone about his gender or even place where he comes from, someone unable of thinking or communicating on his own, only resorting to preapproved "safe" ways of communication. Indeed, reality yet again starts beating dystopian fiction horrors.
The whole idea is basically about pushing the mentality of seeing certain words, pictures and other objects as inherently "offensive" to specific selected minorities (currently mostly women, gay, negros and other non-white races, trannies and fat and disabled people), even outside any context, and about constantly fabricating new reasons to get offended so as to fuel the movement. For example the word *black box* is declared as "offensive" to black people because... well, like, black people were discriminated at some point in history and their skin is black... so... the word black now can't be said? :D [WTF](wtf.md). A sane mind won't understand this because we're dealing with a literal extremist cult here. It just keeps getting more ridiculous, for example feminists want to remove all words that contain the substring "man" from the language because... it's a male oppression? lol... anyway, we can no longer use words like *snowman*, now we have to say *snowperson* or something :D Public material now does best if it doesn't walk on the thin ice of showing people with real skin color and better utilize a neutral blue people :D Fuck just kill me already lmao.
Political correctness goes strictly against [free speech](free_speech.md), it tries to force people "to behave" and be afraid of words and talking, it creates conflict, divides society and also TEACHES people to be offended by language -- i.e. even if a specific word wouldn't normally be used or seen in a hostile way (e.g. the *master branch* in git repositories), political correctness establishes that NOW IT IS OFFENSIVE and specific minorities SHOULD take offense, even if they normally wouldn't, supporting [offended culture](offended_culture.md) and [fight culture](fight_culture.md). I.e. political correctness can be called a [cancer](cancer.md) of society. **[LRS](lrs.md) must never adhere to political correctness!**

@ -1,6 +1,6 @@
# Raycastlib
Raycastlib (RCL) is a [public domain](public_domain.md) ([CC0](cc0.md)) [LRS](lrs.md) [C](c.md) [library](library.md) for advanced 2D [raycasting](raycasting.md), i.e. ["2.5D/pseudo3D"](pseudo3d.md) [rendering](3d_rendering.md). It was made by [drummyfish](drummyfish.md), initially as an experiment for [Pokitto](pokitto.md) -- later he utilized the library in his game [Anarch](anarch.md). It is in spirit similar to his other LRS libraries such as [small3dlib](small3dlib.md) and [tinyphysicsengine](tinyphysicsengine.md); just as those raycastlib is [kept extremely simple](KISS.md), it is written in pure C99, with zero dependencies (not even [standard library](stdlib.md)), it's written as a single file single header library, using no [floating point](float.md) and tested to run interactively even on very weak devices (simplified version was made run on [Arduboy](arduboy.md) with some 2 KiB of RAM). It is very flexible thanks to use of [callbacks](callback.md) for communication, allowing e.g. programming arbitrary "[shader](shader.md)" code to implement all kinds of effects the user desires or using [procedurally generated](procgen.md) environments without having to store any data. The library implements advanced features such as floor and ceiling with different heights, textured floor, opening door, simple [collision detection](collision_detection.md) etc.
Raycastlib (RCL) is a [public domain](public_domain.md) ([CC0](cc0.md)) [LRS](lrs.md) [C](c.md) [library](library.md) for advanced 2D [raycasting](raycasting.md), i.e. ["2.5D/pseudo3D"](pseudo3d.md) [rendering](3d_rendering.md). It was made by [drummyfish](drummyfish.md), initially as an experiment for [Pokitto](pokitto.md) -- later he utilized the library in his game [Anarch](anarch.md). It is in spirit similar to his other LRS libraries such as [small3dlib](small3dlib.md) and [tinyphysicsengine](tinyphysicsengine.md); just as those raycastlib is [kept extremely simple](KISS.md), it is written in pure C99, with zero dependencies (not even [standard library](stdlib.md)), it's written as a single file single header library, using no [floating point](float.md) and tested to run interactively even on very weak devices (simplified version was made run on [Arduboy](arduboy.md) with some 2 KiB of RAM). It is very flexible thanks to use of [callbacks](callback.md) for communication, allowing e.g. programming arbitrary "[shader](shader.md)" code to implement all kinds of effects the user desires or using [procedurally generated](procgen.md) environments without having to store any data. The library implements advanced features such as floor and ceiling with different heights, textured floor, opening door, simple [collision detection](collision_detection.md) etc. It is written in just a bit over 2000 [lines of code](loc.md).
The repository is available at https://codeberg.org/drummyfish/raycastlib.

@ -1,6 +1,6 @@
# Small3dlib
Small3dlib (S3L) is a very portable [LRS](lrs.md)/[suckless](suckless.md) [single header](signle_header.md) 3D [software renderer](software_rendering.md) [library](library.md) written by [drummyfish](drummyfish.md) in the [C](c.md) programming language. It is very efficient and runs on many resource-limited computers such as embedded [open consoles](open_console.md). It is similar to [TinyGL](tinygl.md), but yet more simple. Small3dlib is [public domain](public_domain.md) [free software](free_software.md) under [CC0](cc0.md).
Small3dlib (S3L) is a very portable [LRS](lrs.md)/[suckless](suckless.md) [single header](signle_header.md) 3D [software renderer](software_rendering.md) [library](library.md) written by [drummyfish](drummyfish.md) in the [C](c.md) programming language. It is very efficient and runs on many resource-limited computers such as embedded [open consoles](open_console.md). It is similar to [TinyGL](tinygl.md), but yet more simple. Small3dlib is [public domain](public_domain.md) [free software](free_software.md) under [CC0](cc0.md), written in under 3000 [lines of code](loc.md).
The repository is available at https://codeberg.org/drummyfish/small3dlib and https://gitlab.com/drummyfish/small3dlib.

@ -1,6 +1,6 @@
# Smallchesslib
Smallchesslib (SCL) is a small [CC0](cc0.md) [LRS](lrs.md)/[suckless](suckless.md) [chess](chess.md) [library](library.md) written in [C](c.md) by [drummyfish](drummyfish.md). It is a single header library written in fewer than 4000 lines of code, with no [dependencies](dependency.md) and comes with a tiny engine called *smolchess*. It implements the basic chess rules as well as those of chess960, convenience functions (even primitive board picture export), handling of basic formats such as FEN and PGN, and a simple alpha-beta minimax [AI](ai.md) -- *smolchess* played on lichess where it got a rating of about 1500 (https://lichess.org/@/smolchessbot). The repository is available at https://codeberg.org/drummyfish/smallchesslib. Smallchesslib/smolchess is extremely simple and been tested to run even on super weak platform such as [Arduboy](arduboy.md) which only has some 2 KB of RAM! That's pretty incredible, no?
Smallchesslib (SCL) is a small [CC0](cc0.md) [LRS](lrs.md)/[suckless](suckless.md) [chess](chess.md) [library](library.md) written in [C](c.md) by [drummyfish](drummyfish.md). It is a single header library written in fewer than 4000 [lines of code](loc.md), with no [dependencies](dependency.md) and comes with a tiny engine called *smolchess*. It implements the basic chess rules as well as those of chess960, convenience functions (even primitive board picture export), handling of basic formats such as FEN and PGN, and a simple alpha-beta minimax [AI](ai.md) -- *smolchess* played on lichess where it got a rating of about 1500 (https://lichess.org/@/smolchessbot). The repository is available at https://codeberg.org/drummyfish/smallchesslib. Smallchesslib/smolchess is extremely simple and been tested to run even on super weak platform such as [Arduboy](arduboy.md) which only has some 2 KB of RAM! That's pretty incredible, no?
```
A B C D E F G H

@ -0,0 +1,7 @@
# Tinyphysicsengine
Tinyphysicsengine (TPE) is a very simple [suckless](suckless.md)/[KISS](kiss.md) physically inaccurate 3D [physics engine](physics_engine.md) made according to [LRS](lrs.md) principles (by [drummyfish](drummyfish.md)). Similarly to other LRS libraries such as [small3dlib](small3dlib.md), [smallchesslib](smallchesslib.md), [raycastlib](raycastlib.md) etc., it is written in pure [C](c.md) with no dependencies (not even [standard library](stdlib.md)) as a [single header](single_header.md) library, using only [fixed point](fixed_point.md) math, made to be efficient and tested on extremely small and weak devices such as [Pokitto](pokitto.md). It is completely [public domain](public_domain.md) [free software](free_software.md) ([CC0](cc0.md)) and is written in fewer than 3500 [lines of code](loc.md). TPE got some attention even on [hacker news](hacker_news.md) where people kind of appreciated it and liked it. { Until they found my website lol. Just to clarify I did not post it to HN myself, I was surprised to find an email that someone posted it there and that it went trending :) Thank you to anyone who posted it <3 ~drummyfish }
The repository is currently at https://codeberg.org/drummyfish/tinyphysicsengine.
Let's stress that TPE is NOT physically accurate, its purpose is mainly entertainment, simplicity and experimenting; a typical imagined usecase is in some suckless [game](game.md) that just needs to add some simple "alright looking" physics for effect. { Though I am currently in process of making a full racing game with it. ~drummyfish } It tries to respect physics equations where possible but uses cheap [approximations](approximation.md) otherwise. For example all shapes are in fact just soft bodies made of spheres connected by stiff wires, i.e. there are no other primitives like cuboids or capsules. Environments are made by defining a custom [signed distance field](sdf.md) (ish) function -- this allows setting up all kinds of environments (even [dynamic](dynamic.md) ones, precomputation is not required), checking a sphere-SDF collision is very easy.

@ -0,0 +1,3 @@
# TPE
TPE stands for [tinyphysicsengine](tinyphysicsengine.md).

@ -15,7 +15,7 @@ Here is a kind of concise sum up of uxn "ecosystem"/terminology/specs/etc.:
- **uxn** (also *uxn CPU*): The [virtual machine](virtual_machine.md), "computing backend", something that runs uxn binary *rom*s.
- so called *one page computer* (can implement itself in at most 500 lines of own assembly)
- has **2 circular [stacks](stack.md)**: working stack and return stack, each one has size of 256 bytes.
- **memory**: total size 64 kb, memory map is following:
- **memory**: total size 64 kB, memory map is following:
- 16 varvara devices, each one taking 16 bytes: the whole device section is called a **page**, the bytes inside it are called **ports**. A port that holds a [callback](callback.md) address is called **vector** (e.g. a mouse device will have a vector for *mouse click* callback).
- address 256: start of program instructions.
- extensible with so called *banks*.

@ -4,6 +4,8 @@
XXIIVV is a website and personal [wiki](wiki.md) (similar concept to [our wiki](lrs_wiki.md)) of a Canadian [minimalist](minimalism.md)/esoteric programmer/artist/[generalist](generalism.md) David Mondou-Labbe who calls himself "Devine Lu Linvega" (lol) who is a part of an artist/programmer group called [Hundred Rabbits](hundred_rabbits.md) who live on a ship. David seems to be a normie [SJW](sjw.md) [fascist](fascist.md), proclaiming "aggressivity" on his web (under "/ethics.html" on his site). The site is accessible at http://wiki.xxiivv.com/site/home.html. There are some real good and pretty bad things about it.
{ Holy shit his webring is cringe and toxic as fuck. One huge gay nazi wannabe "artist" circlejerk. It's like a small village worth of the kind of psychopaths who draw cute childish drawings of tiny animals with small hearts and love all around while at the same time advocating live castration of anyone who dislikes them. ~drummyfish }
Firstly let's see the letdowns: **HE LICENSES HIS ART AND SOME OF HIS CODE UNDER [CC-BY-NC-SA](cc_by_nc_sa.md) -- retard alert!**. Honestly he can shove this up his ass. He's a [capitalist](capitalist.md) [open soars](open_source.md) fanboy who oppresses others by trying to monopolizing art by keeping exclusive "commercial intellectual property rights". At least some of his code is [MIT](mit.md), but he also makes fucking [PROPRIETARY](proprietary.md) PAID software (e.g. Verreciel), then he somehow tries to manipulate readers of his website to believe he is "against capitalism" :'D The guy also seems **[egoistic](egoism.md) as fuck**, invents weird hipster names and "personal pronouns" for himself, has some ugly body modifications, wears cringe rabbit costumes, he thinks his art is so good he has to "protect" it with fascist licenses and writes in a cringe pompous/cryptic/poetic style probably in hopes to appear smart while just making it shithard to make sense of his texts -- truly his tech writings are literal torture to read. The only thing he's missing is a fedora. Anyway, that's just a quick sum up of the [cancer](cancer.md) stuff.
There are also nice things though, a few of them being:

Loading…
Cancel
Save