Sign in

Noel Berry

@noelfb.bsky.social
8K followers 433 following 854 posts

Sometimes, when I'm in the right mood, I make video games and art. Or something. Made Celeste with friends, working on City of None and Jumper at EXOK. www.noelberry.ca

PostsRepliesMedia
Noel Berry @noelfb.bsky.social · 18/08/2026
The place it is noticeable is when there are transparent gradients overlapping it, which can cause different pixels to jump to the next value in the palette at different times:
2501
Noel Berry @noelfb.bsky.social · 18/08/2026
Our game decides what color everything is by dynamically indexing into a palette based on the red-channel at run time, split evenly into 4 segments. I just noticed the colors we use for drawing stuff isn't evenly distributed, which MOST of the time has no impact
An image showing a grayscale gradient, and where the values we use for drawing sprites lie along it.
3954
Noel Berry @noelfb.bsky.social · 19/07/2026
a drill item + floaty water in City of None (with @liamberry.ca)
1550147
Noel Berry @noelfb.bsky.social · 23/06/2026
this just messed me up for a while because apparently C# record structs will not create an parameterless constructor unless it is explicitly defined and `new Struct()` will be the same as `default`. this is wacky dude
screenshot of the following code:

public readonly record struct PropertiesA(int Weight = 10);

public static void TestA()
{
	var x = new PropertiesA();
	var y = default(PropertiesA);

	// this will print 0, 0
	Console.WriteLine($"{x.Weight}, {y.Weight}");
}

public readonly record struct PropertiesB(int Weight = 10)
{
	public PropertiesB() : this(10) {}
}

public static void TestB()
{
	var x = new PropertiesB();
	var y = default(PropertiesB);

	// this will print 10, 0
	Console.WriteLine($"{x.Weight}, {y.Weight}");
}
6443
Noel Berry @noelfb.bsky.social · 18/06/2026
one of the areas in our game, City of None
screenshot of an area in City of None, viewed from our level editor
1750128
Noel Berry @noelfb.bsky.social · 21/05/2026
Ready for BitSummit with @liamberry.ca !
623611
Noel Berry @noelfb.bsky.social · 18/05/2026
Bird craves the flames...
2432
Noel Berry @noelfb.bsky.social · 17/05/2026
In Kyoto. Caffeinated. Ready to show City of None later this week!
An empty cup of coffee
2861
Noel Berry @noelfb.bsky.social · 14/05/2026
Me, jet lagged, waiting for my coffee
Painting of an Ape by Shao Fan, titled "You", 2011, oil on canvas
1862
Noel Berry @noelfb.bsky.social · 13/05/2026
Gonna be in Kyoto from May 16 -> 26 showing City of None at Bitsummit! We'll be here:
Bitsummit floor plan showing our booth at 1F-D01
61078
Noel Berry @noelfb.bsky.social · 01/05/2026
We will also be demoing City of None in Kyoto at Bit Summit! Looking forward to being there and showing the game!
Bit Summit event 1F floor plan. City of None will be at booth 1F-D01
7801
Noel Berry @noelfb.bsky.social · 27/04/2026
graph showing github downtime since microsoft's acquisition from https://damrnelson.github.io/github-historical-uptime/
140
Noel Berry @noelfb.bsky.social · 12/04/2026
OK I'm gonna stream some gamedev in about an hour from now (2:30pm PST). I haven't streamed in forever! Gonna be reworking an enemy I don't like. www.twitch.tv/noelfb
2556
Noel Berry @noelfb.bsky.social · 10/04/2026
Yeah, Celeste does this (and also has a separate one for Japanese). although it's not that cool looking imo....
Screenshot of Celeste's file-naming screen with an on-screen built-in keyboard
160
Noel Berry @noelfb.bsky.social · 10/04/2026
apparently Linux hit 11% for English speakers on Steam last month. That's pretty cool, imo! (from www.gamingonlinux.com/steam-tracke...)
Graph of English speaking Linux users on Steam, over time, spiking last month at 11.28%
61449
Noel Berry @noelfb.bsky.social · 09/04/2026
Experimenting with the idea of running save files on the title screen for very smooth game-loading ...
702164327
Noel Berry @noelfb.bsky.social · 02/04/2026
I got my C# game compiling to android and running on the AYN Thor which is neat. Didn't require any engine changes besides how to load files (also no Audio yet but I assume FMOD has Android binaries)
Picture of the AYN Thor handheld with my game, City of None, running on it
122194
Noel Berry @noelfb.bsky.social · 01/04/2026
unlocking new areas in City of None (with @liamberry.ca)
1557974
Noel Berry @noelfb.bsky.social · 19/03/2026
OK I did the creature art today
829734
Noel Berry @noelfb.bsky.social · 17/03/2026
i know everyone is going on about this but i'm watching the digital foundry video on the DLSS5 stuff and they keep going on about how it really understands shadows, meanwhile it's just erasing every shadow and making everything look floaty and blown out.
151509
Noel Berry @noelfb.bsky.social · 17/03/2026
experimenting with a new enemy in City of None with @liamberry.ca (haven't done the creature art yet, not sure what it's gonna look like)
2549963
Noel Berry @noelfb.bsky.social · 25/02/2026
How are people running Celeste on stuff like the Ayn Thor? I thought it ran an Android OS of some kind, but I see people running Steam games on it?
picture of someone with Celeste installed on their Ayn Thor handheld
13592
Noel Berry @noelfb.bsky.social · 25/02/2026
it's kinda fun zooming all the way out on big screens while editing
823621
Noel Berry @noelfb.bsky.social · 23/02/2026
yeah it's a shader - it's just perlin noise stretched and scrolling, basically. And yeah I don't use resources for this, my little engine hot-reloads the shader so I just mess around with values until I like it. You can use shadertoy online alternatively.
screenshot of HLSL shader code:

