Live data from Hacker News

Black Triangles (2014)

rampantgames.com

21–30 of 79 posts

Re: Black Triangles (2014)

#21

[flagged]

[flagged]

Nobody owns it, obviously. It can be helpful however to be aware of the associations your terminology already has.

From a practical perspective, it interferes with getting your point across to overload a symbol that already has strong associations. From a social perspective, it's considerate not to use symbols that have strong negative associations for others (which is not a view shared by the "fuck your feelings" crowd, although I've noticed that they're not all that consistent in that view, and it tends to depend on whose feelings are getting fucked.)

Re: Black Triangles (2014)

#24
Spent the last 4 days trying to get the raylib example game to run on my Android. Yesterday I changed course and got rawdrawandroid running instead. That was my black triangle (actually it was green heh), proof that my goal was actually possible. If rawdraw can build and run, so can raylib! I got raylib working shortly afterwards.

It's funny I always thought C gamedev would be hard, I just didn't think the hard part would be the "hello world"... I'm looking forward to actually building the game now!

(My experience is more like "the triangle that should take a day", but I still thought it was relevant as a kind of major milestone that puts you in a qualitatively new reality where now you have an actual working thing you can fiddle with.)

Re: Black Triangles (2014)

#25
post #6

It helps to know that under the hood almost every serious game is a complete more-or-less real time operating system with its own IO, scheduler, memory management and various sub-processes relating to output generation and so on. It was only after I wrote a couple of games that I realized that extracting this OS component would be worth the effort and after that making new games went substantially quicker.

I don't consider it an OS if it needs an OS to run. Something like a "Ship can carry a boat, boat can't carry a ship" rule.

Have you written a serious game engine? Parent is right, a bunch of them basically are a real-time OS sitting on a small amount of the underlying OS (if one exists). When you have to write your own malloc() and fopen(), and your own thread scheduling, that counts as Operating System. This is becoming less true today, as the hardware gets better and bigger and faster and resources are less constrained, but it wasn’t that long ago that many console games literally were the OS.

Your analogy and definition is one reasonable viewpoint, that the OS is the thing that bootstraps software on top of hardware and provides access to resources like memory, filesystem, network, and display, but it’s also an incomplete definition. An OS provides a standardized environment for whatever processes run inside it. In that sense it doesn’t matter whether or not it’s contained in a different OS. Ubuntu doesn’t suddenly become not an OS when you run it in a VM, it still provides the Linux OS to the processes that run inside the VM. Windows doesn’t become not an OS if it boots on a hypervisor. Similarly, even if an OS requires another OS to run, when it provides a different environment or container, it’s still serving the purpose of providing a specific Operating System to the software it runs.

Some consoles used to not provide an OS at all, the game provided all of it. The developer was responsible for handling things that would (and should) otherwise be the purview of the OS or drivers, power loss, out of memory, cables yanked, etc., otherwise they would not be allowed to publish. Nintendo did this longer than the others, in my recollection of events.

Re: Black Triangles (2014)

#26
post #5

My black triangle was making Suzane (blender monkey) appear on the screen.

OpenGL? I did the monkey too! But I did a simple software rasterizer... (No OpenGL, draw bitmap directly.)

I only got as far as point cloud (the wireframe without the wires, heh). Want to continue the project and add lighting and texturing eventually.

My "big insight" (shower thought) that gave me the confidence to do 3D is that you don't need linear algebra. You can do it all with trig! A 3D rotation is just three 2D rotations!

It won't be very performant, obviously, but I'll take "my toy renderer runs slowly" over "it doesn't exist because I am struggling with linear algebra for the 7th time".

It's a lot more fun doing things the easy way! Even perspective is one line of code.

Re: Black Triangles (2014)

#27
post #26
post #5

My black triangle was making Suzane (blender monkey) appear on the screen.

OpenGL? I did the monkey too! But I did a simple software rasterizer... (No OpenGL, draw bitmap directly.) I only got as far as point cloud (the wireframe without the wires, heh). Want to continue the project and add lighting and texturing eventually. My "big insight" (shower thought) that gave me the confidence to do 3D is that you don't need linear algebra. You can do it all with trig! A 3D rotation is just three 2…

>It won't be very performant, obviously, but I'll take "my toy renderer runs slowly" over "it doesn't exist because I am struggling with linear algebra for the 7th time".

Haha I could not agree more

Re: Black Triangles (2014)

#29
post #7

I appreciate the concept, I had my own black triangle recently when I finished writing my own implementation of an adaptive radix tree that is highly concurrent and keeps hot paths in an LRU and loads everything else from disk. Now when I circle back to my full text search extension for Postgres I can do so knowing I can replace my naive inverted index with something that gives like a 10% performance gain but more im…

I like such projects. They're the programming equivalent of making jewelry. Is your code public?

Thanks for your interest! It was definitely rewarding though I’m sure I can optimize a few things still.

The code is public: https://github.com/iantbutler01/dart

Post reply on HN