This commit is contained in:
Miloslav Ciz 2024-11-22 17:05:15 +01:00
parent 481775ca4b
commit 5e0ba22bba
10 changed files with 1877 additions and 1871 deletions

View file

@ -31,7 +31,7 @@ Let's write a simple algorithm that counts the number of divisors of given numbe
5. Write out the *divisor counter*.
6. If *divisor counter* is equal to 2, write out the number is a prime.
Notice that *x*, *divisor counter* and *currently checked number* are [variables](variable.md). Step 4 is a loop (iteration) and steps *a* and 6 are branches (selection). The flowchart of this algorithm is:
Notice that *x*, *divisor counter* and *currently checked number* are [variables](variable.md). Step 4 is a loop (iteration) and steps *a* and 6 are branches (selection). The [flowchart](flowchart.md) of this algorithm is:
```
START

2
art.md
View file

@ -2,7 +2,7 @@
*There is no indecency in art.*
Art is an endeavor (and by extension also its results) that seeks discovery and creation of [beauty](beauty.md) and primarily relies on intuition, its value is in feelings it gives rise to. While the most immediate examples of art that come to mind are for example [music](music.md) and painting, even the most [scientific](science.md) and rigorous effort like [math](math.md) and [programming](programming.md) becomes art when pushed to the highest level, to the boundaries of current knowledge where intuition becomes important for further development. Where exactly to draw the boundary between art and non-art is a matter of philosophy, [culture](culture.md) and personal opinion, but usually art is thought to require attributes of a living human being such as something akin "soul", thinking, intuition, experience, creativity and emotion -- that which is performed only mechanically is not seen as art. Even though latest [artificial intelligence](ai.md) shows that art can possibly be produced even by a machine, the machine has to be very sophisticated and mimic very complex human thinking -- even if made by a machine, there must be an element of [magic](magic.md) present, a touch of muse, something not completely understood, for a work to be classified as art. At [LRS](lrs.md) we use the word "art" quite broadly, not just for fine art, but also for any craft, and for that which might normally be called "[work](work.md)", as the word "work" to use carries a negative connotation.
Art is an endeavor (and by extension also its results) that seeks discovery and creation of [beauty](beauty.md) and primarily relies on intuition, its value is in feelings it gives rise to. While the most immediate examples of art that come to mind are for example [music](music.md) and painting, even the most [scientific](science.md) and rigorous effort like [math](math.md) and [programming](programming.md) becomes art when pushed to the highest level, to the boundaries of current knowledge where intuition becomes important for further development. Where exactly to draw the boundary between art and non-art is a matter of philosophy, [culture](culture.md) and personal opinion, but usually art is thought to require attributes of a living human being such as something akin "soul", thinking, intuition, experience, creativity and emotion -- that which is performed only mechanically is not seen as art. Even though latest [artificial intelligence](ai.md) shows that art can possibly be produced even by a machine, the machine has to be very sophisticated and mimic very complex human thinking -- even if made by a machine, there must be an element of [magic](magic.md) present, a touch of muse, something not completely understood, for a work to be classified as art. At [LRS](lrs.md) we use the word "art" quite broadly, not just for fine art, but also for any craft, and for that which might normally be called "[work](work.md)", as the word "work" to us carries a negative connotation.
**Good art always needs time**, usually a lot of time, and you cannot predict how much time it will need, **art cannot be made on schedule** or as a product. By definition creating true art is never a routine (though it requires well trained skills in routine tasks), it always invents something new, something no one has done before (otherwise it's just copying that doesn't need an artist) -- in this sense the effort is the same as that of research and science or exploring previously unwalked land, you can absolutely never know how long it will take you to invent something, what complications you will encounter or what you will find in an unknown land. You simply do it, fail many times, mostly find nothing, you repeat and repeat until you find the good thing. For this art also requires a lot of effort -- yes, there are cases of masterpieces that came to be very casually, but those are as rare as someone finding a treasure by accident. Art is to a great degree a matter of chance, trial and error, the artist himself doesn't understand his own creation when he makes it, he is only skilled at searching and spotting the good, but in the end he is just someone who invests a lot of time into searching, many times blindly.

View file

@ -2,9 +2,9 @@
Bloat is a very wide term that in the context of [software](software.md) and [technology](tech.md) means overcomplication, unnecessary complexity and/or extreme growth in terms of source code size, overall complexity, number of [dependencies](dependency.md), [redundancy](redundancy.md), unnecessary and/or useless features (e.g. [feature creep](feature_creep.md)) and resource usage, all of which lead to inefficient, badly designed technology with [bugs](bug.md) (crashes, unusable features, memory leaks, [security](security.md) vulnerabilities, ...), as well as great [obscurity](obscurity.md), ugliness, **loss of [freedom](free_software.md)** and waste of human effort. In simpler words: bloat is burdening [bullshit](bullshit.md) so to speak. Bloat is extremely bad and one of the greatest technological issues of today. Creating bloat is bad engineering at its worst and unfortunately it is what's absolutely taking over all technology nowadays, mostly due to [capitalism](capitalism.md) causing commercialization, [consumerism](consumerism.md), rushed "[just works](just_werks.md)" products, creating demand for newer hardware and so on, also allowing incompetent people ("let's push more women/minorities into programming") trying to take on jobs they are in no way qualified to do.
A related but different term is **bloatware**; it's more commonly used among normie users and stands for undesirable programs that eat up computer resources, usually being preinstalled by the computer manufacturer etc. Further on we'll rather focus on bloat as defined before.
A related but different term is **bloatware**; it's more commonly used among normie users and stands for undesirable programs that eat up computer resources, usually being preinstalled by the computer manufacturer (and often uninstallable) etc. Further on we'll rather focus on bloat as defined before.
TODO: history of bloat?
A bit of [history](history.md): overcomplicated and obfuscated technology has always been known to present an issue, however it seems like only with the arrival of personal computers it started to become a world wide [cancer](cancer.md) and absolutely serious threat to society. Some dictionaries date the first use of the word *bloatware* to the beginning of [1990s](90s.md), around the time when mainstreamization of computers began ([web](web.md), [Doom](doom.md), [Windows](windows.md), ...), specifically 1991 by *Business Week*. [Goolag](google.md) trends for terms *bloatware* and *software bloat* show an increased search frequency since the year 2010 (which [we](lrs.md) see more or less see as the year when the downfall of society started) and peak around 2015.
[LRS](lrs.md), [suckless](suckless.md) and some others rather small groups are trying to address the issue and write software that is good, [minimal](minimalism.md), reliable, efficient and well functioning. Nevertheless our numbers are very small and in this endeavor we are basically standing against the whole world and the most powerful tech [corporations](corporation.md). The issue lies not only in capitalism pushing bloat but also in common people not seeing the issue (partly due to the capitalist propaganda promoting [maximalism](maximalism.md)), no one is supporting the few people who are genuinely trying to create good tools, on the contrary such people often face hostility from the mainstream.

View file

@ -459,7 +459,7 @@ The output is:
16
```
The function power takes two parameters: `x` and `n`, and returns `x` raised to the `n`s power. Note that unlike the first function we saw here the return type is `int` because this function does return a value. **Notice the command `return`** -- it is a special command that causes the function to terminate and return a specific value. In functions that return a value (their return type is not `void`) there has to be a `return` command. In function that return nothing there may or may not be one, and if there is, it has no value after it (`return;`);
The function power takes two parameters: `x` and `n`, and returns `x` raised to the `n`s power. Note that unlike the first function we saw here the return type is `int` because this function does return a value. **Notice the command `return`** -- it is a special command that causes the function to terminate and return a specific value. In functions that return a value (their return type is not `void`) there has to be a `return` command. In a function that returns nothing there may or may not be one, and if there is, it has no value after it (`return;`);
Let's focus on how we invoke the function -- in programming we say we **call the function**. The function call in our code is `power(2,i)`. If a function returns a value (return type is not `void`), its function call can be used in any expression, i.e. almost anywhere where we can use a variable or a numerical value -- just imagine the function computes a return value and this value is **substituted to the place where we call the function**. For example we can imagine the expression `power(3,1) + power(3,0)` as simply `3 + 1`.
@ -625,17 +625,19 @@ int main(void)
In C programs you may encounter a **switch** statement -- it is a control structure similar to a branch `if` which can have more than two branches. It looks like this:
```
switch (x)
{
switch (x)
{
case 0: puts("X is zero. Don't divide by it."); break;
case 69: puts("X is 69, haha."); break;
case 42: puts("X is 42, the answer to everything."); break;
default: printf("I don't know anything about X."); break;
}
}
```
Switch can only compare exact values, it can't e.g. check if a value is greater than something. Each branch starts with the keyword `case`, then the match value follows, then there is a colon (`:`) and the branch commands follow. IMPORTANT: there has to be the `break;` statement at the end of each case branch (we won't go into details). A special branch is the one starting with the word `default` that is executed if no case label was matched.
NOTE: Why does switch statement exist and why is it so weird? It may seem a little arbitrary and weird, especially when with several if statements we can achieve the same things and can use more general conditions. Switch statement isn't just syntactic sugar, it normally gets translated to different instructions and using switch for checking many conditions at once will be typically much faster than using if statements. Basically switch internally creates a table that will allow the program to jump instantly to the correct label, avoiding checking conditions one by one.
Let's also mention some additional data types we can use in programs:
- `char`: A single text character such as *'a'*, *'G'* or *'_'*. We can assign characters as `char c = 'a';` (single characters are enclosed in apostrophes similarly to how text strings are inside quotes). We can read a character as `c = getchar();` and print it as `putchar(c);`. Special characters that can be used are `\n` (newline) or `\t` (tab). Characters are in fact small numbers (usually with 256 possible values) and can be used basically anywhere a number can be used (for example we can compare characters, e.g. `if (c < 'b') ...`). Later we'll see characters are basic building blocks of text strings.

