Tiffany's Avatar

Tiffany

@tiffany.moe

aka https://social.treehouse.systems/@tiffany she/her (english), ela/dela (português)

38
Followers
64
Following
34
Posts
26.09.2023
Joined
Posts Following

Latest posts by Tiffany @tiffany.moe

Preview
Converting my game to C# I recently converted my game from a mix of GDScript and C++ into Godot C#.

I wrote an article about it: tiffnix.com/csharp-conve...

05.01.2026 00:54 👍 0 🔁 0 💬 0 📌 0
Flying around (space game dev)
Flying around (space game dev) YouTube video by Tiffany

I finally got terrain rendering working reliably without lag or crashes

www.youtube.com/watch?v=Ut9c...

04.01.2026 16:55 👍 1 🔁 0 💬 0 📌 0

I spent a week converting my game's code from gdscript and gdextension C++ into C# (still using godot, but using its C# integration now)

it's so much easier to work on the codebase now, I've already fixed a bunch of issues and I'm in a much better spot to add more gameplay systems

02.01.2026 01:21 👍 7 🔁 0 💬 2 📌 0
screenshot of material maker showing a wood plank material I made, with its node graph visible as well as a 3D preview using an HDRI

screenshot of material maker showing a wood plank material I made, with its node graph visible as well as a 3D preview using an HDRI

I started using material maker recently, it's an open source program for making PBR textures

it's a much nicer workflow for my pixel art style than the krita filter layers I was using before, although it does crash a lot

26.10.2025 06:49 👍 1 🔁 0 💬 0 📌 0
screenshot of the godot editor showing stars rendering at 1500fps

screenshot of the godot editor showing stars rendering at 1500fps

view of doppler shift at 92% of the speed of light

view of doppler shift at 92% of the speed of light

I've been out of motivation on my godot project for a while, but today I got a foothold on it, converting star rendering to use compute shaders + CompositorEffect

I'm going to try a different way to fix the issues that I got stuck on before (unrelated to star rendering)

13.10.2025 06:50 👍 3 🔁 0 💬 0 📌 0
Commits on Jul 26, 2025

