The Mozilla Corporation then picks and chooses what it finances within the Mozilla Foundation. Their financial statements don't break down how they spend on software development within the Foundation, it only lists out employee salaries, specific directors' salaries and grants to outsiders... but it would seem Thunderbird doesn't get much if they're out begging.
- $66,396,000 from paid services (e.g Pocket, VPN) and advertisers
- $15,782,000 from donations
And it spent:
- $290,448,000 on programmer salaries
- $163,516,000 on manager salaries
- $36,358,000 on servers, cloud, etc.
- $20,258,000 on consultants (e.g. branding consultants)
- $9,573,000 on travel
- $2,192,000 on grants and fellowships
So overall, it didn't spent that much on the stupid doomed side projects! It spent a lot more on flying managers and marketing consultants to nice soirees.
But the real question, not answered by this financial report, is how much programming labour was spent on Thunderbird, versus other Mozilla projects?
My assumption would be that it's very little, given that Thunderbird was separated out of the Mozilla Corporation to MOZLA (or whatever it's called).
On the bright side, that actually makes me a bit keener about donating to it; donating to the Mozilla Corporation seems entirely pointless given donations make up ~2.5% of their income, and less than 10% of what they spend just on manager salaries, whereas giving it to Thunderbird might actually have a positive impact.
> MZLA TECHNOLOGIES CORPORATION share of total income: $10,760,074
So they don't break it down, but around 10 million went to the corporation that runs Thunderbird and other projects (versus 658 million to the one that runs the browser)
what kind of tools are needed for making these animations
They are motion-captured and/or they're animated by hand in your 3D editor, e.g. Blender
But much more likely is you won't be making animations, you'll be buying them (or getting them for free). There are many places you can buy these animations already, already rigged to a skeleton.
Some examples (I don't endorse them specifically):
skeletal animation. how are you supposed to think about this
Think about giving direction to an actor. You give high-level instructions to the animation system, and it picks the animation based on rules about what animation to use in what situation, that you already set up. It manages the transition to the next animation, all of which are animations of the skeleton, that the character model adapts to (including physics-based parts of the character like hair and cloth)
Generally speaking, you define animation cycles (e.g. walk cycle, run cycle), and then transition between two different animations that are in phase with each other, but it can be a lot more complicated in order to look more natural.
Unity has the Animation Controller. Unreal has "Motion Matching". Godot has Animation Trees.
do we need intermediate animations
If you want to, yes, but also you can have the game engine interpolate
You haven't even mentioned things like having the character's feet stand realisticly on non-level ground. For that you would use inverse kinematics, but not too much of it because it has a tendancy to go wonky
are there LLM tools
Yes but you'd be better off with animations someone has already created, they tend to look better. Many companies now offering AI-based 3D character generators too.
formats like obj, fbx, m3d, glb etc. the same data stored in these files in a slightly different way
They all have different purposes. You want glTF/glB (same format but in text vs binary) for most purposes
- so let us say for purposes of learning, i wanted to make an fps or a third person shooter (3D) without using unreal, unity, godot or any popular engine out there
- what does the process look like roughly?
- i managed to get c++ running (programmer here with a decade of non gamedev experience) and also added raylib and looked into jolt physics
- got a 3d grid constructed, window created, character model added
- what would be my next bunch of steps?
- should i add animations for each of the player states like walk, run etc?
- should i program interactions like shoot, throw a grenade etc?
- or should I start working on enemy AI like pathfinding A* algorithm with state machine?
- trying to code cooperative mode here so i looked into c++ udp libraries like enet. I am assuming latency and game reconcillation algorithms would be step 1 if you want to build coop from ground up? basically create a server.cpp and a client.cpp and make the game loop work without crashing in cooperative mode on day 0. then worry about adding any interaction at all
- truly trying to comprehend at a high level what day 0 to day 1000 of a game looks like
You'd be committing the classic fallacy of "i'll just work on these tools, then make the game", which while a fun exercise, almost never results in a game being released.
Think about what your ultimate goal is:
- you want to make games: use an existing engine. don't bother with half of the features, focus on whether the game is fun or not. add polish (like character animation transitions) later. use stock assets to begin with.
- you want knowledge to work in games industry but not actually release a game yourself: learn all the bells and whistles of Unreal Engine
- you want to make things that are unlike regular games: develop your own code
- you don't ever intend to release a game, you just want to see how they're made: just read other people's code. Read the Quake engine source code and https://fabiensanglard.net/ as a companion site.
If you're talking about using raylib, that is also a game engine, just a simpler one. We can look in both directions; if this is an exercise exclusively for personal learning and development, why not also learn about what's done for you by that library and by the GPU, etc? Occlusion, rasterisation, depth buffering, perspective-correct texture mapping...
"the number one most important skill is how to keep a tangle of features from collapsing under the weight of its own complexity" https://prog21.dadgum.com/177.html
this is what game engines do - they abstract the essential complexity present in all games, and keep it from infecting the one-time object, your game.
If you want to learn about games, honestly, take a look at existing engines. Take a look at old engines like DOOM or Quake, or even http://cubeengine.com/ and http://sauerbraten.org/ (and their corresponding source code) -- they are very simple compared to modern FPS engines. The Cube engines render geometry using octrees rather than the traditional BSP or recursive portal approach.
I am assuming latency and game reconcillation algorithms would be step 1
Yes, if you intend to make a networked game, write your netcode first, share state with client(s) over a network protocol, even if the network is 127.0.0.0/8
Gamers have opinions about netcode, because it affects how they have to think in order to play the game, so netcode becomes as much a creative endeavour as the level design, graphics, etc.
Every area of endeavour you've mentioned is a fractal of timesuck. They all have their basics and then their advancements, that have been built up by thousands of people over decades.
If you are learning by doing, for god's sake, keep it simple. Make the simplest thing that works. If you're making an FPS, have static geometry and non-animated character models (a 2D sprite will do). Prioritise having the most basic thing working as your goal. Otherwise you will be off in the weeds for years and you'll probably give up having built nothing.
what day 0 to day 1000 of a game looks like
Pick a baseline (whether that's a game engine, or raw language) and then spend the rest of the time making the game: designing gameplay, levels, movement, interactivity, playtesting, feedback, placeholder art, real art... it's about standing on the shoulders of giants, not re-inventing the wheel, and putting your mind and creativity into the new thing, which is your game
You are forgiven for not knowing about the University of Leiden's Escher and the Droste effect site from 2002, given it shut down in 2024, but they were the first to try filling in the centre of Print Gallery and make the association with the cocoa tins
This is "the bomber will always get through" mentality for the modern era. You will invent air defences. You will write fewer bugs. You will leave code that doesn't have bugs alone, so it gains no more bugs. You will build software that finds bugs as easily as you think "enemies" find bugs, and you'll run it before you release your code.
What's the saying? Given many eyes, all bugs are shallow? Well, here are some more eyes.
The article has a screenshot of the Stanley Parable, but misses an opportunity to reference Control (2019) which is much more directly influenced by the "liminal space" concept, and imagines a non-euclidian space called The Oldest House at 34 Thomas Street (a reference to the brutalist, windowless AT&T Long Lines skyscraper at 33 Thomas Street, New York City).
It also very much ties in with the shared SCP universe, which itself has a number of Backrooms-like anomalies, such as SCP-3008 (https://scp-wiki.wikidot.com/scp-3008), which is like a typical IKEA, except its maze of twisty passages run to infinity.
I am also going to call out House of Leaves by Mark Z. Danielewski. It's a really interesting book that explores a house that is slightly larger on the inside than the outside. It explores a lot of liminal spaces and has a really interesting format in print.
Interestingly, this video analysis of Control (https://www.youtube.com/watch?v=VII76R36GWw) claims Remedy was inspired by House of Leaves, and notes the similarity between "Ash Tree Lane" where the House of Leaves is set, and the "Ash Tray Maze" in Control.
Just seeing a few images of the book's pages in this video, yeah it seems like a really interesting book that plays with the novel format directly.
> Haunted is the second studio album by American singer-songwriter Poe, released in 2000 after a five-year hiatus from her debut album Hello in 1995. The self-produced album was created as a tribute to her father, and counterpart to her brother Mark Z. Danielewski's novel House of Leaves.
That book is definitely something you have to see in print.
Gregor Schneider made a super creepy house, called House Ur, it is a mega unsettling art piece. There are some videos on it but cant find them at the moment. Super creepy guy and super creepy layers in a house.
It does, but its main focus is ludonarrative dissonance, which is why Control would be a better example (along with games that specifically invoke Backrooms lore, like POOLS)
I mean if we're trying to source where "liminal space" started, I'd like to add Portal and Portal 2 into the mix. It didn't have the surreal, creepy components because jump scare horror games like Five Nights hadn't been popularized yet but the entire second area of Portal 2 where you're introduced to Cave Johnson and the older Aperture Science HQ is very much "liminal".
If we want to go deeper, then I really think its Earthbound's absurdist take on childhood adventures with cultists, ghosts, dreamscapes, etc. but I think at that point I might as well say dice games influenced things.
i think there's also a strong Lynchian influence to the liminal space aesthetic. Industrial spaces, flickering fluoresecnt lights, and a sense of unease that comes from dream-logic and shots that linger to emphasize emptyness.
Most people haven't been in an abandoned mansion, abandoned mental asylum or abandoned mall either, but they've seen enough from people who have to get the idea. Never mind the urbexers bringing them footage of hidden infrastructure.
Handy tip: all two-letter TLDs are country code TLDs. Doesn't matter if they're trendy in website names (.nu, .cc, .io, .co, .it, .at, .cx, youtu.be and so on)
In fact, here we have the ma.tt website, where the ".tt" is Trinidad and Tobago. Is Matt Mullenweg from Trinidad? No!
It's kind of crazy that the IRS (among other United States government agencies) uses ID.me for account management. The .me domain belongs to Montenegro.
I think ID.me is a private company. So yeah, it’s especially fucking stupid that they use that in the first place. Any gov login should be required to go through a .gov tld. At least reverse proxy it or something!
the .su domain was made when the soviet union was still around, so that doesn't really break the rules. I would prefer for top level domains to be eternal for a great multitude of reasons
The possible annoyance with eternal country-code TLDs would be the dissolution of one country, and the creation (or renaming) of another country resulting in an eventual exhaustion of two-letter country codes. Eternity is a rather long duration.
Before exhaustion, you're likely to have new countries where they have to have suboptimal two letter codes, because a dissolved country is squating on it.
The country code TLDs are ISO country codes. Nothing technically requires that to continue, but if ISO re-uses a country code & ICANN doesn't, it'll get somewhat confusing.
If anyone would avoid reusing codes, it's the ISO. They love legacy compliance and compatibility (which is why I have tremendous respect for them when I'm designing software since they've certainly thought about something more than I have)
At the time it did not break the rules. It's breaking the rules now because by the original rules it should have been phased out. What makes it survive is a special arrangement.
It is, effectively, a subscription. But it is partnered with statute law which makes it an offence to receive TV broadcast signals without paying this subscription (and now also an offence to watch iPlayer, etc.)... which is unlike most subscriptions.
It's seen as strictly better than the government providing funding from general taxation, which would mean directly controlling the state broadcaster and its purse-strings.
And generally speaking, there are very good reasons to fund your country's own film/TV industry, rather than rely on other countries supplying the funding and the media (and the opinions and the cultural sway and the power and the control).
They go to the Mozilla Corporation: https://en.wikipedia.org/wiki/Mozilla_Corporation#Finances
The Mozilla Corporation then picks and chooses what it finances within the Mozilla Foundation. Their financial statements don't break down how they spend on software development within the Foundation, it only lists out employee salaries, specific directors' salaries and grants to outsiders... but it would seem Thunderbird doesn't get much if they're out begging.
https://stateof.mozilla.org/pdf/Mozilla%20Fdn%202024%20-%20A...
So, as an example, in 2024, it got:
- $498,218,000 from royalties (e.g. Google)
- $66,396,000 from paid services (e.g Pocket, VPN) and advertisers
- $15,782,000 from donations
And it spent:
- $290,448,000 on programmer salaries
- $163,516,000 on manager salaries
- $36,358,000 on servers, cloud, etc.
- $20,258,000 on consultants (e.g. branding consultants)
- $9,573,000 on travel
- $2,192,000 on grants and fellowships
So overall, it didn't spent that much on the stupid doomed side projects! It spent a lot more on flying managers and marketing consultants to nice soirees.
But the real question, not answered by this financial report, is how much programming labour was spent on Thunderbird, versus other Mozilla projects?
reply