View file

@ -14,8 +14,7 @@ The fact that cheating isn't after all such an issue is supported by the hilario
**It's impossible to prevent cheating**, contrary to what capitalists want you to believe. As always a capitalist will want to sell you the idea that anything can be achieved by investing enough money, that if they pay 100 experts on cheating and 100 experts on programming, they will create a miraculous algorithm that will catch any cheater. This is just theatre like any other business, we must realize that some things simply cannot be done. Even if you pay 100 experts on mathematics, you won't be able to solve something that's mathematically impossible -- but for the same amount of money you can convince people that you can. Let's continue with chess -- to prevent cheating, two players would have to be seated naked in an electromagnetically isolated soundproof box with no view outside, only with the chessboard. We know we can't do this, maybe we can come close during world championship, a match between two physically present humans, but not so much in over the board tournaments with hundreds of people around, players and spectators, who can freely walk around, go to the toilet, privacy has to be respected, people can communicate with undetectable visual signals, security and arbiters make errors, they're tired, under stress, lazy and negligent, can be bribed (or you may simply bribe a poor cleaning lady to smuggle you a phone to the toilet) and so on. However that's still nothing compared to online chess -- to think cheating can be prevented there is absolute madness and stupidity. All that can be done is to show exemplary punishments of a few blatant cheaters to create the illusion that cheating is eliminated. Cheating can't be prevented, you can only make people not notice them too much by eliminating those whose cheating is too obvious. There can exist no algorithm that will reliably detect a cheater from play alone (or even from a huge set of games), it's mathematically impossible -- like Daniil Dubov said: "the algorithms only detect idiots" and likewise it can be said that the existence of such algorithms only comforts idiots. A smart cheater won't be caught, only the stupidest that copy paste every single move from the latest stockfish will be spotted and publicly executed to assure the audience that "cheaters will get caught", but the smart ones won't be, those that will use the engine only sometimes, in critical situations, who will combine different engines and their older versions so that the moves will never match an output of any single one. There is no way to tell if a player is simply good because he sees the moves with his brain or because he sees them with an aid of a computer. Not even multi angle cameras all around watching the player would prevented cheating, there are thousands of ways to cheat this (feed false video, feed false audio while listening to advice, buy a miniature earbud, [anal bead](anal_bead.md), use Morse code tapping on the floor, let someone wave you signals through the window from the camera's blind spot, let someone communicate you advice through a single pixel on your screen that will get lost in video compression, ...). Of course the capitalist won't let you see the algorithms or his data, he'll say "trust us, we have a good algorithm and we are reducing cheating to minimum", he'll say the details can't be made public so that cheaters won't exploit the knowledge ([security through obscurity](security_through_obscurity.md)), but the real reason is simply that revealing the details would show their system doesn't really work. As always, they're only selling you an illusion.
Back in the day of early Internet there were practically no anticheating measures in online games and everything worked -- yes, cheaters did appear, but we must realize that it's not like EVERYONE will start to cheat immediately if there are no anticheat mechanisms. If you swim in a pool, you may sometimes drink someone's piss and if you play online games, you may sometimes meet a cheater -- unless you're a mentally unstable pussy, you can take it no problem. The existence of anticheat mechanisms may itself incite cheating even more by the effect of forbidden fruit, it becomes a challenge (and to some even business) to beat the system. If top 100 places in the ladder are all obvious cheaters, will anyone see any more fun joining them? No. If you have the need to compare yourself to others, just form a group of friends who you know don't cheat and compare your score or ratings among each other, ignore the anonymous cheaters.
Back in the day of early Internet there were practically no anticheating measures in online games and everything worked -- yes, cheaters did appear, but we must realize that it's not like EVERYONE will start to cheat immediately if there are no anticheat mechanisms. If you swim in a pool, you may sometimes drink someone's piss and if you play online games, you may sometimes meet a cheater -- unless you're a mentally unstable pussy, you can take it no problem. The existence of anticheat mechanisms may itself incite cheating even more by the effect of forbidden fruit, it becomes a challenge (and to some even business) to beat the system. If top 100 places in the ladder are all obvious cheaters, will anyone see any more fun joining them? No. If you have the need to compare yourself to others, just form a group of friends who you know don't cheat and compare your score or ratings among each other, ignore the anonymous cheaters. "B-but I want a whole multibillion dollar capitalist industry existing around my gayme else I can't enjoy it properly" -- well, then fuck you, you're broken and beyond saving, you are why everything sucks nowadays.
**Anticheating also doesn't make any sense.** Why would you want to ban cheating? Usually you'll get these answers:
@ -31,11 +30,12 @@ WORK IN PROGRESS
Here will be a general advice on how to cheat in online games and similar kinds of [competition](competition.md).
NOTE: obviously a lot of this advice revolves around [competition](competition.md), a concept that's itself unethical, so naturally a lot of the advice given here is likewise not embraced by [LRS](lrs.md), but it's simply how you cheat well in current society. In a good society that accepts cheating things would actually get much better, it would get easier to cheat and would no longer for example require lying, you'd just declare you're cheating and be fine.
NOTE: obviously a lot of this advice revolves around [competition](competition.md), a concept that's itself mostly unethical, so naturally a lot of the advice given here is likewise not embraced by [LRS](lrs.md), but it's simply how you cheat well in current society. In a good society that accepts cheating things would actually get much better, it would get easier to cheat and would no longer for example require lying, you'd just declare you're cheating and be fine.
- **Actually get somewhat good at the game.** This is step number one, a necessary prerequisite for success -- yes, successful cheating requires some "[work](work.md)", sometimes as much as actually getting legitimately good at the game -- cheating won't help you be lazier, it will just help you achieve seemingly better results. You can't fool anyone if you don't know basics of the game, and to fool experts you must at least be familiar with deeper aspects of the game. You must be able to mimic human play and not only that, you must mimic the best human play, answer questions about advanced concepts if someone interrogates you, demonstrate some skill if you're asked to show you can play or if you simply find yourself in a situation where you must play and can't cheat, like a real life event. If you just use chess engine to play better chess moves than the world champion but keep taking 1 minute to make absolutely obvious moves, or if someone talks to you and finds out you don't even know what "en passant" is or who Bobby Fisher was, you're absolutely busted right there. The most successful cheaters were actually often the BEST people at their game, for example Lance Armstrong, Riolu in Trackmania and so on. Successful cheating is not easy, it must be smart cheating, and smart cheating absolutely requires deep understanding of the game.
- **Get familiar with how they detect cheating.** Spend a lot of time on researching anti-cheating systems and how people detect cheaters, study how other cheaters got caught and avoid that. For example in chess the time you take to make certain moves is used to detect cheating, so you want to have this covered -- don't blindly copy moves from an engine, rather try to play yourself and then only in a critical situation quickly let engine suggest a move, but still think about why it's good etc. Let the engine only give you a slight push, like a wind in your back -- if you fly a jetplane against a sprinter, someone's probably going to notice. In [speedrunning](speedrun.md) every game has quirks that are used to detect for example splicing (likely the most common form of cheating speedruns) -- for example in Mario 64 they use the fact that Mario blinks regularly, so if the video is edited there will be a discrepancy, you must think about this. Audio is used for this too, make sure regular patterns in the background noise don't give away that you cut the video, check the audio spectrogram if it doesn't show the cuts etc.
- **Don't cheat too much, you increase the chance of providing proof of you cheating and/or making a mistake.** It's easy to cheat more and more once you see it's working, it becomes a very comfortable habit AND it also comes with you becoming more relaxed, careless and prone to making a mistake. But remember: this is what will most likely get you caught and this is what anti-cheaters also rely on -- they may already be suspecting you but waiting for more evidence, you don't want to provide it. Perfect cheat detection doesn't exist -- they like to pretend they have bulletproof methods but it's a facade, they in fact rely on you fucking up, you have to cooperate a bit to get caught -- don't do it. Serial killers usually get caught because they don't stop, they keep doing it over and over until they make one small mistake, or they simply give the investigators so much data that statistics eventually extracts proof and predictions from it: each new murder simply gives a new data point to the detectives that reveals a little bit more about your location, habits, modus operandi etc. Be paranoid: if no one is suspecting you, it may be the case they are secretly suspecting you and want you to think you're safe, they may be closely watching you, so if you can, stop cheating for a very long time, then it's more likely they stopped watching you due to spending too many resources for long time without any results. Also know that each new cheating attempt is also a new risk: more attempts equals greater overall probability of failure; even if there is just 1 in 100 chance of you getting caught, cheating 100 times is suddenly pretty dangerous. So only cheat very, very sparingly -- save it for when it matters. For example in a chess tournament play yourself against opponents you know you can beat alone and against the strong opponents only cheat in the key, decisive moment; then outside tournaments, when losing doesn't matter as much, try again to play yourself as much as possible.
- **Keep the disparity between your actual skill and cheated skill as low as possible** (this is related to "get good at the game" and "don't cheat too much") -- this makes it much harder to detect, prove and so minimizes the chance of you getting busted. Say that given some amount of invested energy you could make it to top 300 in the world, which may be fine but not good enough for you, you aim for top 100 -- then split the energy, invest part of it to legitimately getting to top 500, then spend the rest on boosting it with cheating to top 100; now if someone sees you legit playing, it's not immediately clear you're not actually on that level, they may think you're overrated, you've been lucky, that's you're just rusty at the moment, but no one can be sure you're cheating.
- **Be good with technology, know your shit.** If you're a [Windows](windows.md) used who tries to cheat by googling "minecraft cheating programs free download", you probably don't know shit about technology, you have to actually learn something. Many get caught for stupid shit like leaving metadata in their video that says the video is edited, or they have no clue that cheating software leaves [watermarks](watermark.md) in videos (this actually caught many geometry dash cheaters). Ideally you want to [program](programming.md) YOUR OWN tools, develop your own methods of modifying the game etc.
- **Don't overcomplicate it, [keep it simple](kiss.md).** Remember that less is more, a complex way of cheating is probably more likely to fail due to just one part failing.
- **Practice**, a cheater is like illusionist, he comes up with a trick but then also has to perfect its execution, he must NEVER fail it in public, else he gives it away. However practice in a way that doesn't pose risk, i.e. don't practice online against other people; instead practice offline, record yourself and see if you look convincing, if there is something suspicious etc. There may be a good way to e.g. fake blindfold plays by hiding a secondary monitor somewhere while wearing fake blindfold, however it's extremely hard to do many things at once so that you don't fuck anything up, some got caught like this because they were blatantly staring in the direction of the monitor and then sitting in very weird positions to see through the blindfold; one shitty [female](woman.md) streamer actually even fucked up by responding to Twitch chat she was reading on her hidden monitor when she was supposed to no longer see the monitor. You think it's stupid -- it is -- but under pressure it's extremely hard to do many things simultaneously correctly, you absolutely must train to avoid this kind of fuckup.

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

