Video 1.
Top Down 2D Continuous Game with Urho3D C++ SDL and Box2D for Reinforcement learning by Ciro Santilli (2018)
Source. Source code at: github.com/cirosantilli/Urho3D-cheat.
Figure 1.
Screenshot of the basketball stage of Ciro's 2D continuous game
. Source code at: github.com/cirosantilli/rl-game-2d-grid. Big kudos to game-icons.net for the sprites.
Less good discrete prototype: github.com/cirosantilli/rl-game-2d-grid YouTube demo: Video 1. "Top Down 2D Continuous Game with Urho3D C++ SDL and Box2D for Reinforcement learning by Ciro Santilli (2018)".
Video 2.
Top Down 2D Discrete Tile Based Game with C++ SDL and Boost R-Tree for Reinforcement Learning by Ciro Santilli (2017)
Source.
The goal of this project is to reach artificial general intelligence.
A few initiatives have created reasonable sets of robotics-like games for the purposes of AI development, most notably: OpenAI and DeepMind.
However, all projects so far have only created sets of unrelated games, or worse: focused on closed games designed for humans!
What is really needed is to create a single cohesive game world, designed specifically for this purpose, and with a very large number of game mechanics.
Notably, by "game mechanic" is meant "a magic aspect of the game world, which cannot be explained by object's location and inertia alone" in order to test the the missing link between continuous and discrete AI.
Much in the spirit of gvgai, we have to do the following loop:
  • create an initial game that a human can solve
  • find an AI that beats it well
  • study the AI, and add a new mechanic that breaks the AI, but does not break a human!
The question then becomes: do we have enough computational power to simulation a game worlds that is analogous enough to the real world, so that our AI algorithms will also apply to the real world?
To reduce computation requirements, it is better to focus on a 2D world at first. Such world with the right mechanics can break any AI, while still being faster to simulate than a 3D world.
The initial prototype uses the Urho3D open source game engine, and that is a reasonable project, but a raw Simple DirectMedia Layer + Box2D + OpenGL solution from scratch would be faster to develop for this use case, since Urho3D has a lot of human-gaming features that are not needed, and because 2019 Urho3D lead developers disagree with the China censored keyword attack.
Simulations such as these can be viewed as a form of synthetic data generation procedure, where the goal is to use computer worlds to reduce the costs of experiments and to improve reproducibility.
Ciro has always had a feeling that AI research in the 2020's is too unambitious. How many teams are actually aiming for AGI? When he then read Superintelligence by Nick Bostrom (2014) it said the same. AGI research has become a taboo in the early 21st century.
Related projects:
Video 3.
DeepMind Has A Superhuman Level Quake 3 AI Team by Two Minute Papers (2018)
Source. Commentary of DeepMind's 2019 Capture the Flag paper. DeepMind does some similar simulations to what Ciro wants, but TODO do they publish source code for all of them? If not Ciro calls bullshit on non-reproducible research. Does this repo contain everything?
Video 4.
OpenAI Plays Hide and Seek... and Breaks The Game! by Two Minute Papers (2019)
Source. Commentary of OpenAi's 2019 hide and seek paper. OpenAI does some similar simulations to what Ciro wants, but TODO do they publish source code for all of them? If not Ciro calls bullshit on non-reproducible research, and even worse due to the fake "Open" in the name. Does this repo contain everything?
Video 5.
Much bigger simulation, AIs learn Phalanx by Pezzza's Work (2022)
Source. 2d agents with vision. Simple prey/predator scenario.
If you are a pussy and work a soul crushing job, this is one way to lie to yourself that your life is still worth living: do one cool thing every day.
Find a time in which your mind hasn't yet been destroyed by useless work, usually in the morning before work, and do one thing you actually like in life.
Work a little less well for you boss, and a little better for yourself. Ross Ulbricht:
I hated working for someone else and trading my time for money with no investment in myself
Selling drugs online is not advisable however.
Even better, try to reach an official agreement with your employer to work 20% less than the standard work week. For example, you could work one day less every week, and do whatever you want on that day. It is not possible to push your passion to weekends, because your brain is too tired. "You keep all non-company-related IP you develop on that time" is a key clause obviously.
On a related note, good employers must allow employees to do whichever the fuck "crazy projects", "needed refactorings or other efficiency gains" and "learn things deeply" at least 20% of their time if employees want that: en.wikipedia.org/wiki/20%25_Project. Employees must choose if they want to do it one day a week or two hours per day. One day per month initiatives are bullshit. Another related name: genius hour.
Video 1.
I did it for me, Skyler
. Source. Pursuing a dream part time can make you feel afraid and tired. But at least, you will feel alive.
Maybe you will be fired, but long term, having tried, or even succeeded your dream, or a one of its side effects, will be infinitely more satisfying.
The same goes for school, and maybe even more so because your parents can still support you there. Some Gods who actually followed this advice and didn't end up living under a bridge:
  • George M. Church "[We] hope that whatever problems... contributed to your lack of success... at Duke will not keep you from a successful pursuit of a productive career." Lol, as of 2019 the dude is the most famous biotechnologist in the world, those "problems" certainly didn't keep him back.
  • Freeman Dyson proved the equivalence of the three existing versions of quantum electrodynamics theories that were around at his time, and he has always been proud of not having a PhD!
    Video 2.
    Freeman Dyson - Why I don't like the PhD system (95/157) by Web of Stories (2016)
    Source.
  • Ramanujan, from Wikipedia:
    He received a scholarship to study at Government Arts College, Kumbakonam, but was so intent on mathematics that he could not focus on any other subjects and failed most of them, losing his scholarship in the process.
  • Person that Ciro met personally and shall remain anonymous for now for his privacy: once Ciro was at a bar with work colleagues casually, it was cramped, and an older dude sat next to his group.
    The dude then started a conversation with Ciro, and soon he explained that he was a mathematician and software engineer.
    As a Mathematician, he had contributed to the classification of finite simple groups, and had a short Wiki page because of that.
    He never did a PhD, and said that academia was a waste of time, and that you can get as much done by working part time a decent job and doing your research part time, since you skip all the bullshit of academia like this.
    Yet, he was still invited by collaborating professors to give classes on his research subject in one of the most prestigious universities in the world. Students would call him Doctor X., and he would correct them: Mister X.
    As a software engineer, he had done a lot of hardcore assembly level optimizations for x86 for some mathematical libraries related to his mathematics interests. He started talking microarchitecture with Ciro's colleagues.
    And he currently worked on an awesome open source project backed by a company.
    At last but not least, he said he also fathered 17 children by donating his sperm to lesbian mothers found on a local gay magazine, and that he had met most/all of those children after they were born.
    A God. Possibly the most remarkable person Ciro ever met, and his jaw was truly dropped.
