Shantanu's Avatar

Shantanu

@dontstopthinking.bsky.social

Tools Programmer @ Ubisoft Reflections

7 Followers  |  38 Following  |  2 Posts  |  Joined: 06.09.2024  |  2.0923

Latest posts by dontstopthinking.bsky.social on Bluesky

Landscape with a fisherman coming ashore from his boat in the foreground. Behind the river runs past a small Shinto shrine in the bank beside two tall trees.

Landscape with a fisherman coming ashore from his boat in the foreground. Behind the river runs past a small Shinto shrine in the bank beside two tall trees.

'Water God at Katsushika' - Takahashi Hiroaki, 1924-27.
#JapaneseArt #shinhanga

31.07.2025 11:01 โ€” ๐Ÿ‘ 206    ๐Ÿ” 47    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Itโ€™s really cool to see my talk freely available for everyone. Iโ€™m proud of the work our team accomplished, and it means a lot that itโ€™s now accessible to a wider audience.
Huge thanks to the GDC team for putting it out there!

#AssassinsCreedShadows #GameDevelopment #GDC2025

29.05.2025 17:42 โ€” ๐Ÿ‘ 89    ๐Ÿ” 17    ๐Ÿ’ฌ 5    ๐Ÿ“Œ 0

Hardcoded credentials in the Signal archiving tool used by the White House is a five-alarm security dumpster fire.

03.05.2025 21:42 โ€” ๐Ÿ‘ 1759    ๐Ÿ” 581    ๐Ÿ’ฌ 48    ๐Ÿ“Œ 46
What Every Programmer Should Know about How CPUs Work โ€ข Matt Godbolt โ€ข GOTO 2024
This presentation was recorded at GOTO Chicago 2024. #GOTOcon #GOTOchgohttps://gotochgo.comMatt Godbolt - Low-level Latency Geek @MattGodbolt RESOURCEShttps:... What Every Programmer Should Know about How CPUs Work โ€ข Matt Godbolt โ€ข GOTO 2024

Ever wonder what happens between your code and the CPU? @matt.godbolt.org explores how modern processors & compilers boost performanceโ€”and what to do when they donโ€™t.

16.04.2025 12:04 โ€” ๐Ÿ‘ 47    ๐Ÿ” 13    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 2
Preview
How six million Call of Duty players sent Helldivers 2 into a tailspin โ€œGames that get 19% user score do not generally recoverโ€

โ€œI assumed with Sony having paid a lot of money for (Helldivers 2) that they would run the show. Because what do these wild kids in Sweden know? But I've been very pleasantly surprised to see how creator friendly PlayStation has been. Truly impressiveโ€ www.thegamebusiness.com/p/helldivers...

02.04.2025 06:30 โ€” ๐Ÿ‘ 20    ๐Ÿ” 2    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Huge congrats to all my colleagues at Ubisoft on the launch of Assassin's Creed Shadows! The game is absolutely incredible - you guys have completely knocked it out of the park with this one. Bravo!

21.03.2025 20:24 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
A screenshot of the blog post reads:

# What's a PRNG

Most random number generators that you see on computers are pseudorandom number generators.

These are algorithms that output random-looking numbers based on one or other form of initial seed or state. Same input means same outputs!

Typically each iteration the generator will modify its internal state and return a value.

For example, a tiny, pitiful implementation of Lehmer random number generator might look something like this:

newState = (oldState * 7) % 11;

Given an initial state/seed of 3, this would output

[...]

A screenshot of the blog post reads: # What's a PRNG Most random number generators that you see on computers are pseudorandom number generators. These are algorithms that output random-looking numbers based on one or other form of initial seed or state. Same input means same outputs! Typically each iteration the generator will modify its internal state and return a value. For example, a tiny, pitiful implementation of Lehmer random number generator might look something like this: newState = (oldState * 7) % 11; Given an initial state/seed of 3, this would output [...]

A screenshot of the blog post reads:

# "Save scumming"