float4 fragment_main(VsOutput input) : SV_Target0
{
	float t = Time * 0.05;
	float2 uv = input.TexCoord / float2(320, 180);
	float2 at0 = uv + float2(t, 0);
	float2 at1 = uv + float2(t, 0 * 0.25);

	float4 noise0 = Texture.Sample(Sampler, at0 * float2(0.25, 1));
	float4 noise1 = Texture.Sample(Sampler, at1 / 5 + float2(cos(noise0.g + t) * 0.2, sin(noise0.b) * 0.1));
	float n = noise0.r * noise1.g * 1.8;

	return lerp(Color1, Color0, step(n, 0.5));
}Image of RGB perlin noise
110
Noel Berry @noelfb.bsky.social · 20/02/2026
literally half the time spent was not realizing this greyed-out field meant that it had "no value assigned" rather than a set value I couldn't edit.
030
Noel Berry @noelfb.bsky.social · 20/02/2026
was it worth it? uhhh....
81228
Noel Berry @noelfb.bsky.social · 20/02/2026
this took me like 3 hours to make in blender today
4963
Noel Berry @noelfb.bsky.social · 07/01/2026
good game i just wish the devs had given up the rest of their lives for me to enjoy this a little more 😔😔
Negative steam review "Very good game with its own unique mechanics and spin on the Metroidvania genre. The grapple dash feels insanely good. However the game is pretty short and feels kind of Early Accessy as in there would be so much more potential for this game. I just wish the devs took 2 or 3 more years to really develop their idea and really maximize what this game could've been."
41063
Noel Berry @noelfb.bsky.social · 06/01/2026
still not even 4% but this trend is really cool (from www.gamingonlinux.com/2026/01/valv...)
graph showing linux use on Steam from 2018 (0.7%) to 2026 (3.6%)
7702
Noel Berry @noelfb.bsky.social · 16/12/2025
just let me request a window position, wayland. 99.99% of people are not using their desktop ui in a 3d virtual VR space, and now my normal desktop app can't position itself like it can on win/mac/x11 lol
https://wayland-book.com/xdg-shell-in-depth/interactive.html