6
tas.md
View file

@ -6,12 +6,14 @@ Tool assisted speedrun (TAS, also more generally *tool assisted superplay*) is a
There is a website with videos of game TASes: https://tasvideos.org/.
TAS does NOT allow hacking the game in other ways than what's possible to achieve by simply playing the game, i.e. it is not possible to hex edit the game's code before running it or manipulate its RAM content at run time with external tools. However note that some games are buggy and allow things such as altering their RAM content or code by merely playing the game (e.g. Pokemon Yellow allows so called [arbitrary code execution](arbitrary_code_execution.md)) which generally IS allowed. The goal of TAS is merely to find, as best as we can, the series of game inputs that will lead to completing the game as fast as possible. For this the game pretty much needs to be [deterministic](determinism.md), i.e. the same sequence of inputs must always reproduce the same run when replayed later.
TAS does NOT allow hacking the game in other ways than what's possible to achieve by simply playing the game, i.e. it is not possible to hex edit the game's code before running it or manipulate its RAM content at run time with external tools. However note that some games are [buggy](bug.md) and allow things such as altering their RAM content or code by merely playing the game (e.g. Pokemon Yellow allows so called [arbitrary code execution](arbitrary_code_execution.md)) which generally IS allowed. The goal of TAS is merely to find, as best as we can, the series of game inputs that will lead to completing the game as fast as possible. For this the game pretty much needs to be [deterministic](determinism.md), i.e. the same sequence of inputs must always reproduce the same run when replayed later.
TAS runs coexist alongside RTA (non-TAS) runs as separate categories that are beneficial to each other: RTA runners come up with speedrunning techniques that TAS programmers can perfectly execute and vice versa, TAS runners many times discover new techniques and ideas for RTA runners (for example the insane discovery of groundbreaking noseboost when TAS was introduced to Trackmania). In fact RTA and TAS runners are many times the very same people. Of course if you submit a TAS run in RTA category, you'll be seen as a cheater.
TAS runs coexist alongside RTA (non-TAS) runs as separate categories that are beneficial to each other: RTA runners come up with speedrunning techniques that TAS programmers can perfectly execute and vice versa, TAS runners many times discover new techniques and ideas for RTA runners (for example the insane discovery of groundbreaking noseboost when TAS was introduced to Trackmania). In fact RTA and TAS runners are many times the very same people. Of course if you submit a TAS run in RTA category, you'll be seen as a [cheater](cheating.md).
Creating a TAS is not an easy task, it requires great knowledge of the game (many times including its code) and its speedrunning, as well as a lot of patience and often collaboration with other TASers, sometimes a TASer needs to also do some [programming](programming.md) etc. TASes are made *offline* (not in real time), i.e. hours of work are required to program minutes or even seconds of the actual run. Many paths need to be planned and checked. Compared to RTAs, the focus switches from mechanical skills towards skillful mathematical analysis and planning. While RTA runs besides skill and training also require risk planning, i.e. sometimes deciding to do something in a slower but safer way to not ruin a good run, TAS can simply go for all the fastest routes, no matter how risky they are, as there is certainty they will succeed. Besides this some technological prerequisites are necessary: the actual tools to assist with creation of the TAS. For many new [proprietary](proprietary.md) games it is extremely difficult to develop the necessary tools as their source code isn't available, their assembly is obscured and littered with "anti-cheating" malware. Many "[modern](modern.md)" (even [FOSS](foss.md)) games are additionally badly programmed and e.g. lacking a [deterministic](determinism.md) physics, which makes precise TASing almost impossible (as the traditional precise crafting of inputs requires deterministic behavior). The situation is better with old games that are played in [emulators](emulator.md) such as [DOS](dos.md) games ([Doom](doom.md) etc.) or games for consoles like [GameBoy](gameboy.md) -- [emulators](emulator.md) can give us a complete control over the environment, they allow to save and load the whole emulator state at any instant, we may slow the time down arbitrarily, rewind and script the inputs however we wish (an advanced technique includes e.g. [bruteforcing](brute_force.md): exhaustively checking all possible combinations of inputs over the following few frames to see which one produces the best time save). In games that don't have TAS tools people at least try to do the next best thing with **segmented speedruns** (e.g. stitching together world record runs of each game level).
**TAS can make more sense and be a better spent time than RTA runs**, especially as RTA runs get so extremely optimized that further improvement will basically depend solely on getting extremely lucky in pulling off a single continuous chain of extremely hard techniques that will make achieving a new record only a matter of putting gargantuan numbers of hours to mindlessly grind over and over -- even with the highest skill chance plays the biggest role, that's why grinding is needed. This high level of optimization is already present in many games now -- many have become only about long hours of grinding, repeating the same learned mechanical movements over and over without thinking much, and this makes human basically a machine, a trained monkey put in front of a camera trying to hit a 1 in a million jackpot so that he starts crying which makes the audience emotional and they give him money. In reality this is no longer different from the human just flipping a coin, waiting to get N heads in a row: there is no value in wasting effort this way, a machine can do instantly what the human is trying to do for hundreds of hours, it's nothing more than a circus of wanting to see a human basically by pure chance imperfectly repeat what the machine did. At this point we must say that's enough, this is how far humans got, now let's move to TAS. TAS makes people actually think, analyze and be creative again, it is how speedrunning can be sustained once RTA runs are over. However even TAS can reach its peak, it is possible (at least with some games) to mathematically solve them, finding the completely best solution with 100% certainty, ending all kinds of traditional speedrunning. It is also possible TAS will eventually stagnate in similar ways RTA runs do: by just needing tremendous amounts of energy for further progress (such as CPU time for brute forcing new options) -- here we should again stop voluntarily, there is no point in wasting tremendous resources on something so insignificant as seeing how an obscure game can be finished one millisecond faster. Just move on to another game, or find a different challenge in the same game.
A libre [game](game.md) (under [CC0](cc0.md)!) called [Lix](lix.md), a clone of [Lemmings](lemmings.md) is kind of based on making TAS runs, and it's excellent! In the game, like in original Lemmings, one has to manage a group of units to cooperate in overcoming obstacles and so get safely to the level exit; however, unlike Lemmings, Lix incorporates a replay system so the player may not just pause the game, accelerate or slow down the time, but also rewind back and issue commands perfectly on any any given frame. The game also shows to the player all necessary info like exact frame number, exact survivable jump height etc., so winning a level doesn't depend on fast reaction time, good estimate or grinding attempts over and over until one doesn't make any mistake -- no, solving the level is purely about thinking and finding the mathematical solution. Once one knows how to get to the exit, it's easy to program in any complex sequence of actions, and of course then he can rewatch it in real time and get this kind of rewarding movie in which everything is performed perfectly. Lix is really an excellent example of how TAS is not just 3rd party hacking of the game but inherent part of the original game's design, one that takes the fun to the next level.
There also exists a term *tool assisted superplay* which is the same principle as TAS but basically with the intention of just flexing, without the goal of finishing the game fast (e.g. playing a [Doom](doom.md) level against hundreds of enemies without taking a single hit).