[image: A person with a sword and a shield stands on an isometric tile and innocently looks at a "17%" label above them]

If your game involves chance actions and allows to save/load the game before performing such actions, players will inevitably figure out that they can save and re-load the game to re-try the roll until they get what they want.

GameMaker does not currently allow to save/load state of the built-in random generator (and likely won't in the near future), but with a custom generator, you could save its state along with the game and load it back so that performing the same action after loading the game will always yield the same result.

A screenshot of the blog post reads: # "Save scumming" [image: A person with a sword and a shield stands on an isometric tile and innocently looks at a "17%" label above them] If your game involves chance actions and allows to save/load the game before performing such actions, players will inevitably figure out that they can save and re-load the game to re-try the roll until they get what they want. GameMaker does not currently allow to save/load state of the built-in random generator (and likely won't in the near future), but with a custom generator, you could save its state along with the game and load it back so that performing the same action after loading the game will always yield the same result.

A screenshot of the blog post reads:

# WELL512

This is the PRNG that GameMaker itself uses!

Standing for Well Equidistributed Long-period Linear, it's a RNG with state consisting of an index and 16 unsigned 32-bit numbers. Allegedly it's all-around pretty good.

This is another one where the code almost works if you copy-pasted it:

[...]

A screenshot of the blog post reads: # WELL512 This is the PRNG that GameMaker itself uses! Standing for Well Equidistributed Long-period Linear, it's a RNG with state consisting of an index and 16 unsigned 32-bit numbers. Allegedly it's all-around pretty good. This is another one where the code almost works if you copy-pasted it: [...]

A screenshot of the blog post reads:

# MINSTD

This generator is much simpler so it manages to beat some of the extension calls even on VM:

[graphs]

And on YYC, a global version almost beats the C++ raw pointer version!

[graphs]

You can squeeze a little more performance out of it by turning the generator into a set of macros:

[graphs]

Here I'm also testing a script that modifies a self.state variable with a forceinline tag, but that is not as efficient as doing this during a GML build with a macro.

A screenshot of the blog post reads: # MINSTD This generator is much simpler so it manages to beat some of the extension calls even on VM: [graphs] And on YYC, a global version almost beats the C++ raw pointer version! [graphs] You can squeeze a little more performance out of it by turning the generator into a set of macros: [graphs] Here I'm also testing a script that modifies a self.state variable with a forceinline tag, but that is not as efficient as doing this during a GML build with a macro.

I wrote a new blog post!

It's about pseudorandom number generators - what these are, how they work, when you might to use a custom one in GameMaker, and performance comparisons.

yal.cc/gamemaker-cu...

03.03.2025 22:06 โ€” ๐Ÿ‘ 94    ๐Ÿ” 19    ๐Ÿ’ฌ 4    ๐Ÿ“Œ 0
Preview
Obsidian is now free for work Starting today, the Obsidian Commercial license is optional. Anyone can use Obsidian for work, for free. Explore organizations that support Obsidian on our new Enterprise page.

Obsidian is now free for work.

Starting today, the Obsidian Commercial license is optional. Anyone can use Obsidian for work, for free. Explore the organizations that support Obsidian on our site.

obsidian.md/blog/free-fo...

20.02.2025 14:44 โ€” ๐Ÿ‘ 785    ๐Ÿ” 213    ๐Ÿ’ฌ 10    ๐Ÿ“Œ 44
Reverse Engineering Call Of Duty Anti-Cheat Iโ€™ve been reversing Black Ops Cold War for a while now, and Iโ€™ve finally decided to share my research regarding the user-mode anti-cheat inside the game. Itโ€™s not my intention to shame or promote chea...

I spent the last month reverse engineering Call of Duty's anti-cheat!

Blog post here: ssno.cc/posts/revers...

20.01.2025 21:49 โ€” ๐Ÿ‘ 449    ๐Ÿ” 71    ๐Ÿ’ฌ 10    ๐Ÿ“Œ 5
Post image

CARTOON OF THE DAY

21.01.2025 22:05 โ€” ๐Ÿ‘ 16925    ๐Ÿ” 3635    ๐Ÿ’ฌ 169    ๐Ÿ“Œ 199
Preview
GitHub - jlaumon/Bedrock: Minimal C++20 STL replacement library. Simpler, smaller, and in many cases faster. Minimal C++20 STL replacement library. Simpler, smaller, and in many cases faster. - jlaumon/Bedrock

I have just made the repo of my C++ STL replacement lib public on github. It's called Bedrock.

It's got the usual things, Vector, String, Atomic etc. but also a very good HashMap and few interesting allocators (details on blog: danglingpointers.com/post/bedrock...)

github.com/jlaumon/Bedr...

30.12.2024 13:08 โ€” ๐Ÿ‘ 114    ๐Ÿ” 12    ๐Ÿ’ฌ 5    ๐Ÿ“Œ 1
Video thumbnail

What does it mean for something to be Turing complete?

I answer this question, and more, through a series of fully interactive Turing machine simulations! Play, pause, step forwards and backwards, and even write your own Turing machine programs in my latest blog post.

samwho.dev/turing-machi...

20.12.2024 22:33 โ€” ๐Ÿ‘ 532    ๐Ÿ” 160    ๐Ÿ’ฌ 23    ๐Ÿ“Œ 36
Post image Post image Post image Post image

Some of my fav work I did on SW:Jedi Survivor.
Joined late during production of the game so had to produce work at lightening speed while learning the engine and systems. Sometimes you never get as much time as you like on levels, so you have to learn to take short cuts to get the quality you want.

21.11.2024 00:51 โ€” ๐Ÿ‘ 150    ๐Ÿ” 24    ๐Ÿ’ฌ 8    ๐Ÿ“Œ 0
pixel art of an eclipse in a night sky. the palette goes from bright pink to purple to dark blue.
in the foreground a crow with a glowing eye sits on a tree branch.

pixel art of an eclipse in a night sky. the palette goes from bright pink to purple to dark blue. in the foreground a crow with a glowing eye sits on a tree branch.

eclipse #pixelart 2022

24.11.2024 10:41 โ€” ๐Ÿ‘ 3361    ๐Ÿ” 670    ๐Ÿ’ฌ 21    ๐Ÿ“Œ 6

You know what I hear a lot about in this industry? Imposter syndrome.

I made the 8th best-selling game of all time. By all rights, I should feel like an authority. I donโ€™t. I have it too.

Hereโ€™s my advice to devs out there: Ignore it. Youโ€™re better than you think you are.

24.11.2024 04:42 โ€” ๐Ÿ‘ 2633    ๐Ÿ” 183    ๐Ÿ’ฌ 101    ๐Ÿ“Œ 12
Post image

๐•ƒ๐• ๐•ง๐•– ๐•ช๐• ๐•ฆ๐•ฃ๐•ค๐•–๐•๐•— ๐•—๐•š๐•ฃ๐•ค๐•ฅ ๐•’๐•Ÿ๐•• ๐•–๐•ง๐•–๐•ฃ๐•ช๐•ฅ๐•™๐•š๐•Ÿ๐•˜ ๐•—๐•’๐•๐•๐•ค ๐•š๐•Ÿ๐•ฅ๐•  ๐•๐•š๐•Ÿ๐•–.

18.11.2024 22:20 โ€” ๐Ÿ‘ 7    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image Post image

The Telltale game engine has a cutscene tool called the "Chore tool" (chore is short for choreography), for constructing cinematic sequences out of component parts. The tool and its name has a heritage that goes all the way back to one of the original tools built for making LucasArts SCUMM games.

09.11.2024 23:43 โ€” ๐Ÿ‘ 81    ๐Ÿ” 14    ๐Ÿ’ฌ 3    ๐Ÿ“Œ 2

Hey hey, is this place any better than Twitter??

06.09.2024 21:40 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

@dontstopthinking is following 20 prominent accounts