Tumgik
#tetra3d
solarlunedev · 6 months
Text
So, I'm making a PS1-style first-person adventure game. You walk around and talk to people. If they ask a yes or no question, you have to manually shake your head to answer.
Tumblr media
Right-clicking brings your hand up and allows you to interact with objects in the game world.
Tumblr media
My idea for it is that it takes place in the far future, in a somewhat dystopian, neglectfully-managed world that still has some humanity left. Like, you might have high technology like full-body VR or semi-sentient robots and stuff, but people still hope for a better tomorrow and make efforts to live happy lives. They would still have fun, go to the movies, talk about current events, go to school, and interact with their community.
In the game, you play a guy going to pick his daughter up from school, and that's it. That's the point of the game - it's not about standing up to the capitalist machine, or becoming an assassin for hire, or something like that, but rather just about living your life, pretty much like everybody else. Through this trip, you get to examine the lives of people who live in this city, and who they are.
20 notes · View notes
radioofsector21 · 1 year
Text
Tumblr media
Ho postato 12 volte nel 2022
4 post creati (33%)
8 post rebloggati (67%)
Blog che ho rebloggato di più:
@prettycolors
@gedddylee
@shzrebelka
@alienshifter
@1st-1
Ho taggato 2 dei miei post nel 2022
#spotify - 1 post
#youtube - 1 post
Tag più lungo: 7 caratteri
#spotify
I miei post migliori nel 2022:
#4
Guarda "Tetra3D Dev Stream 11/28/22" su YouTube
youtube
Live / streaming of / live / magic
Being alive / a life / the goal of a life
Some codes / creative solutions as needle and thread
Experiences / interactive experiences
That's a fascination of a radio: /
A radio who can be listened /
Immersive / interactive
0 note - Postate 29 novembre 2022
#3
What if / the radio / was alive / beyond it's program / beyond the consciousness of the other vibrations / maybe the radio was able to tell something without forwarding others vibrations
0 note - Postate 28 novembre 2022
#2
the radio / started turning its engines / back on
0 note - Postate 28 novembre 2022
Il mio post numero 1 del 2022
Through the clouds / some vibrations / are filtered / again
Tumblr media
0 note - Postate 28 novembre 2022
Guarda ora l'Analisi del tuo anno 2022 di Tumblr →
The radio / was being observed / by some entity / who was able to declare / what happened during this crazy year / of resurrection
9 notes · View notes
solarlunedev · 10 months
Text
Tumblr media Tumblr media
Hello~ I'm working on a game with Ebitengine, a 2D game framework and working on a 3D renderer written largely from scratch, Tetra3D. I just recently added the ability to alter the depth of triangles as they render, which allows me to fix billboarded sprites so they don't cut into the world around them. Neat!
3 notes · View notes
solarlunedev · 1 year
Text
youtube
So I'm making a terminal app that allows me to interact with games I'm making using my own 3D renderer, haha!
It's called TetraTerm, named after the renderer, Tetra3D, and is open-source and available here. Feel free to check it out!
0 notes
solarlunedev · 1 year
Text
Tumblr media
Thinking about a new logo for Tetra3D, my 3D renderer that I've been working on for awhile.
Previous logo:
Tumblr media
13 notes · View notes
solarlunedev · 1 year
Text
Why the Heck I Made My Own 3D Renderer and How I Didn't Explode in The Process (Pt. 1)
Hello, I'm SolarLune, and welcome to Why the Heck I Made My Own 3D Renderer and How I Didn't Explode in The Process (Pt. 1).
So, I'm the creator of Tetra3D, which is an open-source 3D software-hardware hybrid renderer written from scratch in Go. I'd like to talk about why I made this thing in the first place, and what I learned while doing it.
Tumblr media
Here is the Tetra3D logo rendered in Tetra3D, in all its PSX-styled glory
Firstly, what is a 3D renderer?
Tumblr media
A spooky, run-down bedroom, rendered through Tetra3D
A 3D renderer is a piece of software that transforms data (like 3D points in space) into something you can see.
OpenGL, Metal, Vulkan, and Direct3D are all examples of true, hardware-accelerated 3D rendering APIs / frameworks. By doing a lot of math, a 3D renderer turns a 3D position in space into a 2D position on your computer screen, and usually ends up drawing triangles on these points to construct something recognizable (like a cube or a chair or something). Cool!
There are, generally (to my basic knowledge), two broad classifications of 3D renderers:
Hardware Renderers. A hardware renderer uses the GPU (or graphics processor) to render triangles onscreen. It also uses the GPU to perform the necessary mathematical calculations to do that rendering and transform the triangles with some measure of perspective (or not, as desired).
Software Renderers. A software renderer uses the CPU for transforming 3D data and even uses the CPU for rendering objects. Since 3D objects are usually easily visualized by rendering them with triangles, software renderers implement their own solutions for drawing triangles onscreen. Software renderers are usually slow, but still can be fun to play around with; they can also be useful for rendering system fallbacks for / debugging hardware renderers, or possibly to render something simple for basic information before using that information to render something complex on the GPU.
OK, so now, what is Tetra3D?
Tetra3D is a bit of a hybrid 3D renderer, because it performs the math to transform data on the CPU (like a software renderer), but still uses the GPU to actually render the triangles (like a hardware renderer).
So, this means that it has some downsides from both categories, really - firstly, it is slower than rendering things with hardware acceleration like a hardware renderer (though faster than a software renderer). Secondly, it still requires a non-negligible GPU / graphics chip of some description, despite doing a large amount of work on the CPU (like a pure software renderer).
(As an aside, depth testing, where part of a triangle is discarded when it draws behind closer triangles, is something that hardware renderers usually handle for us. However, because Tetra3D is a hybrid renderer, it doesn't have access to a traditional depth buffer (as all triangles in Tetra3D are just 2D triangles rendered to imitate depth), so I had to make my own depth buffer system (!). How depth testing is handled in Tetra3D will have to be another post for another day!)
So why make Tetra3D in the first place?
Well, firstly, I like Go; I think it's a great programming language. Go is very comfortable, opinionated, and easy to use - generally, there's one "right" way to do things. This makes it easier to focus on actually doing what you need to do and having code be uniform and easy to understand, rather than spending time wondering if you're using the language properly.
Secondly, I really like that chunky, janky, PS1 CD-3D style, mmmmmm
Like, if you look at the following PS1 games from 20 years ago, they still look fantastic, even by today's standards.
Tumblr media
Vagrant Story, SquareSoft (2000)
Tumblr media
Threads of Fate, SquareSoft (2000)
Tumblr media
Megaman Legends 2, Capcom (2000)
I'd love to be able to create something on this level of polish, and I don't think indie game devs necessarily need a complex 3D engine to do it.
The reasons why these screenshots look so good (despite their low poly-count and low-res textures) is because their lighting, art direction, and style is on point, even with the heavy technical restrictions. It's not really about how many polygons you use, but rather, how well you use them.
Also, the restrictions worked in harmony with the resolution of the time - as monitors went up in resolution, games have had to have higher and higher resolution textures and polygon counts to match the same overall level of fidelity. The developers of bygone times knew their limitations, and worked very well within them to execute the style they wanted, and exercised control very well over that style (because there was less to control). That's why excellently executed retro and low-poly graphics hold up, even today.
I decided to make a 3D renderer to try to capture some of that same "control over a small amount of core features" energy that can help to direct the flow of game development. Originally, I wanted to make a 3D renderer to just render small objects or very simple scenes for primarily 2D games, but over time, I've gotten greedier and want to squeeze out "just a little more" - optimization and improvement are, in themselves, addictive when you don't know if what you're doing will even work.
Was it hard to make this?
Yeah, I guess! There have been times where I've been really stumped as to how to solve a problem or add a feature, but it's always been interesting and fun to work on. Years ago, I had no idea how somebody could make a 3D game using pure code; now I know exactly how, haha! I think everybody should work on something like this - something that they deem impossible, just to see that it's not that hard, it just takes time.
___
So!
To sum up, I like Go, I like Playstation / DS-level graphics, and so I made this stupid 3D renderer for gamedev.
As mentioned previously, it's a hybrid renderer, so there are definite downsides to how it works - however, there are advantages as well. Because it's built on Ebitengine, a 2D game development framework for Go, it's cross-platform by design. Anywhere Ebitengine works, Tetra3D should also work.
It's also very good to have the ability to spontaneously do 3D when applicable, rather than strictly needing to begin game development in a "3D-first" game engine just to have the ability to, say, render a 3D object in a primarily 2D game.
Tumblr media
Metal Sonic battle captured from the Sonic Mania longplay here on YouTube
In the above GIF, you can see that while Sonic Mania (which is fantastic, by the way!) is a 2D game, there are 3D elements in there, in the form of the Eggman robot spinning in the background. Mixing 3D in with 2D can look great, and so Tetra3D was also made for this kind of application in 2D as well.
Anyway, that about sums up the reasoning for developing this cool-but-weird piece of technology.
Next time, I'll get into the "How I Didn't Explode Part" and talk about how I made it despite not really knowing much about 3D math, or maybe talk about some renderer internals, I guess?
If anybody has any questions, please feel free to ask me - I'll see about answering when I can.
Regards! - SolarLune
17 notes · View notes
solarlunedev · 1 year
Text
Yo, what's up! I'll be streaming gamedev and work on my handmade 3D renderer today, 2/6/23, at 5PM PST. Come check it out!
2 notes · View notes
solarlunedev · 1 year
Text
Hello!
I’m SolarLune, an indie gamedev and musician and stuff; I’ve never had a tumblr before, but with everything going on with Twitter, I thought it’d be cool to branch out to other social media.
I’m best known (I think) for being the creator of Tetra3D, a 3D renderer written in Go, and being the creator of MasterPlan, a planning tool for indie devs. I’ve also created various other open-sourced gamedev resources and stuff over on my GitHub. I’ll be chroncling my development here, methinks.
Nice to meet you all!
SoundCloud
Twitter
YouTube
Discord Server
Patreon
Tumblr media
2 notes · View notes