Gandhi TODO source:
You can chain me, you can torture me, you can even destroy this body, but you will never imprison my mind
Ciro Duran Santilli by Ciro Santilli 37 Updated 2025-07-16
Ciro Santilli's full birth name is "Ciro Duran Santilli", with mother's last name "Duran" in the middle as per Brazilian tradition.
But Ciro's usage of "Duran" got gradually dropped to "Ciro Santilli", Ciro's official Italian name, as Ciro moved more and more definitively to Europe.
It can still however be seen in certain online places where Ciro didn't have the patience or power to change it e.g. some old École Polytechnique stuff: gitlab.binets.fr/ciro.duran-santilli/china-dictatorship
Also, don't have multiple names if you can avoid it, it is confusing!
Stack Exchange solves to a good extent the use cases:
points of view. It is a big open question if we can actually substantially improve it.
Major shortcoming are mentioned at idiotic Stack Overflow policies:
This is mostly stuff from before 2016 when Ciro was anxious to document his contributions to get a job.
Most of the projects here are also minor contributions, or Ciro later noticed that the projects were not useful enough to work on and that he was actually wasting his time.
Telegram (software) by Ciro Santilli 37 Updated 2025-07-16
You can't sync secret chats across devices, Signal handles that perfectly by sending E2EE messages across devices:This is a deal breaker because Ciro needs to type with his keyboard.
Desktop does not have secret chats: www.reddit.com/r/Telegram/comments/9beku1/telegram_desktop_secret_chat/ This is likey because it does not store chats locally, it just loads from server every time as of 2019: www.reddit.com/r/Telegram/comments/baqs63/where_are_chats_stored_on_telegram_desktop/ just like the web version. So it cannot have a private key.
Allows you to register a public username and not have to share phone number with contacts: telegram.org/blog/usernames-and-secret-chats-v2.
Self deleting messages added to secret chats in Q1 2021: telegram.org/blog/autodelete-inv2
Can delete messages from the device of the person you sent it to, no matter how old.
In 2020 Brazil for example, you are not allowed in theory to obtain a double nationality which you were not allowed to have as a birth right.
This means that Brazilian students e.g. in France, many of whom could easily obtain the French citizenship had to either chose between:
  • giving up their Brazilian citizenship. Who the fuck would do that? Brazilians love their country despite all!
  • not getting French citizenship. This meant in France having to come 6 AM once a year to some police station on some suburbia to stamp a piece of paper, plus having your VISA completely dependant on your employer for several years until you could obtain a permanent VISA, making it very hard to change jobs, and putting you in a constantly precarious position
  • keeping both citizenships, ignoring Brazilian law, which is extremely unlikely to sue you anyways for this bullshit law, and just hope for the best
