Ciro Santilli OurBigBook.com $£ Sponsor €¥ 中国独裁统治 China Dictatorship 新疆改造中心、六四事件、法轮功、郝海东、709大抓捕、2015巴拿马文件 邓家贵、低端人口、西藏骚乱
video-game.bigb
= Video game
{tag=Audiovisual art}
{wiki}

<Ciro Santilli> used to <games young Ciro Santilli played>[play video games when he was young]. But after he reached 18 he got bored of them.

The problem is that no matter how you look at, the <Ciro Santilli's selfish desires>[how to become famous in the real world game] is just always more interesting and fulfilling.

Therefore adult Ciro enjoys only the following types of video game content in video form, so that other people waste their lives playing the games while you only see the highlights:
* <speedrunning>, including:
  * <tool-assisted speedrun>, Ciro's favorite by far
  * <real-time attack speedrun>
* <meta breaking glitches>, including in <speedrunning> and on <PvP>-games.
* <Magic: The Gathering>
* <Video game reviews>

The aspect Ciro enjoys about non-<PvP> games is atmosphere. Not as conveyed by useless story telling, but as conveyed by music and graphics, and the context deep idea. Legend of Zelda and Metroid come to mind.

And too many games commit the sins of dependency of dexterity, no save states, how do I skip this boring part, or jump straight to the beautiful one?

Another important point is; <the perfect video game is an infinitely hard one>.

It also doesn't help if you are already typing on a computer all day long on your job. Hands get tired. Eyes have an infinite capacity to consume useless <the best YouTube channels>[YouTube videos] however. Medically proved.

As a result, Ciro just watches videos about video games. Notably games he played when he was a teenager and already understand the rules for.

And things got even worse as after <Ciro Santilli's Open Source Enlightenment>, and he started to feel bad about playing <open source video game>[any game that is not open source].