Replace async-std with smol (#209)
Exit with failure code for errors in CLI args (#208)
Steradian should be radian^2 (#207)
add As and Ah to abbrevs (implements #187)
Prefixed currency like £3 (#206)
Custom currency units (#202)
add factorial function (#205)

Commits on Jul 26, 2025 Replace async-std with smol (#209) Exit with failure code for errors in CLI args (#208) Steradian should be radian^2 (#207) add As and Ah to abbrevs (implements #187) Prefixed currency like £3 (#206) Custom currency units (#202) add factorial function (#205)

I worked on rink this weekend, I'm hoping to get v0.9 out soon if I can, but there are a few big annoying tasks left to do

28.07.2025 04:29 👍 3 🔁 0 💬 1 📌 0
A giant octahedron shaped fractal with several shapes similar to a Sierpinski triangle visible. It's colored mostly in yellow and red.

Ruleset is 1-3/1,4-5/5/N

A giant octahedron shaped fractal with several shapes similar to a Sierpinski triangle visible. It's colored mostly in yellow and red. Ruleset is 1-3/1,4-5/5/N

A lot of different lines scuttling about, covering the entire screen in complete chaos. There are colors in a gradient from yellow to purple.

The ruleset is 4/4/5/M

A lot of different lines scuttling about, covering the entire screen in complete chaos. There are colors in a gradient from yellow to purple. The ruleset is 4/4/5/M

I've been making a program that runs 3D cellular automata on the GPU using compute shaders, and renders using voxel raymarching

I can run 512x512x512 volumes in realtime on my PC

21.07.2025 05:03 👍 4 🔁 0 💬 0 📌 0
Post image

Whoa.

That's a sprite, an elusive, high-altitude electrical discharge from a thundercloud photographed by NASA astronaut Nichole Ayers from the ISS earlier today.

With reported sightings going back more than a century, this phenomenon was first photographed in 1989.

03.07.2025 21:40 👍 6421 🔁 2110 💬 79 📌 139
Comic. [two people in labcoats look at body pierced with blade draped over bench] PERSON 1: We found him lying uncomformably on the lab bench. I wonder if the iron-rich intrusion in his back is related. PERSON 2 with ponytail: It could be clastic. Maybe a rift opened in his body, and the intrusive material later fell into the hole. [caption] The Geology Department Investigates Their First Murder

Comic. [two people in labcoats look at body pierced with blade draped over bench] PERSON 1: We found him lying uncomformably on the lab bench. I wonder if the iron-rich intrusion in his back is related. PERSON 2 with ponytail: It could be clastic. Maybe a rift opened in his body, and the intrusive material later fell into the hole. [caption] The Geology Department Investigates Their First Murder

Geology Murder

xkcd.com/3112/

09.07.2025 01:19 👍 5770 🔁 874 💬 50 📌 38

my dream here is to have a lot of weird emergent behavior caused by the random variation (which follows a log-normal distribution)

I want titan-like seas of liquid methane, planets with crusts composed of 90% carbonate rocks, atmospheres that are primarily argon, etc

I'm already not that far off

07.07.2025 05:51 👍 4 🔁 0 💬 0 📌 0
screenshot showing a solar system with planets a through j, planet d is selected

Celestial
Mass 0.93 earth

Planet
Radius 1.03 earth
Surface Gravity 9.67 m/s^2

Core Composition
Mass 0.10 earth
Thickness 26.68 km
pyrite 51.06 %
Fe 41.17 %
Ni 4.62 %
Mn 2.66 %
Co 0.47 %
Ru 50.93 ppm
Au 46.01 ppm

screenshot showing a solar system with planets a through j, planet d is selected Celestial Mass 0.93 earth Planet Radius 1.03 earth Surface Gravity 9.67 m/s^2 Core Composition Mass 0.10 earth Thickness 26.68 km pyrite 51.06 % Fe 41.17 % Ni 4.62 % Mn 2.66 % Co 0.47 % Ru 50.93 ppm Au 46.01 ppm


Mantle Composition
Mass 0.18 earth
Thickness 15.04 km
bridgmanite 38.63 %
lansfordite 17.66 %
magnesite 12.62 %
forsterite 10.37 %
ceylonite 4.84 %
spinel 4.00 %
pleonaste 2.97 %
Cr 2.06 %
fayalite 1.72 %
natrite 0.51 %
millerite 0.37 %
kirschteinite 0.37 %

Mantle Composition Mass 0.18 earth Thickness 15.04 km bridgmanite 38.63 % lansfordite 17.66 % magnesite 12.62 % forsterite 10.37 % ceylonite 4.84 % spinel 4.00 % pleonaste 2.97 % Cr 2.06 % fayalite 1.72 % natrite 0.51 % millerite 0.37 % kirschteinite 0.37 %


Crust Composition
Mass 0.03 earth
Thickness 2.74 km
lansfordite 33.94 %
magnesite 24.24 %
quartz 16.59 %
boehmite 5.33 %
gibbsite 3.83 %
buddingtonite 3.19 %
goethite 1.62 %
limonite 1.30 %
Cr 1.23 %
pyrite 1.06 %
siderite 0.95 %
albite 0.85 %

Hydrosphere
Mass 0.10 earth
Thickness 16.76 km
water 99.99%
Br 2.27 ppm

Atmosphere
Mass 0.53 earth
Surface Pressure 614.40 kPa
Scale height 846.82 m
CO2 43.95 %
Ne 28.40 %
He 14.89 %
O2 12.15 %
N2 0.54 %
Ar 694.19 ppm
Cl 2.02 ppm

Crust Composition Mass 0.03 earth Thickness 2.74 km lansfordite 33.94 % magnesite 24.24 % quartz 16.59 % boehmite 5.33 % gibbsite 3.83 % buddingtonite 3.19 % goethite 1.62 % limonite 1.30 % Cr 1.23 % pyrite 1.06 % siderite 0.95 % albite 0.85 % Hydrosphere Mass 0.10 earth Thickness 16.76 km water 99.99% Br 2.27 ppm Atmosphere Mass 0.53 earth Surface Pressure 614.40 kPa Scale height 846.82 m CO2 43.95 % Ne 28.40 % He 14.89 % O2 12.15 % N2 0.54 % Ar 694.19 ppm Cl 2.02 ppm

I started making a procedural planetary system generator, starting from a raw list of elemental abundances + a bunch of formulas for various minerals

it's still pretty buggy but it's really cool to me that it's working at all

07.07.2025 05:38 👍 5 🔁 1 💬 1 📌 0
Video thumbnail
21.06.2025 22:07 👍 2 🔁 0 💬 0 📌 0
a ship traveling at 0.99981 c, in a dark void with a bright red light in front of it

a ship traveling at 0.99981 c, in a dark void with a bright red light in front of it

the ship slowed down to 0.9932 c, the red glow is fading away and the milky way is visible as a ring in front of the ship

the ship slowed down to 0.9932 c, the red glow is fading away and the milky way is visible as a ring in front of the ship

the ship has slowed to 0.84 c, things are mostly back to normal, although stars are still red- and blue-shifted

the ship has slowed to 0.84 c, things are mostly back to normal, although stars are still red- and blue-shifted

traveling so fast that the leftover light from the birth of the universe glows red hot

21.06.2025 22:05 👍 4 🔁 1 💬 1 📌 0
screenshot of the game, showing venus and the sun in the foreground, venus is selected and the info panel is showing it on the left

at the bottom of the screen there is the text:
INTERCEPT TRAJECTORY
closest approach: 97.14 km
time remaining: 10.25 min
distance remaining: 0.61 au
braking burn needed: 121.45 m/s²

screenshot of the game, showing venus and the sun in the foreground, venus is selected and the info panel is showing it on the left at the bottom of the screen there is the text: INTERCEPT TRAJECTORY closest approach: 97.14 km time remaining: 10.25 min distance remaining: 0.61 au braking burn needed: 121.45 m/s²

same text but zoomed in

same text but zoomed in

I added an intercept planner and now it's much easier to get to places without overshooting by 400 km/s

it automatically activates when your closest approach to the selected object is inside its hill sphere (the area where orbiting it is possible basically)

20.06.2025 06:16 👍 3 🔁 1 💬 0 📌 0
Post image

Funny how you just need to break some angles to turn kitchen environment into a spaceship.

15.06.2025 12:41 👍 8692 🔁 1957 💬 113 📌 102

the spacecraft is affected by gravity, I'm hoping to make it less confusing by adding UI/HUD elements

it currently accelerates very fast (100 km/s^2, or 10 000 Gs), otherwise interplanetary travel would take real life hours

16.06.2025 06:41 👍 3 🔁 0 💬 0 📌 0
Video thumbnail

I got a basic version of spaceflight working

16.06.2025 06:27 👍 4 🔁 1 💬 1 📌 0
STufaro (Author) 183 stars
December 28, 2011 04:41 PM

Well, after a little bit of struggling yesterday I've come up with a buggy, but somewhat-working, implementation.

My basic steps are as follows:


    Get the vector of the line:
    lineDirection = (lineStart - lineEnd)
    Find our soon-to-be constructed quad's normal as:
    quadNormal = cameraPosition - lineMidpoint
    Where lineMidpoint = ((lineStart + lineEnd) / 2). I reason this should be the quad's normal since the quad will always be facing the camera, like a billboard.
    Get the direction along which we should extrude vertices from our line, which is the cross product of lineDirection and quadNormal:
    extrudeDirection = Vector3.Cross(lineDirection, quadNormal)
    Normalize extrudeDirection.
    Get the W of lineStart and lineEnd by transforming them by the viewMatrix * projectionMatrix.
    wStart = (Vector3.Transform(lineStart, viewMatrix * projectionMatrix)).W
    wEnd = (Vector3.Transform(lineEnd, viewMatrix * projectionMatrix)).W
    Extrude vertices from the line along the extrudeDirection vector, in some multiple of the W.
    Vector3 startVert1 = lineStart + extrudeDirection * wStart * lineWeight
    Vector3 startVert2 = lineStart - extrudeDirection * wStart * lineWeight
    Vector3 endVert1 = lineEnd + extrudeDirection * wEnd * lineWeight
    Vector3 endVert2 = lineEnd - extrudeDirection * wEnd * lineWeight
    Connect the vertices to form a quad.

STufaro (Author) 183 stars December 28, 2011 04:41 PM Well, after a little bit of struggling yesterday I've come up with a buggy, but somewhat-working, implementation. My basic steps are as follows: Get the vector of the line: lineDirection = (lineStart - lineEnd) Find our soon-to-be constructed quad's normal as: quadNormal = cameraPosition - lineMidpoint Where lineMidpoint = ((lineStart + lineEnd) / 2). I reason this should be the quad's normal since the quad will always be facing the camera, like a billboard. Get the direction along which we should extrude vertices from our line, which is the cross product of lineDirection and quadNormal: extrudeDirection = Vector3.Cross(lineDirection, quadNormal) Normalize extrudeDirection. Get the W of lineStart and lineEnd by transforming them by the viewMatrix * projectionMatrix. wStart = (Vector3.Transform(lineStart, viewMatrix * projectionMatrix)).W wEnd = (Vector3.Transform(lineEnd, viewMatrix * projectionMatrix)).W Extrude vertices from the line along the extrudeDirection vector, in some multiple of the W. Vector3 startVert1 = lineStart + extrudeDirection * wStart * lineWeight Vector3 startVert2 = lineStart - extrudeDirection * wStart * lineWeight Vector3 endVert1 = lineEnd + extrudeDirection * wEnd * lineWeight Vector3 endVert2 = lineEnd - extrudeDirection * wEnd * lineWeight Connect the vertices to form a quad.

I was struggling for hours yesterday to get this to work, but thankfully there was this super helpful forum thread from 2011:

www.gamedev.net/forums/topic...

10.06.2025 04:57 👍 2 🔁 0 💬 0 📌 0
the butterfly curve rendered with a gradient from red to blue from t=0 to t=12pi

the butterfly curve rendered with a gradient from red to blue from t=0 to t=12pi

spiral thing with another gradient, except this time the gradient is also controlling the line width

spiral thing with another gradient, except this time the gradient is also controlling the line width

zoomed in view showing buttery smooth pixels

zoomed in view showing buttery smooth pixels

extends MeshInstance3D

# https://en.wikipedia.org/wiki/Butterfly_curve_(transcendental)
func _butterfly(a: float) -> Vector3:
	var r = (
		exp(sin(a)) - 2.0 *
		cos(4.0 * a) +
		pow(sin((2.0 * a - PI) / 24.0), 5.0)
	)
	var x = sin(a) * r
	var y = cos(a) * r
	return Vector3(y, 0.0, 5.0 -x)

func _ready():
	var lines = Lines.new()

	lines.grid(Basis(Vector3.LEFT, PI*0.5), 10, Color.REBECCA_PURPLE)

	lines.start(Vector3(0, 0, 0))
	lines.set_color(Color.CHARTREUSE)
	lines.set_thickness(0.0)
	for i in range(360 * 20):
		var a = deg_to_rad(i + 1)
		var h = float(i) / 360.0
		var s = sin(h / 10)
		var x = cos(a)
		var y = sin(a)
		lines.line_to(Vector3(x * s, h / 4.0, y * s))
	lines.set_color(Color.DARK_TURQUOISE)
	lines.set_thickness(4.0)

	lines.start(_butterfly(0.0))
	lines.set_color(Color.RED)
	for i in range(360 * 12 * 5):
		var a = deg_to_rad((i + 1) / 5.0)
		var pos = _butterfly(a)
		lines.line_to(pos)
	lines.set_color(Color.BLUE)

	mesh = lines.build_mesh()

extends MeshInstance3D # https://en.wikipedia.org/wiki/Butterfly_curve_(transcendental) func _butterfly(a: float) -> Vector3: var r = ( exp(sin(a)) - 2.0 * cos(4.0 * a) + pow(sin((2.0 * a - PI) / 24.0), 5.0) ) var x = sin(a) * r var y = cos(a) * r return Vector3(y, 0.0, 5.0 -x) func _ready(): var lines = Lines.new() lines.grid(Basis(Vector3.LEFT, PI*0.5), 10, Color.REBECCA_PURPLE) lines.start(Vector3(0, 0, 0)) lines.set_color(Color.CHARTREUSE) lines.set_thickness(0.0) for i in range(360 * 20): var a = deg_to_rad(i + 1) var h = float(i) / 360.0 var s = sin(h / 10) var x = cos(a) var y = sin(a) lines.line_to(Vector3(x * s, h / 4.0, y * s)) lines.set_color(Color.DARK_TURQUOISE) lines.set_thickness(4.0) lines.start(_butterfly(0.0)) lines.set_color(Color.RED) for i in range(360 * 12 * 5): var a = deg_to_rad((i + 1) / 5.0) var pos = _butterfly(a) lines.line_to(pos) lines.set_color(Color.BLUE) mesh = lines.build_mesh()

antialiased 3d line rendering in godot, with a convenient API

I might eventually release this as an open source addon

10.06.2025 04:55 👍 3 🔁 0 💬 2 📌 0
search UI showing nearby stars sorted by distance, lots of "Gaia DR3 1234" and "HD 1234"

search UI showing nearby stars sorted by distance, lots of "Gaia DR3 1234" and "HD 1234"

a view showing earth orbiting the sun, with a line showing the orbital path

a nicely organized info panel on the left showing the objects in the sol system, and the properties of earth

a view showing earth orbiting the sun, with a line showing the orbital path a nicely organized info panel on the left showing the objects in the sol system, and the properties of earth

I worked on my project this weekend, I've mostly been refactoring stuff, but I did add some nicer UIs

09.06.2025 05:49 👍 1 🔁 0 💬 0 📌 0
screenshot from my project, showing a view in deep space of many stars

however, many of the stars are bunching up along lines and planes where they would have exceeded the size of a huge box dozens of parsecs across

the box edges are super bright because there are a lot of stars bunched up there

there's also a bunch of random debug text on screen

screenshot from my project, showing a view in deep space of many stars however, many of the stars are bunching up along lines and planes where they would have exceeded the size of a huge box dozens of parsecs across the box edges are super bright because there are a lot of stars bunched up there there's also a bunch of random debug text on screen

similar to before, but showing the stars bunching up along the surface of a huge sphere

similar to before, but showing the stars bunching up along the surface of a huge sphere

I accidentally made the distance between stars just a little bit too large and everything clamped to the maximum size of a 64bit integer

the box edges look cool

I tried clamping the position to a sphere to see what that would look like too

01.06.2025 22:14 👍 3 🔁 1 💬 0 📌 0

i turned it into a drawing

in the year 58,515 an interstellar ship tears through space at 99.9999% lightspeed, travelling to some far away place. the extremely blueshifted light is enough to heat its exotic hull to the point of incandescence

13.02.2024 01:31 👍 100 🔁 28 💬 2 📌 0
Video thumbnail

Firefly Aerospace just released their Blue Ghost Moon landing video, this view is rather special...

Source: www.youtube.com/watch?v=NpHh...

#BGM1

04.03.2025 18:02 👍 580 🔁 183 💬 15 📌 22
a data schema for the tables: barycenters, orbits, celestials, stars, and systems. most of them are keyed on a `celestial_id` as the primary key, except for the orbits table, which is keyed on a `child_id` and `parent_id` (which are both celestial_id's)

this is just a markdown doc but it's too big to paste as alt text

a data schema for the tables: barycenters, orbits, celestials, stars, and systems. most of them are keyed on a `celestial_id` as the primary key, except for the orbits table, which is keyed on a `child_id` and `parent_id` (which are both celestial_id's) this is just a markdown doc but it's too big to paste as alt text

a test scene showing a bunch of lines connecting stars in the hyades cluster together, one of them is selected, showing this info:

star #059232
name        : Theta Tauri Ab
gaia edr3   : 3312744219988782720
position    : -42.57 -0.26 -17.21
distance    : 2.53 pc
temperature : 6773 K
abs mag     : 0.07
luminosity  : 73.790423
is hyades   : yes
white dwarf : no

a test scene showing a bunch of lines connecting stars in the hyades cluster together, one of them is selected, showing this info: star #059232 name : Theta Tauri Ab gaia edr3 : 3312744219988782720 position : -42.57 -0.26 -17.21 distance : 2.53 pc temperature : 6773 K abs mag : 0.07 luminosity : 73.790423 is hyades : yes white dwarf : no

doing a big refactor of my project so that I can actually start working on game systems (a lot of the current code is a mess)

I'm using data oriented design (for perf + for fun), which means lots of schemas

I just got done with orbits & stars:

24.02.2025 04:39 👍 2 🔁 0 💬 1 📌 0

PSA:

1. If you are not silly, it is vital you become silly

2. If you are silly, you must stay silly

2. If you used to be silly but have stopped, you must make all efforts to return to silliness

29.01.2025 02:52 👍 12203 🔁 5423 💬 130 📌 201
Post image

Hey NPR artist! 👋

At @blender.org , we are working in collaboration with @dillongoostudios.bsky.social to heavily improve NPR workflows in #b3d.

🧵Thread🧵 👇

26.01.2025 16:55 👍 121 🔁 22 💬 1 📌 5
the same tree but it's more hd now

the same tree but it's more hd now

updated version

13.01.2025 00:53 👍 3 🔁 0 💬 0 📌 0
procedurally generated tree that doesn't really correspond to any real life tree species, just the generic idea of "Tree"

some of my older lollipop trees are visible in the background

procedurally generated tree that doesn't really correspond to any real life tree species, just the generic idea of "Tree" some of my older lollipop trees are visible in the background

I've spent so many hours trying to understand how trees work

I tried different tree creator programs, none worked the way I needed, so I started writing my own that works at runtime (currently <3ms to generate this tree)

I also painted the leaf bunch and bark texture

12.01.2025 07:08 👍 5 🔁 1 💬 1 📌 0
Post image

today i learned x264 has a setting specifically for encoding touhou games

01.01.2025 05:33 👍 1180 🔁 511 💬 7 📌 15
screenshot of my game showing a view from a hill with the ocean and a mountain visible in the distance

screenshot of my game showing a view from a hill with the ocean and a mountain visible in the distance

high in the air showing a landmass with many trees on it

high in the air showing a landmass with many trees on it

continents, tree lod, and a bunch of other changes

30.12.2024 06:28 👍 3 🔁 0 💬 0 📌 0