Can you guess which option Brazilian students would usually pick?
As a poor country, you have to allow people to obtain multiple citizenship. Students are not going to go back because they don't have the foreign citizenship. They are just going to have to ensure shittier jobs for a few years, thus diminishing the chances that they will actually lean anything useful to bring back to your country later on.
Let's start with the one dimensional case. Let the and a Functional defined by a function of three variables :
Then, the Euler-Lagrange equation gives the maxima and minima of the that type of functional. Note that this type of functional is just one very specific type of functional amongst all possible functionals that one might come up with. However, it turns out to be enough to do most of physics, so we are happy with with it.
Given , the Euler-Lagrange equations are a system of ordinary differential equations constructed from that such that the solutions to that system are the maxima/minima.
In the one dimensional case, the system has a single ordinary differential equation:
By and we simply mean "the partial derivative of with respect to its second and third arguments". The notation is a bit confusing at first, but that's all it means.
Therefore, that expression ends up being at most a second order ordinary differential equation where is the unknown, since:
  • the term is a function of
  • the term is a function of . And so it's derivative with respect to time will contain only up to
Now let's think about the multi-dimensional case. Instead of having , we now have . Think about the Lagrangian mechanics motivation of a double pendulum where for a given time we have two angles.
Let's do the 2-dimensional case then. In that case, is going to be a function of 5 variables rather than 3 as in the one dimensional case, and the functional looks like:
This time, the Euler-Lagrange equations are going to be a system of two ordinary differential equations on two unknown functions and of order up to 2 in both variables:
At this point, notation is getting a bit clunky, so people will often condense the vector
or just omit the arguments of entirely:
Video 1.
Calculus of Variations ft. Flammable Maths by vcubingx (2020)
Source.
Equations of motion by Ciro Santilli 37 Updated 2025-07-16
These are the final equations that you derive from the Lagrangian via the Euler-Lagrange equation which specify how the system evolves with time.
The key difference from Lagrangian mechanics is that the Hamiltonian approach groups variables into pairs of coordinates called the phase space coordinates:
This leads to having two times more unknown functions than in the Lagrangian. However, it also leads to a system of partial differential equations with only first order derivatives, which is nicer. Notably, it can be more clearly seen in phase space.

Pinned article: Introduction to the OurBigBook Project

Welcome to the OurBigBook Project! Our goal is to create the perfect publishing platform for STEM subjects, and get university-level students to write the best free STEM tutorials ever.
Everyone is welcome to create an account and play with the site: ourbigbook.com/go/register. We belive that students themselves can write amazing tutorials, but teachers are welcome too. You can write about anything you want, it doesn't have to be STEM or even educational. Silly test content is very welcome and you won't be penalized in any way. Just keep it legal!
We have two killer features:
  1. topics: topics group articles by different users with the same title, e.g. here is the topic for the "Fundamental Theorem of Calculus" ourbigbook.com/go/topic/fundamental-theorem-of-calculus
    Articles of different users are sorted by upvote within each article page. This feature is a bit like:
    • a Wikipedia where each user can have their own version of each article
    • a Q&A website like Stack Overflow, where multiple people can give their views on a given topic, and the best ones are sorted by upvote. Except you don't need to wait for someone to ask first, and any topic goes, no matter how narrow or broad
    This feature makes it possible for readers to find better explanations of any topic created by other writers. And it allows writers to create an explanation in a place that readers might actually find it.
    Figure 1.
    Screenshot of the "Derivative" topic page
    . View it live at: ourbigbook.com/go/topic/derivative
  2. local editing: you can store all your personal knowledge base content locally in a plaintext markup format that can be edited locally and published either:
    This way you can be sure that even if OurBigBook.com were to go down one day (which we have no plans to do as it is quite cheap to host!), your content will still be perfectly readable as a static site.
    Figure 5. . You can also edit articles on the Web editor without installing anything locally.
    Video 3.
    Edit locally and publish demo
    . Source. This shows editing OurBigBook Markup and publishing it using the Visual Studio Code extension.
  3. https://raw.githubusercontent.com/ourbigbook/ourbigbook-media/master/feature/x/hilbert-space-arrow.png
  4. Infinitely deep tables of contents:
    Figure 6.
    Dynamic article tree with infinitely deep table of contents
    .
    Descendant pages can also show up as toplevel e.g.: ourbigbook.com/cirosantilli/chordate-subclade
All our software is open source and hosted at: github.com/ourbigbook/ourbigbook
Further documentation can be found at: docs.ourbigbook.com
Feel free to reach our to us for any help or suggestions: docs.ourbigbook.com/#contact