I think the diagrams look very similar to what Keenan Crane uses in his papers, perhaps they used that tool. I think his students have now fleshed it out for general use.
One esoteric route would be to try and specialize in an area where talent is scarce. There's a lot of gameplay programmers, few engine programmers, fewer graphics programmers, and very few physics programmers (in my experience at least).
As such you could try to specialize in this area (collision detection, ray queries, rigid body simulation, constraints, solvers, softbody sim, fluid sim etc.). Of course this isn't for everyone as it requires skills and interest in: low level concurrent programming, maths/linear algebra and physical behavior intuition.
If you do find these topics fascinating and can demonstrate some ability in them, your skills will certainly be in demand.
I've always observed a curious thing within India regarding the Devnagari (Hindi) and Latin (English) scripts. Essentially all English words are always written in Devnagari, but it's rarely the other way around. For example it is much more likely to see इंग्लिश टू हिंदी than "angrezi se hindi".
My personal theory is that this is because you can make every sound you hear in English using the Devnagari script, but not the other way around.
> My personal theory is that this is because you can make every sound you hear in English using the Devnagari script, but not the other way around.
This is not very close to true. English (even a given accent) has a rather high number of phonemes, and they don’t overlap very closely with Hindi. What is probably more relevant here is that Devanagari is relatively phonetic so writing in it is useful to describe English pronunciations, more so than the English script is for Hindi (or English, for most unfamiliar words).
I think both you and GP are correct, but in different ways.
It's true that the English language has a very large number of phonemes... but accents tend to regularize/restrict these phonemes. For example, a typical bilingual speaker of Indian English and Hindi will replace instances of the /æ/ phoneme (as in "blast" or "fast") with another phoneme like /a:/ (as in "father"). Which isn't that unusual since /æ/ is pretty uncommon among languages.
Other rare English phonemes include the dental fricatives, i.e. the "th" sounds in "ether" (voiceless) and "either" (voiced). Speakers of Indian English often replace this with a dental stop, a "t" sound (voiceless) or "d" sound (voiced). (Note that Devanagari has a _lot_ of stops, so this is one place where it cannot be cleanly encoded into the Latin alphabet without diacritics.)
So overall: while I think Devanagari can't encode e.g. American English, it can actually do a pretty solid job of encoding Indian English, but not the other way around.
Sounds like a reasonable theory but do you have an actual example? The one you gave:
> For example, a typical bilingual speaker of Indian English and Hindi will replace instances of the /æ/ phoneme (as in "blast" or "fast") with another phoneme like /a:/ (as in "father"). Which isn't that unusual since /æ/ is pretty uncommon among languages.
does not apply to Indian languages because most of them have daily-use-words with the /æ/ sound.
Hindi written in Devanagari is highly phonetic (not perfect but near perfect). However, English is not phonetic at all. E.g., "Th" in Then is different from the "Th" sound in Father.
Devanagari has much more phonetic structure than English spelling.
The English Latin letter arrangement holds a tenuous phonetic connection to pronunciation half the time, whereas the devanagari usually indicates exactly how you say it.
Perhaps explains why Indian accent is the way it is - most of the time it's a literal phonetic translation. Words like "champagne" are source of joke for any English learner, but even a simple word like "nature" has a phonetic translation of "Na two rae".
As a Bollywood superstar famously quotes: English is a funny language.
It's that plus the fact that half of spoken Hindi is actually English words cobbled into the language similar to how English was latinized due to the normans and french
I'm not sure if I don't understand, or completely disagree, but if you look anywhere 'digital' like Reddit for example, a lot of Hindi is written in Latin script. WhatsApp too in private communication, where people don't have or haven't understood how to use a devanagari (or transliterating) keyboard on their phone.
As a Britisher learner it's frustrating¹ actually, because there is a standard for how to do this - IAST, for Sanskrit/derived generally - but of course that's not what native speakers use casually. E.g. your 'angrezi se hindi' would be 'añgrezī se hiñdī' but anyone writing Hindi with those accents is foreign or an academic. (Also people will casually write 'ay' instead of 'e' ए or 'ee' for 'ī' ई, etc. cf. 'paneer'.)
[1: The frustration is because it leads to ambiguity, whereas IAST is 1:1 and so preserves the phonetic nature of devanāgarī, and tells me exactly which t/d/r sound, if it's aspirated, etc. which a fluent native layperson's anglicised interpretation really doesn't. They might write gora & gora and know from context if that's gora or ghoṛā, but if I don't already know the word a gora like me is stuck.]
Many foreign learners have written about it.
Essentially, one can follow conventions around oneself or try to write and get an English spelling that sounds closest to Hindi pronunciation. And there are no academic rules around it that one is taught in schools in India.
I learnt about IAST only after seeing how foreigners transcribe Sanskrit texts in Latin.
Thanks, I'm slack on that because I can't type it!
(I also am often unsure which is correct, since as you no doubt know it's so common to drop the चंद्र and write हूं for example where it's properly हूँ )
In a lot of "technical" situations, people tend to opt for the well established English counter parts for nouns or concepts. eg even a native Hindi speaker will use कंप्यूटर / computer over संगणक / Sanganak
Given the name I was also expecting some clever SQL-like data structure/query for fast spatial lookup but I digress.
Game physics involves a lot of things (solvers, collision detection, numerical stability, etc.).
I am skeptical of their claims of being able to run physics in what I understand are stored procedures for their database.
I looked at their docs for physics https://spacetimedb.com/docs/unity/part-4
where they demonstrate the simplest form of collision check (sphere overlap). I fail to see how that is an improvement or speedup over existing methods. Some quotes:
"This may not be the most efficient way to do collision checking (building a quad tree or doing spatial hashing might be better), but SpacetimeDB is very fast so for this number of entities it'll be a breeze for SpacetimeDB."
>> Nothing is quantified with numbers.
"For every circle, we look at all other entities."
>> This is the most inefficient N^2 way you could do collision detection.
And not to mention networked physics is a whole additional layer of complexity, where you have to use some form of prediction techniques and very likely end up changing your core physics code to accommodate this.
All of this suggests to me much thought has not been put into the claim "you can also do physics with it!" and its implications. Perhaps it is enough for extremely simple physics, as demonstrated with their demo game. If the author is reading this, I suggest spending some time understanding what this claim implies and qualifying it better.
However I must mention that I applaud their courage to try something so outlandish. If you truly believe your claims are possible, I encourage you to keep working on it.
But I'll be convinced when extraordinary evidence backs extraordinary claims.
Source: I work on a commercial game physics engine and related netcode.
I believe they've done more complicated physics in their game bitcraft, but that code hasn't been released yet (no idea if it will be.) But there has been work in the discord recently and 2 member have individually implemented rapier[1] at this point. I can't say anything about the related netcode however as I don't know how much they've focused on it. At the very least work has been done.
The unity tutorial is just to get up and running as fast as possible in the simplest way possible, not to make the perfect decisions for a networked physics based game.
I however do think they should provide an actual reference to prove the claim,
Nice, that's very interesting and a commendable achievement!
If that is the case I would really like to see some internals of how the physics engine has been implemented in their pattern. I'm not asking for the rapier port source code, but it is hard to think in terms of a new advertised programming paradgim when there's no working examples.
For example I am very curious to see how a constraint solve is implemented in a SQL-like fashion. You would need various math operations and an efficient matrix representation off the top of my head, and I can't think of how that maps to a SQL-like interface.
On of the people who implemented it is from unity, from my understanding he can't actually release the code. For the other guy, this was his last comment on the matter
> Sure, my plan was to write a readme and share the code with my colleagues anyway. It should be ready by the weekend because I'm in the middle of a refactoring right now.
> The gist of it: each time a System adds a "movable" component to a StDb table, it also adds the rigid body and collider in Rapier. Then, a scheduled reducers updates the simulation then fetches resulting positions and velocities from Rapier and updates the "movable" components. I have no client prediction at this time.
So my understanding is rapier is just compiled into the wasm and run like normal while the results are stored into the table for clients to receive via subscription. I won't say it's a perfect solution, but efforts are being made by the small community to see how we can really push the db.
Note: while it's all very procedure like you can just store data normally in the rust side, you just have to push the information to the table for it to be query-able.
I see, that's extremely interesting. As mentioned earlier, I do respect efforts to push on something new, especially if it's against conventional wisdom and would be interested in poking around with an open mind. I'll join the Discord.
Thank you!
Then again looking at the FAQ for Bitcraft, we have this:
"What engine does BitCraft use?
The BitCraft client is developed using the Unity game engine. For the server, we have developed a sophisticated distributed system called SpacetimeDB, which hosts the entirety of BitCraft’s server architecture. "
Correct me if wrong, but this suggests the physics engine is Unity's, and not something implemented in SpacetimeDB.
I didn't truly know and I didn't want to just throw out a guess so I just asked. They mentioned they have a basic hand rolled system for their physics. So not using unity physics.
I guess making the claim that is was more complicated might have not been right for me to do, but it would be hard to believe that they did the degenerate case of O(n^2).
Speculation: I have only written a physics engine once during college (so please excuse my ignorance), but I think for a basic mmo a simple chunk and AABB approach would work. It would be easy to query for the surrounding chunks and just run the collision on that subset. I know one of the team members was working on porting a minecraft 1.7.3 server at one point, but I don't know if they got up to the point of moving collision off of the server and into the database.
Thank you for asking and forwarding the answer. I appreciate your comments.
Speculation as well: Looking at the trailer for Bitcraft, it looks like they have articulated characters and cloth physics. This raises more questions for me.
I am contributing to a project by a SpacetimeDB community member to get Rapier running within Unity. Instead of trying to get Unity PhyX running on the server, we just use a deterministic Rust physics engine on both client and server. It is a mostly complete drop in replacement as it stands and is deterministic (Unity's PhyX is not). We'll keep improving it!
We rely on the guarantees of Rapier's determinism. I haven't done extensive testing on the determinism claim yet, but it has held up so far.
https://rapier.rs/
Wohoo, my name is in the contributors list! This helped me get in a computer graphics grad course at a top(?) school and certainly helped in further job applications.
If anyone else is interested in a graduate degree in this field, I recommend doing something similar - I simply made a few reasonable PRs to fix some issues that I found when following along the books.
I just started, but my hope is to post about nature, photography and computer graphics.
I've only got time to finish one full article so far. It's a low-budget guide to the Montreal GP with some sweet photos I'm proud of: https://manas96.github.io/blog/f1guide/