"However, a deliberate design trait of Wayland makes application windows ignorant of their exact placement on screen or relative to other windows. This decision affords Wayland compositors a greater deal of flexibility — windows could be shown in several places at once, arranged in the 3D space of a VR scene, or presented in any other novel way. Wayland is designed to be generic and widely applicable to many devices and form factors."
7383
Noel Berry @noelfb.bsky.social · 28/11/2025
pretending to know how to do lighting
819611
Noel Berry @noelfb.bsky.social · 15/11/2025
still pretending to make a 3d game
131719
Noel Berry @noelfb.bsky.social · 07/11/2025
pretending i know how to make a 3d game
925716
Noel Berry @noelfb.bsky.social · 03/11/2025
hmm maybe a 3d platformer with a palette shader?
71257
Noel Berry @noelfb.bsky.social · 02/11/2025
yeah cuz you are
image of a reddit thread titled "I Can't Help Feeling Like a Creep Wearing Meta's New Gen 2 Glasses"
3947
Noel Berry @noelfb.bsky.social · 29/10/2025
maybe a 3d platformer? (model is modified from: kenney.nl/assets/mini-...)
2802
Noel Berry @noelfb.bsky.social · 12/10/2025
Melbourne was really cool! Awesome city, lovely people, hope to visit again some day. Next time I wanna see more outside the city on a longer trip
A picture of some of melbourne's city line, from a hill somewhere
8581
Noel Berry @noelfb.bsky.social · 25/09/2025
genuinely, who cares? public services aren't businesses. it provides services that should be accessible to the entire population. it should not be expected to make that profitable. www.cbc.ca/news/politic...
screenshot from the article: "Canada Post is now facing an existential crisis," Government Transformation, Public Works and Procurement Minister Joël Lightbound said in a statement on Thursday. "Since 2018, the corporation has accumulated more than $5 billion in losses. In 2024 alone, it lost over $1 billion, and in 2025, it is already on track to lose close to $1.5 billion."
15605143
Noel Berry @noelfb.bsky.social · 22/09/2025
I'm not gonna have time to make anything with this but I started on a tiny interactive web thing for Vancouver Game Garden using @pietepiet.com's art and LDtk (arrow keys): vangamegarden.com/events/02/ga...
615519
Noel Berry @noelfb.bsky.social · 02/09/2025
here's a pixelated 3d spinning heart I made for a thing today
422514
Noel Berry @noelfb.bsky.social · 30/08/2025
(if you are at all interested in doing this the csproj property is called DocumentationFIle:)
csproj xml showing properties to generate documentation files
0160
Noel Berry @noelfb.bsky.social · 30/08/2025
A C# thing I really like for custom editors is that you can automatically generate xml from your comments, and then load those at runtime and display them using reflection. So now code-comments are also editor docs/information:
An image showing C# comments, followed by generated XML, followed by a screenshot of a level editor presenting those comments.
914010
Noel Berry @noelfb.bsky.social · 25/07/2025
Am I a speedrunner now? (skipping stuff in the new DK game... but then not following through because I assume I need some kinda power up for this wind stuff)
3271
Noel Berry @noelfb.bsky.social · 24/07/2025
basically making a circa 2009 flash game (w/ @maddymakesgames.com)
41067
Noel Berry @noelfb.bsky.social · 17/07/2025
this is going to be the sequel to celeste
1840628
Noel Berry @noelfb.bsky.social · 06/07/2025
trying to make something small in javascript and this language is so stupid lol. just trying to parse a json file, apparently "import" is the easiest way now. except it's so janky!
screenshot of the following code:

// this doesn't work for "reasons"
import data from './levels.ldtk';

// everywhere online says you need to assert the type
// except, wait! this doesn't work in browsers anymore?
import data from './levels.ldtk' assert { type: 'json' };

// it's been changed to "with" for whatever reason, OK.. fine..
// except, wait! this still doesn't work and fails to load?
import data from './levels.ldtk' with { type: 'json' };

// oh it needs to have a .json ext EVEN THOUGH i tell its type
// this one works
import data from './levels.json' with { type: 'json' };
13691
Noel Berry @noelfb.bsky.social · 06/07/2025
yeah... this one would just keep adding to the circle but it becomes unwieldy past about 12 items.
170
Noel Berry @noelfb.bsky.social · 06/07/2025
experimenting with a radial menu 🤔 (among other things, in City of None with @liamberry.ca)
825819
Noel Berry @noelfb.bsky.social · 19/06/2025
I just use C# for 95% of the game - hot reload and compile times being basically 0 in C# means it's very easy to iterate fast. However, I do have a light node system I made for cutscenes, because it's convenient for one-off little events
140
Noel Berry @noelfb.bsky.social · 15/05/2025
we custom code a lot of cutscenes because with C# hot reload it's faster and easier, so these are more for one-off little events. The bigger cutscenes still use the same system, but they just end up being a singular custom node haha
110