\Image[https://raw.githubusercontent.com/cirosantilli/media/master/Five_year_old_Ciro_Santilli_playing_NES_on_a_joystick.jpg]
{title=Five year old <Ciro Santilli> playing <NES> on a joystick}
{description=He would get really mad because he could not finish those <Nintendo hard>[insanely hard games]. Desperate, his parents would have to call older kids from the neighbourhood to help out. Pro tip from the future: the classic controller would almost always have been a more efficient controller. Maybe this kind of crap shapes one's future?}

\Video[https://www.youtube.com/watch?v=xe9vdULH-4o]
{title=Supercut of https://doug.fandom.com/wiki/Doug%27s_Lost_Weekend[Doug S02E13 "Doug's Lost Weekend"] (1992)}
{description=
<Ciro Santilli> used to watch Doug as kid. Of all the episodes, only this one stuck to his mind as an adult. It really drove the point home. The pain and joy of being addicted to anything really. Thankfully wheneve Ciro got addicted to a video game, he also quickly got tired of it. His last temporary addiction episode as of 2022 was <Cataclysm DDA>!

It is also so awesome how the episode pictures Dougs imagination while playing the video game, which is much more realistic than the actual crude graphics. The <Nintendo hard> reference is also clear.

Another great point of the episode is how good it is to play a single player video game taking turns with a friend on your side. Both people have to be fully engaged, and the game <The perfect video game is an infinitely hard one>[has to be hard]. Perhaps those days are over now that everyone has their own computer and can each play together... and that is a huge shame. When playing on the couch with a friend, the one who is not playing can act as a copilot and thing more broadly as the other focuses on more specific details of execution. One is also reminded of <pair programming>.

Another great point is, partially when you are addicted, to play the video game at night until late, or very early in the morning. Ciro has fantastic memories of playing Zelda on the <Nintendo 64> on Sunday mornings, or his emulation experiences from late weekend evenings at university: <video Samba e Amor by Caetano Veloso (1975)>.

The followup lucky hat segment is also amazing: https://doug.fandom.com/wiki/Doug%27s_Lucky_Hat

Looking back, the series is still extremely charming. It is interesting how Doug's best friend Skeeter Valentine is green. Ciro thought he was indian, but https://doug.fandom.com/wiki/Skeeter_Valentine says he's black.
}

= Video game difficulty
{parent=Video game}

= The perfect video game is an infinitely hard one
{parent=Video game difficulty}
{tag=Essays by Ciro Santilli}

Ciro once commented that the best game is an infinitely hard one, where you can progress infinitely. To which his great friend J. replied:
\Q[Fine, so the perfect game for you is <mathematics>. Stage one: prove the <Riemann hypothesis>!]
Or more broadly, one may argue that the perfect video game is life itself, or difficult life goals like making money, becoming famous or changing the world.

Thinking about it, "infinitely hard" is perhaps not a very precise term, as it could be interpreted as impossible. And if you have mathematical proof that something is impossible, it would be "pointless" to try, trying would be equivalent to pure <meditation>.

Maybe a better way to put it would be in terms of a difficulty curve. Real life also <the development cycle time is your God>[involves a lot of waiting, either for some experiment to finish running, of for you mental energy to restore a bit].

But so be it, you get the idea.

But this is basically what Ciro feels on every video game. It happens too often on <player versus environment>[PVE] games that things are is either:
* too slow and easy (Ciro would rather skip those with saves made by other)
* or too fast hard, Ciro would rather <tool-assisted speedrun> those parts

Not to mention the incredible breach of <suspension of disbelief> of most PvE games where enemies are unbelievably stupid. E.g., why doesn't Bowser just build one fucking wall 15 tiles high to prevent Mario from coming through to his castle? And then put a gate and a hundred guards in front of it? TODO there was a YouTube video of this, I think it was Toad pointing it out to Mario that it is quite weird that Bowser is so stupid, it almost feels like he wants to be beaten.

= Life difficulty level meme
{parent=The perfect video game is an infinitely hard one}
{tag=Meme}

TODO there was one which was relly good, can't find it anymore. One day.

\Image[https://web.archive.org/web/20211019181749im_/https://starecat.com/content/wp-content/uploads/life-difficulty-depending-on-where-you-live-easy-medium-expert-nightmare-middle-west-europe-map.jpg]
{title=Life difficulty level meme with West Europe, East Europe, Turkey and Middle east}
{source=https://starecat.com/life-difficulty-depending-on-where-you-live-easy-medium-expert-nightmare-middle-west-europe-map/}

= Level: Asian
{parent=Life difficulty level meme}

https://knowyourmeme.com/memes/level-asian

This is true. The level of competition in <university entry exams> in Asia in insane in the early 21st century compared to the West.

This is actually both good and bad. <students must have a flexible choice of what to learn>[Good because it selects some very good exam passers. And bad because it selects some very good exam passers.]

= Nintendo hard
{c}
{parent=Video game difficulty}

= Good video game
{parent=Video game}

30 year old <Ciro Santilli> preferred <video game genre> is <survival games>

= Good video game to watch
{parent=Good video game}

This is a list of <video games> that are good to watch other people playing, even if you don't play yourself. And often they are better to watch than to play as you don't have to waste your time as much!

= Meta breaking glitch
{parent=Video game}
{tag=Break the meta}

A meta breaking <glitch> of a <video game> is a glitch that when discovered significantly <breaks the meta>.

In non-<video game>-game, it does sometimes happen that a meta is broken as well, but these events tend to be rarer and less dramatic than meta-breaking due to <computer program> glitches.

In <PvP> games, those glitches are generally forbidden by existing rules, and quickly patched after discovered.

In <speedrunning> however, they are either incorporated in the existing strategy, or may lead to the creation of a new run category for particularly significant glitches.

\Video[https://www.youtube.com/watch?v=oYqh_jfJU3I]
{title=The Controversial Olofboost by theScore esports (2018)}
{description=Descries the boost used by <Counter-Strike: Global Offensive>[CS:GO] pro-team Fnatic during the DreamHack Winter 2014 quarterfinals.}

= Video game by number of players
{parent=Video game}
{wiki}

= Multiplayer game
{parent=Video game by number of players}
{wiki}

= Player versus player
{parent=Multiplayer game}
{wiki}

= Tea-bagging
{parent=Player versus player}

https://www.giantbomb.com/tea-bagging/3015-142/#:~:text=Teabagging%20is%20a%20behavior%20popularized,over%20their%20body%20before%20respawning.

\Video[https://www.youtube.com/watch?v=CPTYtWg-GVA]
{title=How To Teabag Properly by BADASS GAMING (2017)}

= PvP
{c}
{synonym}

= Player versus environment
{parent=Video game by number of players}
{title2=PvE}
{wiki}

= Speedrun
{parent=Video game}
{wiki}

= Speedrunning
{synonym}

= Real-time attack speedrun
{parent=Speedrun}
{title2=RTA}
{wiki}

A non-<tool-assisted speedrun>.

<Ciro Santilli> views humans as <human brain>[biological robots], and therefore RTA videos can be thought of as probabilistic TAS with human achievable reflex constraints.

This aspect is especially highlighted in "speed run record evolution videos", which can be quite fun, e.g. https://www.youtube.com/watch?v=pmS9e7kzgS4 <Ocarina of Time> - World Record History and Progression (Any% Speedrun, 1990s-2017) by retro (2017)

From a similar point of view, Ciro also sometimes watches/learns a bit about competitive <PvP> games from a <Ciro's 2D reinforcement learning games>["could a computer play this better than a human"] point of view.

Ciro also likes to watch commented manual speedruns of games as a way of experiencing the game at a high level without spending too much time on it, often from https://en.wikipedia.org/wiki/Games_Done_Quick[Games Done Quick]. Their format is good because it generally showcases one player focusing more on the gameplay, and three couch commentators to give context, that's a good setup.

It is a

= Tool-assisted speedrun
{parent=Speedrun}
{title2=TAS}
{wiki}

To some extent, the ultimate achievement of a TAS is to achieve <arbitrary code execution> (ACE) on a game, although this has been becoming rarer and rarer in newer consoles. The <Nintendo 64> is the current interesting ACE discovery frontier as of 2020.

Post ACE, you then get into more subtle categories which tend to be more geometric clipping through wall glitches, but those can still be fun.

The most beautiful TAS content ever made are:
* <Super Mario 64>
  * <Super Mario 64 A press challenge>
  * 1-key any percent run:
    * 2016 emulator run: https://www.youtube.com/watch?v=TkOkJvLKxUY
    * AGDQ 2018 commented TASBOT console verification: https://www.youtube.com/watch?v=xvWOLT9G6tM
    * Why we need one key: https://gaming.stackexchange.com/questions/249969/in-mario-64-speedruns-why-are-the-keys-necessary/351595#351595
  * related: <Super Mario 64 reverse engineering project>
* Super Mario World for the <SNES> arbitrary code execution
  * https://www.youtube.com/watch?v=OPcV9uIY5i4 with in-game programmed <Pong> and Snake, 2014
  * https://www.youtube.com/watch?v=HxFh1CJOrTU Seth Bling does the credit warp manually in about 3 minutes, 2015. Later reduced to less than 1 minute: https://www.youtube.com/watch?v=Jf9i7MjViCE
  * https://www.youtube.com/watch?v=voL3e0iqugo ACE was initially not forbidden in 11 exit rules, so Seth made an in-game manual ACE that programs an in-game accessible "exit stage now" functionality!!! This was later forbidden of course, but it was fun while it lasted.
    * then he injected a Flappy Bird clone manually!!! https://www.youtube.com/watch?v=hB6eY73sLV0, 2016
* <Ocarina of Time>
  * 2020 ACE via https://cwe.mitre.org/data/definitions/416.html[use after free] including a non-TAS credit warp faster than the 2016 wrong glitch: https://www.polygon.com/2020/1/24/21080568/zelda-ocarina-of-time-arwing-spawn-video-speedrun-credits-ace-cheat-code ACE later reproduced in Majora's Mask, which has a similar <game engine>.
  * 2016 Zelda Ocarina of Time wrong warp glitch:
    * https://www.youtube.com/watch?v=uCO0jU66g3g 2016 video
  * https://www.youtube.com/watch?v=Gso4MuNSuV8 EZScape explains the glitch, 2016
* Zelda Majora's Mask debug menu
  * https://www.youtube.com/watch?v=2wdchm5Uwp4&t=2086s first video
  * https://www.youtube.com/watch?v=CCubcEgnD6A overview

It is also amusing to see http://tasvideos.org/ConsoleVerificationGuide.html[console verification] of emulations, e.g.: <video Super Mario 64 '120 Stars' in 1:20:41.52 Console Verified by Soul Umbreon (2012)>.

\Video[http://youtube.com/watch?v=BFBGWrGT1E8]
{title=<Super Mario 64> '120 Stars' in 1:20:41.52 Console Verified by Soul Umbreon (2012)}

= Software toy
{parent=Video game}

* https://en.wikipedia.org/wiki/Toy_program
* https://en.wikipedia.org/wiki/Non-game

<Ciro Santilli>'s TODO there:
* robotics simulation with <control theory> focus, and in particular with a model of uncertainty of measurements and commands. For example, imagine making a robot that plays golf, with the terrain fully known. And it is harder as you cannot control the arm with 100% precision.

= Open source video game
{parent=Video game}
{tag=Open source software}

Lists:
* https://www.slant.co/topics/1933/~best-open-source-games
* https://libregamewiki.org/Main_Page

Why would anyone ever waste time playing a closed source game, when this will inevitably lead to endless hours of decompilation down the line when you want to:
* fully understand how the game works, notably to help with <tool-assisted speedrun>[TASsing]
* improve the game's flaws as devs drop support (https://www.vg247.com/2018/09/14/isnt-ps4-xbox-switch-port-final-fantasy-8-preservation-may-answer/[or lose source code and have to late <reverse engineering>[reverse-engineer] their own fucking game]?) :-)

Those who devote their time to the <art>[useless] development of open source video games, <integrated development environment>[before we even have decent open source development tooling], will, without a doubt, have their place in Heaven.

* tower defense
  * https://www.edopedia.com/demo/pixeldefense possible source https://github.com/jesseakt/PixelDefense 2020-03 desperately lacks a fast forward button and enemy health bars
* platformer
  * 2D platformer
    * teeworlds: does not run on Ubuntu 21.10, `X Error of failed request:  BadValue`
  * 3D platformer
    * http://edelweiss.32x.io/
* OpenClonk: Terraria-like 2D mining crafting game. Pretty well done. Not sure if you can have a super huge open world. The fact that the music stops completely so often is a bit saddening.
* https://en.wikipedia.org/wiki/Pingus[Pingus]: Lemmings clone. Very good!
* https://github.com/The-Powder-Toy/The-Powder-Toy[]: https://en.wikipedia.org/wiki/Falling-sand_game in C++. No Ubuntu 19.10 package it seems, but was easy to compile from source.
* <roguelike>
  * <Cataclysm: Dark Days Ahead>
* <Worms (series)> clone
  * Hedgewars
* pokemon clone:
  * Tuxemon. Worked on <Ubuntu 21.10>. 20ea4181e1c0db04934ee69951ea1836a3b1f642
* ARPG
  * <Diablo II> clones:
    * https://github.com/flareteam/flare-game game engine
    * https://flarerpg.org/mods/flare-empyrean/ game made with the engine
    v1.12 download Worked well on <Ubuntu 21.10>.
  * The Mana World: https://www.themanaworld.org/ Started somewhat as a loose The Secret of Mana clone, but they've added online play capabilities, effectively making it a <MMORPG>.

    Their user acquisition as of 2021 is really bad. Download is a wiki page, there are two client versions, etc. The .deb did not work out o box on <Ubuntu 21.10> due to unmet dependencies:
    ``
    sudo apt install ./manaplus_amd64.deb
    ``
    fails with:
    ``
    manaplus : Depends: libpng12-0 (>= 1.2.13-4) but it is not installable
                Depends: libsdl-gfx1.2-4 (>= 2.0.22) but it is not installable
                Depends: manaplus-data (= 1.6.4.23-2) but 1.9.3.23-6 is to be installed
    ``
    so it won't be able to play without trying to compile and possibly minor ports since the deb does not packs dependencies. Some requests for a release with <cross distro package manager>[all dependencies prepacked]:
    * https://gitlab.com/manaplus/manaplus/-/issues/9
    * https://gitlab.com/manaplus/manaplus/-/issues/2
    Their home page says it all:
    \Q[Server status: Online: 9 players]
    Sad.
* <Factorio> clones:
  * https://github.com/tobspr/shapez.io Also browser based.

YouTube review channels:
* https://www.youtube.com/c/OpenSourceGames

= Open source video game library
{parent=Open source video game}

= Simple DirectMedia Layer
{c}
{parent=Open source video game library}
{wiki}

= SDL
{c}
{synonym}
{title2}

This is a really good project. So fun to play around with. Low level IO part only like drawing to screen and handling keyboard inputs.

<Ciro Santilli> has:
* a few answers on <Stack Overflow>: https://stackoverflow.com/search?tab=votes&q=user%3a895245%20%5bsdl%5d
* a small cheatsheet on: https://github.com/cirosantilli/cpp-cheat/tree/09cb7c9fc1ee4a8bee421f12d0596b81cfd836bd/sdl

= Open source video game asset
{parent=Open source video game}

= game-icons.net
{c}
{parent=Open source video game asset}

https://game-icons.net/

This is a good project. Limited scope to 2D card-like <games>, but very good within that scope.

<Ciro Santilli> used it for the 2D version of his <Ciro's 2D reinforcement learning games>.

= Video game modding
{parent=Video game}
{wiki}

= Modding
{synonym}

= Modder
{synonym}

= Video game console company
{parent=Video game}

= Nintendo
{c}
{parent=Video game console company}
{wiki}

= Nintendo franchise
{c}
{parent=Nintendo}
{wiki}

= Pokemon
{c}
{parent=Nintendo franchise}
{tag=Games young Ciro Santilli played}
{wiki=Pokémon}

One of the main <children cartoons Ciro Santilli liked to watch>. Part of the <Pokemon Mania> of the 90s of course.

Ciro could not understand why Nintendo won't make a proper 3D https://en.wikipedia.org/wiki/Massively_multiplayer_online_role-playing_game[MMORPG] Pokemon with actually 3D Pokemon roaming the land, which is obviously what everyone wants. There are even fan games getting there!
* https://pokemon-mmo-3d.com Interesting concept here, where when you deploy a Pokemon, you start controlling the Pokemon rather than the main character
* https://www.quora.com/Why-won-t-Nintendo-make-an-open-world-3D-Pokémon-RPG/answer/Ciro-Santilli
until this explaiend it beautifully <video The Downfall Of Mainline Pokemon Games by [GONZ] media (2020)>:
* Pokemon became an <industrialized> yearly game spitting machine, and therefore any new feature is just extra risk
* Pokemon was kept mostly as a handheld exclusive to sell handlhelds, with a few early exceptions such as https://en.wikipedia.org/wiki/Pokémon_Snap[Pokemon Snap]

\Image[https://web.archive.org/web/20191212074929im_/https://marketoonist.com/wp-content/uploads/2014/07/140707.safeisrisky.jpg]
{title=Instead of risking anything new, let's play it safe by continuing our slow decline into obsolecense cartoon by Tom Fishburne}
{source=https://marketoonist.com/2014/07/safe-is-risky.html}

\Video[https://www.youtube.com/watch?v=4Bbjq9_mKMU]
{title=The Downfall Of Mainline Pokemon Games by GONZ media (2020)}
{description=Great video, explains things Ciro had never thought about, e.g. how the Nintendo Switch unified handheld and console for Nintento, this could open the doors for a more ambitious Pokemon release.}

= Pokemon Mania
{c}
{parent=Pokemon}
{title2=1990s}

\Video[https://www.youtube.com/watch?v=x4aHj22tHRg]
{title=Pokemania Comes to America by ABC News (1999)}
{description=<Ciro Santilli> was a part of it! Especially during <Ciro Santilli's 10 month stay in Coventry, United Kingdom, in the year 2000>!}.

= Super Mario
{c}
{parent=Nintendo franchise}
{wiki}

= Super Mario game
{parent=Super Mario}

= The Legend of Zelda
{c}
{parent=Nintendo franchise}
{wiki}

= The Legend of Zelda game
{c}
{parent=The Legend of Zelda}

= The Legend of Zelda: Ocarina of Time
{c}
{parent=The Legend of Zelda game}
{tag=Nintendo 64 game}
{tag=Good video game}
{tag=Games young Ciro Santilli played}
{title2=1998}
{wiki}

= Ocarina of Time
{c}
{synonym}

This game was mind blowing to <Ciro Santilli> and all kids. It felt so real. The perfect contrast between peaceful town work and saving the world. OMG.

\Image[https://web.archive.org/web/20220618202144im_/https://garethrees.org/2004/12/01/ocarina-of-time/01-item-graph.png]
{description=Subset of the dependency graph of <Ocarina of Time>}
{source=https://garethrees.org/2004/12/01/ocarina-of-time/}

= Nintendo video game console
{c}
{parent=Nintendo}
{wiki}

= Nintendo Entertainment System
{c}
{parent=Nintendo video game console}
{title2=1983}
{wiki}

= NES
{c}
{synonym}
{title2}

= NES game
{c}
{parent=Nintendo Entertainment System}

= Super Mario Bros.
{c}
{parent=NES game}
{tag=Games young Ciro Santilli played}
{title2=1985}
{wiki}

= Super Mario Bros. reverse engineering
{c}
{parent=Super Mario Bros.}
{tag=Video game reverse engineering}

Commented and labelled disassembly: https://gist.github.com/1wErt3r/4048722

<Decompilation> project: https://github.com/MitchellSternke/SuperMarioBros-C[]. That project does not produce the ROM however, it reimplements an emulator + game in a single binary.

\Video[https://www.youtube.com/watch?v=X_xoKqLQrvs]
{title=Small Fire Mario glitch by Kosmic (2022)}

\Video[https://www.youtube.com/watch?v=ww_rRwfIsB0]
{title=Beating <Super Mario Bros.> as SLOWLY as Possible by Kosmic (2020)}

= Super Nintendo Entertainment System
{c}
{parent=Nintendo video game console}
{title2=1990}
{wiki}

= SNES
{c}
{synonym}
{title2}

= Super Nintendo game
{c}
{parent=Super Nintendo Entertainment System}

= Final Fantasy VI
{c}
{parent=Super Nintendo game}
{tag=Good video game}
{tag=Games young Ciro Santilli played}
{wiki}

OMG, the second half of the game where the world becomes quite open and all <backstories> are revealed, is one of the best gaming moments ever.

= Super Mario World
{c}
{parent=Super Nintendo game}
{tag=Good video game}
{tag=Games young Ciro Santilli played}
{tag=Super Mario game}
{wiki}

= Nintendo 64
{c}
{parent=Nintendo video game console}
{title2=1996}
{wiki}

This is the one that hit <Ciro Santilli> the hardest, coming in at the point in which he started to discern between games and the real world a little better. His parents bought it for him during a trip to Disney World in Florida in 1996 (?), since electronics were much cheaper in the <USA>.

So as Ciro became older, and turned into a <software engineer>, he started to become more and more morbidly curious about "N64 internals": <tool-assisted speedrun>, how the devkit looks like, how games were developed for it, hardware leaks, etc.

Luckily Ciro's mind is not interested enough by that <art>[useless shit] for Ciro to seriously study it himself. But that's what <YouTube> is for, right? Why do useless stuff when other more useless people can do it for you?

The console has only 4 MB of <RAM> memory. It is quite incredible what can be done with 8 MB, from the point of view of a 2020 worls where 16 GB laptops are the norm.

= Nintendo 64 emulators
{c}
{parent=Nintendo 64}

= Mupen64Plus
{parent=Nintendo 64 emulators}

= Nintendo 64 game
{c}
{parent=Nintendo 64}

= Super Mario 64
{c}
{parent=Nintendo 64 game}
{title2=1996}
{tag=Super Mario game}
{tag=Good video game}
{tag=Games young Ciro Santilli played}
{wiki}

Ah, <Ciro Santilli> loved this one... <games young Ciro Santilli played>.

And as a result, adult Ciro really enjoys <tool-assisted speedruns> of the game.

= Music of Super Mario 64
{parent=Super Mario 64}

It is interesting how the Etyptian level, Shifting Sand Land, clearly has <Indian classical music>, with sitar, tanpura and tabla:
* https://www.reddit.com/r/musictheory/comments/aq0wry/origin_of_egyptiansounding_music/
* https://gamefaqs.gamespot.com/boards/198848-super-mario-64/75607593
Apparenty we don't know what Egyptian music would have sounded like exactly.

\Video[https://www.youtube.com/watch?v=PE7r5trvOUI]
{title=The Music of <Super Mario 64> by James Covenant (2017)}

= Super Mario 64 A press challenge
{c}
{parent=Super Mario 64}
{tag=Famous conjecture}

No-A press 120 stars <tool-assisted speedrun> attempts by Pannenkoek:
* https://en.wikipedia.org/wiki/Pannenkoek2012
* https://youtube.fandom.com/wiki/Pannenkoek2012

\Video[https://www.youtube.com/watch?v=RJaL5QOq590]
{description=The 23 Remaining A Presses by Pannenkoek2012 (2018)}
{title=Video outlining the 18 unique A presses missing for 120-stars at the time. This was superseded later. with many other discoveries.}

\Video[https://www.youtube.com/watch?v=kpk2tdsPh0A]
{title=Watch for Rolling Rocks 0.5x A Presses by Pannenkoek2012 (2016)}
{description=This is one of the most elaborate explained videos.}

= Super Mario 64 reverse engineering project
{c}
{parent=Super Mario 64}
{tag=Video game decompilation}
{title2=n64decomp/sm64}

https://github.com/MitchellSternke/SuperMarioBros-C

OMG, both of those just <fucking> work on <Ubuntu 20.04> with README instructions, it is unbelievable, those people don't have lives. And it builds the ROM <Reproducible builds>[byte by byte equal from source]!

There are a few different versions:
* https://github.com/n64decomp/sm64 for <emulator> (i.e. or real hardware), tested at 9214dddabcce4723d9b6cda2ebccbac209f6447d
* https://github.com/sm64-port/sm64-port <Ubuntu> native, tested at 6b47859f757a40096fedd6237f2bc3573d0bc2a4

  Full screen with F10.
* https://github.com/sm64pc/sm64ex[]: fork of sm64-port, untested by <Ciro Santilli>, but more new amazing usability features, notably:

  * `--skip-intro`: skips the annoying pipe intro and the need to wait for Lakitu to bring Peaches message!
  * in-game menu:
    * cheats:
    * hide HUD!
  * no level selection yet, but a matter of time?
    * https://github.com/sm64pc/sm64ex/pull/417
    * https://github.com/sm64pc/sm64ex/pull/402
    * https://github.com/sm64pc/sm64ex/issues/425
    * https://github.com/sm64pc/sm64ex/issues/424

  Also reported to work on ARM: https://www.reddit.com/r/linux/comments/ityg6w/pinephone_playing_super_mario_64_30fps/

  They also ported to browser with Emscripten: https://github.com/sm64pc/sm64ex/wiki/Compiling-for-the-web

Tested with the USA ROM at <sha1sum> 9bef1128717f958171a4afac3ed78ee2bb4e86ce (you need a ROM to extract assets, which the project automates), which is also documented in the project itself: https://github.com/sm64-port/sm64-port/blob/6b47859f757a40096fedd6237f2bc3573d0bc2a4/sm64.us.sha1[]. Disclaimer: <Ciro Santilli> owns a copy of <Super Mario 64>.

The only dependency missing from Ubuntu packages is the https://en.wikipedia.org/wiki/IRIX[IRIX] <QEMU> https://cirosantilli.com/linux-kernel-module-cheat/#user-mode-simulation[user mode] which they need for their tooling. The project also has a QEMU fork for that, and provide a working deb.

From this project it was also noticed that certain ROM releases were not compiled with optimizations enabled, presumably because as a release title the compiler had optimization bugs! https://www.resetera.com/threads/so-apparently-the-ntsc-build-of-mario-64-didnt-use-any-compiler-optimizations.166277/ But now they do have a working compiler, and by turning that switch FPS increases in certain levels!!!

It is good to know that this game will "never die".

Some quick stupid patches:

* jump really high:

  ``
  diff --git a/src/game/mario.c b/src/game/mario.c
  index 5b103fa..83c9f40 100644
  --- a/src/game/mario.c
  +++ b/src/game/mario.c
  @@ -826,7 +826,7 @@ static u32 set_mario_action_airborne(struct MarioState *m, u32 action, u32 actio
           case ACT_JUMP:
           case ACT_HOLD_JUMP:
               m->marioObj->header.gfx.unk38.animID = -1;
  -            set_mario_y_vel_based_on_fspeed(m, 42.0f, 0.25f);
  +            set_mario_y_vel_based_on_fspeed(m, 200.0f, 0.25f);
               m->forwardVel *= 0.8f;
               break;
  ``

Interesting entry points:
* `src/game/game_init.c`

TODO: enable the level select debug feature! https://tcrf.net/Super_Mario_64_(Nintendo_64)/Debug_Content#Classic_Debug_Display They actually shipped quite a few debug features into the retail game, and they have been reversed too. I tried this but it didn't work (or I don't know how to enable the level select menu):
``
diff --git a/src/game/main.c b/src/game/main.c
index 9e53e50..b7443a8 100644
--- a/src/game/main.c
+++ b/src/game/main.c
@@ -65,7 +65,7 @@ s8 sAudioEnabled = 1;
 u32 sNumVblanks = 0;
 s8 gResetTimer = 0;
 s8 D_8032C648 = 0;
-s8 gDebugLevelSelect = 0;
+s8 gDebugLevelSelect = 1;
 s8 D_8032C650 = 0;

 s8 gShowProfiler = FALSE;
``

The `enhancements/` folder contains a few sample patches.

\Image[https://raw.githubusercontent.com/cirosantilli/media/master/Screenshot_of_Mupen64Plus_running_on_Ubuntu_20.04_emulating_Super_Mario_64_with_the_title_screen_hacked_by_Ciro_Santilli.png]
{height=500}
{title=Screenshot of <mupen64Plus> running on <Ubuntu 20.04> emulating <Super Mario 64> with the title screen hacked by <Ciro Santilli> based on the <Super Mario 64 reverse engineering project>}
{description=
The title was on a string, so the hack was trivial! The patch used was:
``
diff --git a/include/text_strings.h.in b/include/text_strings.h.in
index 749179b..626f87e 100644
--- a/include/text_strings.h.in
+++ b/include/text_strings.h.in
@@ -131,7 +131,7 @@
  */
 // Main Screens
 #define TEXT_MARIO _("MARIO") // View Score Menu
-#define TEXT_SELECT_FILE _("SELECT FILE")
+#define TEXT_SELECT_FILE _("HACKED BY CIRO")
 #define TEXT_CHECK_FILE _("CHECK FILE")
 #define TEXT_COPY_FILE _("COPY FILE")
 #define TEXT_ERASE_FILE _("ERASE FILE")
``
}

Some tutorials of hacking it:
* https://www.youtube.com/watch?v=Jkb7Naczoww SM64 Decomp Tutorial 1: Setting Up and First Code Changes by Bitlytic (2021)
* https://www.youtube.com/watch?v=IuIpqX4neWg Rovert Decomp Tech Demo by Rovert (2019) Metal cap makes Mario huge.
* https://www.youtube.com/watch?v=5aG1Iyjo20w Is it Possible to Beat Super Mario 64 as Tiny Mario? (Mini Mario Challenge) coverts the obvious make Mario huge/tiny hack. Huge mario verion: https://www.youtube.com/watch?v=pR_gol6zlIo[]. There was a pre-decompilation ROM hack doing that trivial change already: Tiny Huge Mario 64. Sample <tool-assisted speedrun>: https://www.youtube.com/watch?v=C7BjzZ_Nkk0 

\Video[https://www.youtube.com/watch?v=t_rzYnXEQlE]
{title=FIXING the ENTIRE SM64 Source Code by Kaze Emanuar (2022)}
{description=Now that we have the source, <modders> like this are going nuts.}

= Mario Kart 64
{c}
{parent=Nintendo 64 game}
{tag=Good video game}
{tag=Vehicular Combat video game}
{wiki}

<Ciro Santilli> really liked the battle mode on this.

= Mario Kart 64 clone
{c}
{parent=Mario Kart 64}

= SuperTuxKart
{c}
{parent=Mario Kart 64 clone}
{tag=Open source video game}
{wiki}

It is a shame, but this game just doesn't feel good. The controls are just not as snappy as <Mario Kart 64>, the levels are too wide which limits player interaction, and the weapons feel clumsy weak and unexciting. These are all aspects that the closed source <smashkarts.io> gets pretty well.

= smashkarts.io
{parent=Mario Kart 64 clone}
{tag=Browser game}

https://smashkarts.io/

Quite good, <Ciro Santilli> played this a lot in 2021/2022, his user ID: ofo5fNy7wRNC1Cw94YVB4KMOW5f2.

The physics not as good as the original <Mario Kart 64>, and it is notably missing jump gliding, and generally not as sharp! But it is really not bad.

Some of the weapons were too useless that you are just better firing them straight away at wall immediately to get something better, they could have a little better balancing there. I'm talking about you gatling that takes 10 seconds to finish firing, and does not kill enemies immediately. You are better off just firing that gun immediately when you get it to be able to get another gun ASAP. They seem to have done some balancing there however.

It had no chat option, but in a way it was cool to be forced to communicate non-verbally with people whose usernames you got familiar with. Funny you can love people like that, without ever talking to them. The best way of doing so being <tea-bagging> by going back and forth on a player after winning.

Performance was sometimes a problem. When Ciro tried it again on December 2022, it was unplayable due to the impossibly large lag. Tiings were much better again in 2023 however it seems.

= Sony
{c}
{parent=Video game console company}
{wiki}

= Sony video game consoles
{c}
{parent=Sony}
{wiki=Category:Sony_consoles}

= Playstation
{c}
{parent=Sony video game consoles}
{wiki}

= Playstation games
{c}
{parent=Playstation}
{wiki}

= Suikoden
{c}
{parent=Playstation games}
{tag=Role-playing video game}

This game (1 or 2, can't remember) made an impression on <Ciro Santilli> for some reason.

Only many many years after playing it, after Ciro <Ciro Santilli's campaign for freedom of speech in China>[started getting more interested], did he learn that it was actually an adaptation of the <Chinese> mega-classic <Water Margin>.

Yet another case of <Chinese thing better known in the West as Japanese>.

The game puts great emphasis on the concept of the <108 Stars of Destiny>, which never left Ciro's mind: making 108 allies, the main <collectible (video game design)> of the game, allows you to make a more powerful alliance, and unlock better endings.

= Video game graphics
{parent=Video game}
{wiki}

= 2D game
{parent=Video game graphics}
{tag=2d computer graphics}

= Gridworld
{parent=2D game}

A discrete 2D game on a rectangular grid: https://towardsdatascience.com/reinforcement-learning-implement-grid-world-from-scratch-c5963765ebff

This is analogous to many traditional <board games> such as <chess>, the concept is very natural and maps well into computer.

The downsides of gridworld games are:
* it is hard to model speed in discrete worlds. When you 10x faster, when do you collide with something else that is also crossing your path?
* they tend to not use vector representations of objects. So to have an object be 10x longer than another one, the naive implementation has to add 10 smaller objects. This becomes untenable as the number of objects increases.

= 2D continuous game
{parent=Video game graphics}

= 3D game
{parent=Video game graphics}
{tag=3d computer graphics}

= Text-based game
{parent=Video game graphics}
{wiki}

Although <Ciro Santilli> is a big fan of <plaintext files> and of <Vim>, not so for games. Games must be easy to understand since they are just a toy.

<Tilesets> to the rescue!

= bsdgames
{c}
{parent=Text-based game}
{tag=Good}

There is great beauty here. Great beauty.

= primes
{c}
{disambiguate=bsdgames}
{parent=bsdgames}

= Tile-based video game
{parent=Text-based game}
{wiki}

= Tileset
{parent=Text-based game}
{wiki}

= Video game platform
{parent=Video game}
{wiki}

= Browser game
{parent=Video game platform}
{wiki}

There's a beauty in the portability of browser games.

The fact that the browser is not the main gaming platform as of 2020 shows how crappy web tech is. There is no fundamental reason why it shouldn't be so.

= PC game
{c}
{parent=Video game platform}
{wiki}

= Video game console
{c}
{parent=Video game platform}
{wiki}

Who needs a hackable general purpose <computer>, when you can buy a completely locked down computer that only runs <art>[useless] programs for which you have to https://en.wikipedia.org/wiki/Game_development_kit[pay thousands of dollars to develop] for, https://en.wikipedia.org/wiki/Platform_exclusivity[cannot run a large percentage of major titles from competitor hardware due to business deals] (https://gamedev.stackexchange.com/questions/124697/why-do-game-developers-develop-games-for-exclusive-contracts[see also]) and will inevitably reach <planned obsolescence> in 4 years?

By company:
* <nintendo video game consoles>

= Arcade game
{parent=Video game console}
{wiki}

= Pac-Man
{c}
{parent=Video game console}
{wiki}

= Pong
{c}
{parent=Video game console}
{wiki}

= Video game design
{parent=Video game}
{wiki}

= Collectible
{disambiguate=video game design}
{parent=Video game design}
{tag=Collecting}

= Video games exist to fulfull unmet psychological needs of industrialized society
{parent=Video game design}

Related: <video Why football is the most popular sport in the world by Desmond Morris}>

= Video game reverse engineering
{parent=Video game}
{tag=Decompiler}

= Video game decompilation
{parent=Video game reverse engineering}

= Video game review
{c}
{parent=Video game}

Some that <Ciro Santilli> likes:
* <SsethTzeentach>
* <Angry Video Game Nerd>

= Angry Video Game Nerd
{c}
{parent=Video game review}
{title2=AVGN}

https://www.youtube.com/AngryNintendoNerd/videos

He's good. Sometimes a bit repetitive, but generally pretty good.

Only the "original" videos matter. After those it became crap.

https://www.youtube.com/watch?v=h6DtVHqyYts Big Rigs: Over the Road Racing (PC) (2014) is perhaps his best video.

= SsethTzeentach
{c}
{parent=Video game review}

https://www.youtube.com/channel/UCD6VugMZKRhSyzWEWA9W2fg

Reviews mostly old RPG and strategy games. And <hentai> games when it is possible to hide the porn from <YouTube>. He also sponsors Hentai and uploads it on his website: https://www.ssethtzeentach.com/nsfw

<Ciro Santilli> really likes his sense of humor, always going into "<politically incorrect>" areas, and often making fun of both dictatorships and the USA. He actually knows a bit about politics. Due to the nature of his humour, many of his earlier videos have been taken down from YouTube apparently, https://www.ssethtzeentach.com/videos mentions:
\Q[Ever since going full time, I'm usually very clean and stay out of trouble, but in the past a fair number of my videos were taken down.]

The videos are also incredibly packed full of well selected edited-in "<memes> jokes". He particularly likes very short snippets of <gay> porn which cannot actually be taken down as porn, even though the obviously are porn excerpts, like the buffed dude blowing a kiss to his tit.

https://www.youtube.com/watch?v=sw8v5__Ytf4 Heroes of Might and Magic III (2018) is one of the best reviews. Sseth likes to find and make fun of game breaking imbalances, something that Ciro likes due to his <Ciro Santilli's self perceived creative personality>.

https://www.youtube.com/watch?v=rOJdDvf-tUs The Sseth Streaming Experience (2019), being a live stream, likely shows more realistically how Seth actually talks in real life.

https://www.youtube.com/watch?v=yG9g2byXR2c Might and Magic VI (Re)Review is another good video (2021)

Sseth has a certain <vaporwave> aesthetic, which Ciro also enjoys.

https://knowyourmeme.com/memes/people/ssethtzeentach gives his profile image from: https://www.aljazeera.com/features/2012/7/30/the-two-most-loyal-soldiers-in-the-dr-congo

https://youtu.be/se6Y2o3OqJQ?t=2 shows what could actually be outside of his real window.

= Video game genre
{parent=Video game}
{wiki}

<Ciro Santilli>'s favorites are:
* <sandbox game>
* <strategy game>
He used to also play some <first-person shooters> as they can be fun to empty your brain.

= Fighting game
{parent=Video game genre}
{wiki}

= List of fighting game
{parent=Fighting game}

= Super Smash Bros
{c}
{parent=List of fighting game}
{title2=1999-}
{wiki}

= Super Smash Bros AI
{c}
{parent=Super Smash Bros}
{tag=Fighting game AI}

* https://www.reddit.com/r/smashbros/comments/tfk86i/what_artificial_intelligence_has_been_made_for/
* https://uk.sports.yahoo.com/news/watch-computer-beat-one-worlds-214826199.html
* https://www.newscientist.com/article/2122452-ai-beats-professional-players-at-super-smash-bros-video-game/

= Platform game
{parent=Video game genre}
{wiki}

= Browser platform game
{parent=Platform game}

https://gobattle.io/#! 2D top down dungeon crawler/brawler, controls feel good.

= Sandbox game
{parent=Video game genre}
{wiki}

A recreational <computer simulation>!

= Construction and management simulation
{parent=Sandbox game}
{wiki}

= Factorio
{c}
{parent=Construction and management simulation}
{tag=Good video game to watch}
{wiki}

= Mindustry
{c}
{parent=Construction and management simulation}
{tag=Java program}
{tag=Open source video game}
{tag=Real-time strategy}
{wiki}

Conveyor belt 2D top down mining like <Factorio>, but with more emphasis on tower defense/<real-time strategy>, <PvP> looks a lot like <StarCraft> or <Age of Empires>.

As of pre alpha 135, the most annoying thing is that you can't easily start a campaign scenario from fresh, if you lose you have to start from wave 1 but with everything already half built as you left it. This gives you a huge advantage...

It is also annoying that you have to manually rebuild everything that was destroyed afer each attack, unless you have some unit that you can only unlock later on...

https://mindustry-unofficial.fandom.com/wiki/Future_Content#New_Google_Play_Listing suggests <freemium> features being considered, but they are mostly minor or plaform specific. There seems to be no server list by default however, making the Steam multiplayer freemium valuable.

https://www.youtube.com/watch?v=o5ThSECaAwA suggests <code drop> is used.

It is a bit annoying that you have to unlock the tech tree little by little in campaign, but it does serve as a reasonable introduction to the general order of development. Games with progression state are boring, except when there is <permadeath>. But custom play scenarios have everything unlocked immediately, much better.

It is very cool that you can copy chunks of buildings as macros, and save them for later.

The game runs very well it feels like.

The logic blocks are particularly interesting, and allow you to program a block yourself.

= Rust
{disambiguate=video game}
{c}
{parent=Sandbox game}
{tag=Good video game to watch}
{tag=First-person shooter}
{wiki}

The brutality of this game, the fact that you can get killed at any point, and all players accept that, is awesome.

= The Sims
{c}
{parent=Sandbox game}
{tag=Good video game to watch}
{wiki}

A young <Ciro Santilli> really liked this game, the way it makes you feel.

= Racing game
{parent=Video game genre}
{wiki}

= Vehicular Combat video game
{parent=Racing game}

= Role-playing video game
{parent=Video game genre}
{wiki}

= RPG video game
{c}
{synonym}

= Action role-playing game
{parent=Role-playing video game}
{title2=ARPG}
{wiki}

= Action RPG
{synonym}

= Diablo II
{c}
{parent=Action role-playing game}

= MMORPG
{c}
{parent=Role-playing video game}
{wiki}

= Browser MMORPG
{parent=MMORPG}

= MUD
{c}
{disambiguate=game genre}
{parent=MMORPG}
{wiki}

= Roguelike
{parent=Role-playing video game}
{wiki}

= Permadeath
{parent=Roguelike}

= Dungeon Crawl Stone Soup
{c}
{parent=Roguelike}
{wiki}

Appears to be \i[the] best classic open source <roguelike> of the 2020's.

This website is really cool! http://crawl.akrasiac.org:8080/#lobby You can spectate players live and chat! Also has statistics.

Devs of this game are smart, they have one good in-tree <tileset>, unlike some other <text-based games> that didn't have an in-tree option...

Build on <Ubuntu 21.10>:
``
sudo apt install build-essential libncursesw5-dev bison flex liblua5.1-0-dev \
libsqlite3-dev libz-dev pkg-config python3-yaml binutils-gold python-is-python3 \
libsdl2-image-dev libsdl2-mixer-dev libsdl2-dev libfreetype6-dev libpng-dev \
fonts-dejavu-core advancecomp pngcrush

git clone --depth 1 --branch 0.28.0 https://github.com/crawl/crawl
cd crawl/crawl-ref/source
echo 0.28-a > util/release_ver
make -j`nproc` TILES=y
./crawl
``

This launches the UI version already for you.

= Shooter game
{parent=Video game genre}
{wiki}

= First-person shooter
{parent=Shooter game}
{wiki}

= Counter-Strike
{c}
{parent=First-person shooter}
{title2=CS}
{title2=2000}
{wiki}

= Counter-Strike: Global Offensive
{c}
{parent=Counter-Strike}
{title2=CS:GO}
{wiki}

= Doom
{c}
{disambiguate=video game}
{parent=First-person shooter}
{title2=1993}
{wiki=Doom_(franchise)}

= Quake
{c}
{disambiguate=video game}
{parent=First-person shooter}
{title2=1996}
{wiki}

= Strategy game
{parent=Video game genre}
{wiki}

= Real-time strategy
{parent=Strategy game}

= Age of Empires
{c}
{parent=Real-time strategy}
{wiki}

= Age of Empires II
{c}
{parent=Age of Empires}
{tag=Good video game to watch}
{wiki}

\Video[https://www.youtube.com/watch?v=q3J3WCpJtEo]
{title=Parsa's <Age of Empires II> Cartoons (2021)}
{description=The cutest <fan art> ever!}

= StarCraft
{c}
{parent=Real-time strategy}
{wiki}

= Tower defense
{parent=Strategy game}
{wiki}

= Tower defense game
{synonym}

<Ciro Santilli> really likes this genre.

= Bloons Tower Defense 5
{c}
{parent=Tower defense}

One of <Ciro Santilli>'s favorites.

= Turn-based strategy
{parent=Strategy game}
{wiki}

= Worms
{c}
{disambiguate=series}
{parent=Turn-based strategy}
{wiki}

= Worms Armageddon
{c}
{parent=Worms (series)}
{title2=1999}
{wiki}

\Video[https://www.youtube.com/watch?v=cHa-s0FbqF0]
{title=Holy Hand Grenade demo from <Worms Armageddon> by kycbkycb (2009)}

= Turn-based strategy game
{synonym}

= Survival game
{parent=Video game genre}
{wiki}

= Cataclysm: Dark Days Ahead
{c}
{parent=Survival game}
{tag=Open source video game}
{tag=Roguelike}
{tag=Text-based game}
{tag=Zombie video game}
{title2=CDDA}
{title2=Cata}
{wiki}

= Cataclysm DDA
{c}
{synonym}
{title2}

Seems to simulate the world in an extremely elaborate way.

Ciro can't help but to think that with a little content work, this game engine could also produce a <Factorio>-like (conveyor belts mentioned in passing at: https://discourse.cataclysmdda.org/t/vehicle-unloading/10783[]), or a <The Sims>-like, or an Stardew-valley-like. E.g. even stuff like house building is already included: https://www.youtube.com/watch?v=QnCYGSlZ1gE

They're also adding more and more allyied NPC management in "faction camps" it seems: https://www.reddit.com/r/cataclysmdda/comments/edg5y0/a_beginners_guide_to_faction_bases/ thus approaching the game further to <Dwarf Fortress> or <RimWorld>.

<Ciro Santilli> played this for 1 day and a half non-stop with <Cataclysm DDA save scum>[save scumming] in 2022, then he deleted his saves and uninstalled the game, and started Googling to see how end games can look like, <high flying bird vs gophers>[as usual].

The problem is that it is a bit hard to find edited gameplay with highlights only, the type of people who play those games are just regular nerds right. But there is a lot of gameplay videos, just not edited ones.

Then two days later Ciro re-downloaded it and played more, just no so nonstop, the urge was too strong. Two days later, he deleted the save again after clearing out a middle sized town, and reaching a large town.

Then Ciro learned about debug menu, which is the best way to experience all buildings/weapons/abilities easily without grinding more than necessary. TODO any simple easy way to become invincible there? https://discourse.cataclysmdda.org/t/prompt-for-certain-debug-commands/19209/5
\Q[We do not accept feature requests for the debug menu.]
Lol. Found a "Debug invincibility" and "Debug invisibility" under mutations.

But a few days later he played a bit more for a day non-stop after having learnt some more techniques from YouTube, and then deleted again.

Ciro noticed that the part of this game that he likes the most is the early game. Raiding low populated areas like farms is joy. Once you get a car and stabilize, things become a bit less fun, and it is then just a matter of getting more and more powerful with a lot of routine work, which takes time. Sleeping in tents is quite tempting as well, there's a campfire overmap tile that is great. You can actually take down tents Ciro later learnt... that's awesome.

A major joy of this type of game is the ability to loot shops and homes without any moral implications since the former owners are all dead/zombified.

Another major joy is the incredible value you attach to items you discover, because they are truly life changing.

For example, Ciro was first obsessed with his duffel bag, which could carry huge volumes, and made fixing it a top priority once it got ripped!

Then he was obsessed about the 4x4 car he found, which looks like this:
``
fffffF
fttsfF
fttsfF
fffffF
``
where:
* `f`: frame
* `F`: reinforced frame
* `t`: trunk
* `s`: seat
What a great design! Enough room for a lot of loot, and also the reinforced frame to kill zombies without destroying the car, all while not being overly heavy which spends a lot of fuel, not being too wide which makes maneuvering in cities with broken cars on the road hard! Also the trunks were large enough for large water tanks, which solves your clean water supply forever.

Humvees are also good, but they are wider, have a lot of useless seats, and consume diesel, a lot of diesel, runs out very quickly. But they are even tougher than the 4x4, and have a turret that can fire at zombies.

It should be noted however that larger towns are generally just too much to use a car to clear, you will just waste too much fuel/car damage/real world time. The only way is to go at night it seems.

And then guns. The power of a guns is something to behold. Encounters that would easily be your death become one shot escapes. But of course, ammo is very limited, so you want to use each precious shot wisely! FEMA camps are a good place to get some easy powerful rifles and reasonable amount of ammo. Just drive in front of the entrance, and make the armed guards follow you out, then run them over. Try not to attract the zombie inside though, they are useless civilians without weapons, and just take up your time.

This game is also very good to learn some <English (language)> if you are not a native, as you have to learn what all those bit and bobs you never needed to say before are.

The default <tileset> when running `cataclysm-tiles` is a huge improvement over the text version, but still, could be a bit higher res. Overmap tilesets were only added in 2021 it seems: https://www.reddit.com/r/cataclysmdda/comments/pxtqsn/new_overmap_tileset_available/[]. Edit: 0.F appears to come with the proper Ultima tileset by defualt via `cataclysm-dda-data` Ubuntu 22.04 package. Fantastic!

There are other built-in tiles under settings, but all of them are way too resolution for a casual gamer.

https://github.com/I-am-Erk/CDDA-Tilesets has a good tileset pack. To install on <Ubuntu 21.10>, drop the release under:
``
~/.local/share/cataclysm-dda/gfx/
``
and then select `UltCa` from Settings > Tiles in the main menu. It does make things much more immediately understandable. Edit: after some initial plays, Ciro had a second look at the default `-tiles` graphics, and they are not so bad. But still, the higher resolution is better. Edit: looks like they are going to merge it in-tree, which is great! https://github.com/CleverRaven/Cataclysm-DDA/commits/master/gfx/UltimateCataclysm

No default sounds, but has a soundpacks mechanism. Sad for now default, but cool for the configurability:
* https://github.com/damalsk/damalsksoundpack/releases[]. It makes a large noise every time you walk, which is very annoying. Ambient sounds and music are OK though. It should really give a comfy music when in the shelter though.
Installation is similar to tilesets, but you put it under `sounds/` instead of `gfx/`. Restart required to select the soundpack option, and another restart required for the selected option to be used, clunky.

This is the type of thing that prevents wider adoption of this game, it is just too hard to figure out things.

The other major requirement for casual players would be mouse clicking stuff with dropdown menus that show what you can do there (e.g. `E` and `Shift` + `G`), and better menus, everything should be also doable with a mouse in addition to the keyboard shortcuts.

Besides the zombies, it also has some high tech stuff like bionics and aliens mixed in. And mods add other stuff, e.g. https://cddawiki.chezzo.com/cdda_wiki/index.php?title=Magiclysm which is quite cool. The design document/lore spoilers explain that this is the actual cause of te cataclysm: https://cataclysmdda.org/lore-background.html

The cool thing about this type of game is that enemies are really powerful, which is so much more realistic. Even a single zombie has to be given lots of respect, especially since healing is a slow process like real life, and killing one feels like an achievement.

Some other cool points:
* https://www.reddit.com/r/cataclysmdda/comments/3m92cc/are_worlds_truly_infinite/ the map is truly infinite. Everything is persistent. They must freeze things in some state of course when the player is not around, and hydrate it (using <React.js>-like terminology!) when you come back, but they all look very plausibly continuous to how things where. They call the fully simulated world the "reality bubble": https://cddawiki.chezzo.com/cdda_wiki/index.php?title=Reality_bubble That pages says though that not everything hydrates. Shame there are no oceans yet: https://www.reddit.com/r/cataclysmdda/comments/huvnon/when_are_we_getting_oceans/

  But there are lakes, and lake islands: http://cddawiki.chezzo.com/cdda_wiki/index.php?title=Lake but they are quite rare on the mapgen, outside of fixed scenario starts.

  There could definitely be some more biome variety in the game though, e.g. hills, mountains, deserts, tropical forests, and so on. As it stands in 2021, the game is basically a USA midwest simulator. This is confirmed in the official design document: https://cataclysmdda.org/lore-background.html[].

  Hills: https://www.reddit.com/r/cataclysmdda/comments/ar9kam/hills_and_mountains/

  This also make the survival scenarios a bit ridiculous. Middle of nowhere means you walk a little bit out of the woods and you reach a huge shopping mall!

Tips for beginners:
* a <Reddit> list: https://www.reddit.com/r/cataclysmdda/comments/hsxpco/things_you_wish_you_knew_when_you_started_playing/
* go to town at night, zombies are even blinder than you, it is possible to sneak by massive hoards, fighting one enemy at a time, even when they are well packed together. The only possible reason to go out during the day is to smash zombies with a car without crashing.
* favoriting items makes you not drop them by default with `,`. This is fundamental so you can drop loot while keeping survival stuff on you.
* indestructible and faster than you early game enemies, encounter means certain death: Survivor zombie, Giant cockroach, Giant wasp. Walking on trails is also potentially deadly, which is very annoying... sometimes you only see dealy enemies like wolves when you are on top of them on trails. Not sure what to do about that.
* pick up all items from any surrounding tile: `/`, then on left `I` for inventory, on right `A` for area. You can also examine items with `e` if not everything fits, and sort by category with `s`. That's the most important menu in the game!
* duffel bags are the best thing ever made, carry huge volumes, and you can craft them too!
* smash (`S`) zombie corpses after you kill them, or else they will re-raise after a few hours. They will be wounded and easy to kill however.
* <restrict the fuck out of cars>[just like in real life], cars are the ultimate killing machine. For some reason though, it does not smash zombie corpses. They can also carry infinite crap, after clearing up a town, you can just pick up EVERYTHING without thinking too much, just hit `,`. To bulk move things into/off a car, just hold Enter until the inventory is full. So sort huge piles by category: Shift + V then S:.
  * to get fuel from other cars, you need a rubber hose that can be easily obtained by smashing a refrigerator.
  * you can just siphon directly from one vehicle to another if you stop them close by, no need to go through containers every time!
  * you will learn where are good places to find cars:
    * bridges
    * prisons
    * mine entrance parking lots
    * car refueling/repair stations
  <Ciro Santilli's cycling>[Just like in real life], bicycles are pretty good if you can't find a working car, as they don't consume fuel, just stamina. You can even go around hordes if you are crazy enough, and try to look for working cars in towns, but going on the countryside would be wiser. Just make sure you always have enough stamina to cycle out to safety if your electric motor isn't working, which is often the case!

  Electric cars can also be recharged from the sun, which means they will never run out. They are generally not very strong, so not suitable for ramming, and the battery runs out relatively soon. But great to stop out of town.
* head encumbrance does not seem to do anything besides limit how many hats you can wear, so do ware that motorcycle helmet: https://www.reddit.com/r/cataclysmdda/comments/a5nq6c/head_encumbrance/
* headlamps are a must
* on the overmap `m`, you can fast travel with `Shift + W` twice. Not perfect path finding, but saves a lot of useless clicking!
* on the EVAC shelter computer, contact us is not useless at all! It shows the nearest refugee center, and can show a lot of map because it shows the full road path there
* climb buildings to see further out. You can start by climbing the EVAC shelter via gutter with `>`! But to go down pipes you have to examine it, not `<`, it's weird. Edit: actually, you can "climb down" any ledge, so that's why. But you can still get hurt, so don't do it unless it is really necessary. You will want to carry the telescope, or a binoculars with you at all times most likely, as it is just a huge asset. You just can't climb back up without the water pipe. Radio tower and silos are other good buildings to climb, and radio towers often contain telescopes which allow you to see very very far, climbing those is a top priority when scouting a new region. Don't jump down, even of 1 floor, as it hurts you. A bit exaggerated, but so be it.
* you can grind fabrication easily to level 1 even without a book: https://www.reddit.com/r/cataclysmdda/comments/6r2477/best_way_to_grind_fabrication/ This is fundamental to make the all important brazier. And you'll learn that dumping things in the brazier unecessarily burns them out, the uninsuitive "Construct" > "Firewood Source" is a must.
* place brazier immediately outside of the EVAC shelter window, this way you avoid smoke problems, but can still cook from the inside.
* shopping carts are the very best mechanism to carry a lot of loot in town besides a car. And there's a foldable version that can fit into cars, but you have to craft it... https://www.youtube.com/watch?v=kccBl7cksPY[]. Most important item ever.
* there's a built-in debug menu that allows you to cheat whatever you want: spawn items, change your stats (e.g. 10000 strenght and smash through walls? no problem), learn skills, reveal map, and teleport. You have to bind a key to it before using it from `?`, `,` is a good bind candidate. Now that's real fun, being <God>.
* auto-smash mode is a must
* you likely should look into spears: https://www.reddit.com/r/cataclysmdda/comments/7m99jb/why_melee_with_anything_besides_spears/[]. Reach attacks from spears are OP, as you can hit a zombie, run, wait for it to come in range, hit from afar, run, and so on. Then after killing a zombie, you wait until your stamina recovered with `|`. This allows to safely kill anything as fast as you without taking hits. Wooden spear is a good first one, and it is not flimsy and lasts a while, like 30-50 zombies maybe. A pitch fork is another good option if you can find one.

How a typical early day looks like for a newbie: go to down, fight 5 zombies, get some stuff from houses, and run back home because your limbs are too weak and could break. Get home 10AM, and read the hole day and night. Repeat.

A fun play style is: get a car, clear out a small town with a library, bring food and books back to the base, fill the 4 60L tanks with water and bring them on the car as well, and then just read for several days until the food runs out. Repeat. It is not super serious if you don't have a car though, as even "shallow water" pools found in every forest can fill one of them. Exploitative mechanic BTW.

Top feature requests for <Ciro Santilli>:
* https://www.reddit.com/r/cataclysmdda/comments/2mni5z/can_i_store_items_in_a_backpack_and_drop_the/[]. As of 0.E-3-1, drop happens automatically on Take off, but then you have to pick up items that go overweight/volume one by one.
* find items in my inventory by quality, or at least all item qualities in a single sortable table, otherwise it is too hard to know which item can do what
* fill all empty containers with something, e.g. water from a large pool into 25 plastic bottles
* view wound details without having to select bandage or antiseptic. `@` "EFFECTS" has a summary, but it is too tiny, that stats window should be fullscreen for sure
* realism requests. Ciro is a big fan of realism in CDDA, the more the better, and if you don't like something, just use the debug menu!
  * <shitting>/<peeing> system
  * when you wash clothes (currently important because zombie worn clothes that you pickup are generally filthy and reduce morale), make the clothes wet and require drying. There are even already some rotation clothes handers in houses, but just putting on a bench would be enough. And of course, higher temperatures mean faster drying, next to a fire would be ideal. Wearing wet clothes would of course make you cold and demoralized.
* exercise/fitness
  * https://discourse.cataclysmdda.org/t/suggestion-fitness/25754
  * https://github.com/CleverRaven/Cataclysm-DDA/issues/44370

TODO how to create a custom non random map/scenario? Possible from JSON: https://discourse.cataclysmdda.org/t/guide-to-adding-new-content-to-cdda-for-first-time-modders/17781/13/ ?

Their dominating Q&A communication channels are terrible, as of 2021 everything you google leads to: https://www.reddit.com/r/cataclysmdda/ which suffers from <online forums that lock threads after some time are evil> (edit: this changed since). They've since made a discourse thankfully however: https://discourse.cataclysmdda.org/

Source code overview:
* it is funny how the `lang/` directory with translations is by far the largest of the repo ta 100MB, way larger than `gfx`, it's comical

One of the things it simulates is some level of builing stuff:
* you can build a wooden house: https://www.youtube.com/watch?v=QnCYGSlZ1gE including floor, roof, windows. There are also concrete walls. Of course, building is useless, what you really want is a super mega truck that doubles as a home.
* you can dig water channels from rivers/lakes with a digging tool to bring water to your doorstep. TODO can you dig down deeper than "pit", minecraft style?

  OK, you can build a "Dig downstair" and it works. With a pickaxe you can carve stone sideways. With infinite cheated strength you can just mash the rock walls. The have salts and coal sometimes, funny. Upper floor does not collapse. TODO can't dig the second one "You cannot build here".
* TODO can you generate power e.g. in solar cells or not, and wire it into home appliances? https://www.reddit.com/r/cataclysmdda/comments/4zm7tf/solar_panels_useless/ from 2016 says no.
  * https://cddawiki.chezzo.com/cdda_wiki/index.php?title=Power says yes "farmhouse kitchen running off of outside solar, cabled in"
  * https://www.reddit.com/r/cataclysmdda/comments/9j9e16/wired_homes_and_electrical_systemgrid/ from 2018 says no due to fundamental reality bubble limitations, the only way is with power coming from stuff mounted on vehicles...
  The solution would be simple... just mark the edge incoming wire from the reality bubble as a magic source that has a given voltage/max amperage/total power or total wattage available. Would be good enough. Sure, some estimates might be hard, e.g. how much sun is there in a far away location of the map, etc. but just having some average of those values would be good enough. E.g. average temperature of an off bubble tile would also be useful to calculate food rotting time.

  A related obvious application would be refrigerators. https://www.youtube.com/watch?v=G6B0KBJHvZs from 2021 mentions again that you can't have power without vehicles. TODO do the refrigerators in a powered 01 lab protect food?

  The fork https://github.com/cataclysmbnteam/Cataclysm-BN is actually trying to add an electric grid...

\Video[https://www.youtube.com/watch?v=Cyoj4-niEPc&t=244s]
{title=<Cataclysm: Dark Days Ahead> Review by <SsethTzeentach> (2018)}
{description=This game really is right up Seth's alley, glad he tried it out. Perhaps his review was partly what motivated <Ciro Santilli> to give it a try. But the other part, perhaps even more important, was the joy of trying out crappy <open source video games>. Ciro especially likes Seth's observation that you could just go all in Mad Max mode. Since vehicles are so powerful, you can just clean up towns with them and basic weapons, then either get a new vehicle when the old one goes bust, or at least very easily find gas. Another good observation is that crafting in this game is amazing.}

= Cataclysm DDA build from source on Ubuntu 21.10
{parent=Cataclysm: Dark Days Ahead}

``
sudo apt build-dep cataclysm-dda-curses cataclysm-dda-data cataclysm-dda-data
git clone https://github.com/CleverRaven/Cataclysm-DDA
cd Cataclysm-DDA
git checkout cdda-experimental-2022-01-27-0622
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DTILES=ON -DSOUND=ON -DLOCALIZE=OFF ..
make -j`nproc`
``
fails with:
``
:part_index_’ may be used uninitialized [-Werror=maybe-uninitialized]
   55 |             return part_index_;
``
as reported at: https://github.com/CleverRaven/Cataclysm-DDA/issues/52657 now open for 3 months. Basically every commit I tried fails with a different `-Werror` check, they don't test GCC new enough regularly.

= Cataclysm DDA multiplayer
{c}
{parent=Cataclysm: Dark Days Ahead}

This would be a dream, but it is also impossible: how can you reconcile automated tasks that are simulated quickly like batch crafting 20 muffings in 30 in-game minutes, with someone who is at the same time fighting a hoard of zombies and taking one action every 2 in-game seconds? Alas.

= Cataclysm DDA save scum
{c}
{parent=Cataclysm: Dark Days Ahead}

Tested as of Cataclysm: Dark Days Ahead 0.E-3-1, seems possible built-in:
* Disable autosave on settings
* Quisave (Esc + 9)
* To restore the save, just close the game window directly before clicking Yes or No on the "Watch the last moments of your life" dialog.

A less risky save scum can be achieved with <rsync>:
``
rsync -av ~/.local/share/cataclysm-dda/save/ ~/.local/share/cataclysm-dda/save.bak/
``
and after you die:
``
rsync -av ~/.local/share/cataclysm-dda/save.bak/ ~/.local/share/cataclysm-dda/save/
``

= Cataclysm DDA on browser
{c}
{parent=Cataclysm: Dark Days Ahead}

Now that's sweet:
* https://rameshvarun.github.io/cdda-web/
* https://www.reddit.com/r/cataclysmdda/comments/z82yos/play_cataclysm_dda_in_your_browser/
* https://github.com/rameshvarun/cdda-web
With the visual tileset out of box.

= Dwarf Fortress
{c}
{parent=Survival game}
{tag=Zombie video game}
{wiki}

Made by a single dude. As <SsethTzeentach> puts it, this is the greatest <autism> project ever made.

= RimWorld
{c}
{parent=Survival game}
{wiki}

= Minecraft
{c}
{parent=Survival game}
{wiki}

= Minecraft clone
{c}
{parent=Minecraft}

= Biomes
{c}
{disambiguate=game}
{parent=Minecraft clone}
{tag=Browser game}
{tag=Open source video game}
{tag=MMORPG}

https://github.com/ill-inc/biomes-game

= Minetest
{c}
{parent=Minecraft clone}
{tag=Open source video game}
{wiki}

https://github.com/minetest/minetest Written in <C++>, which is, a plus.

Good <Minecraft> clone. On <Ubuntu 21.10> did:
``
sudo snap install minetest
``
which installed 5.4.1, and it worked, except it had no sound, to an error:
``
ERROR[Main]: Audio: Global Initialization: Failed to open device
``

= Project Zomboid
{c}
{parent=Survival game}
{tag=Good video game to watch}
{tag=Zombie video game}
{wiki}

This game is quite detailed: https://www.youtube.com/watch?v=w4Jmqp8a_bU

= Zombie video game
{parent=Video game genre}

Upside: it is easier to simulate zombies than it is to simulate intelligent humans and make them look convincing.

Downside:
* if zombies are so dumb, why didn't humans deal with them already? Just build some fucking walls and sleep in isolated rooms in case someone has a heart attack during their sleep! So not as convincing.
* zombies vioalte the law of <conservation of energy>. What do they eat when humans run out, since they are so dumb? Previously mentioned at: https://news.ycombinator.com/item?id=20240895