File diff suppressed because one or more lines are too long

View file

@ -3,9 +3,9 @@
This is an autogenerated article holding stats about this wiki.
- number of articles: 607
- number of commits: 928
- total size of all texts in bytes: 4643388
- total number of lines of article texts: 34673
- number of commits: 929
- total size of all texts in bytes: 4651800
- total number of lines of article texts: 34712
- number of script lines: 294
- occurrences of the word "person": 9
- occurrences of the word "nigger": 100
@ -13,7 +13,7 @@ This is an autogenerated article holding stats about this wiki.
longest articles:
- [c_tutorial](c_tutorial.md): 128K
- [exercises](exercises.md): 112K
- [exercises](exercises.md): 116K
- [chess](chess.md): 96K
- [how_to](how_to.md): 76K
- [capitalism](capitalism.md): 76K
@ -35,51 +35,51 @@ longest articles:
top 50 5+ letter words:
- which (2579)
- there (2008)
- people (1862)
- example (1572)
- other (1452)
- about (1285)
- number (1281)
- software (1217)
- because (1015)
- program (1012)
- their (991)
- would (960)
- something (907)
- being (902)
- things (886)
- called (871)
- which (2581)
- there (2010)
- people (1870)
- example (1575)
- other (1457)
- about (1287)
- number (1280)
- software (1219)
- because (1018)
- program (1017)
- their (993)
- would (964)
- something (910)
- being (905)
- things (888)
- called (872)
- language (858)
- simple (811)
- numbers (811)
- computer (807)
- without (784)
- without (785)
- programming (743)
- however (734)
- however (736)
- different (732)
- these (723)
- these (724)
- function (722)
- world (693)
- world (694)
- system (672)
- doesn (660)
- should (652)
- doesn (661)
- should (658)
- while (638)
- games (638)
- still (634)
- point (624)
- drummyfish (617)
- simply (608)
- society (602)
- possible (588)
- using (584)
- still (637)
- games (637)
- point (625)
- drummyfish (615)
- simply (610)
- society (609)
- possible (592)
- using (585)
- though (561)
- https (560)
- though (559)
- always (555)
- course (553)
- course (554)
- similar (551)
- probably (543)
- probably (546)
- basically (542)
- memory (535)
- really (530)
@ -89,6 +89,18 @@ top 50 5+ letter words:
latest changes:
```
Date: Wed Nov 20 22:22:24 2024 +0100
anarchism.md
cheating.md
chess.md
exercises.md
go.md
less_retarded_society.md
random_page.md
version_numbering.md
wiki_pages.md
wiki_stats.md
www.md
Date: Tue Nov 19 22:31:10 2024 +0100
21st_century.md
art.md
@ -112,16 +124,6 @@ Date: Tue Nov 19 22:31:10 2024 +0100
xxiivv.md
zoomer.md
Date: Sun Nov 17 20:09:42 2024 +0100
exercises.md
often_confused.md
random_page.md
wiki_pages.md
wiki_stats.md
zoomer.md
Date: Sun Nov 17 15:37:32 2024 +0100
faq.md
human_language.md
libertarianism.md
```
most wanted pages:
@ -150,10 +152,10 @@ most wanted pages:
most popular and lonely pages:
- [lrs](lrs.md) (318)
- [capitalism](capitalism.md) (266)
- [capitalism](capitalism.md) (268)
- [c](c.md) (233)
- [bloat](bloat.md) (225)
- [free_software](free_software.md) (190)
- [free_software](free_software.md) (191)
- [suckless](suckless.md) (145)
- [game](game.md) (145)
- [proprietary](proprietary.md) (130)
@ -166,9 +168,9 @@ most popular and lonely pages:
- [math](math.md) (99)
- [programming](programming.md) (97)
- [gnu](gnu.md) (96)
- [linux](linux.md) (94)
- [linux](linux.md) (95)
- [shit](shit.md) (91)
- [fight_culture](fight_culture.md) (89)
- [fight_culture](fight_culture.md) (90)
- [bullshit](bullshit.md) (89)
- [hacking](hacking.md) (88)
- [corporation](corporation.md) (85)