HN user

YesBox

1,123 karma

chase@yesboxstudios.com

I'm creating Metropolis 1998, a 2D city builder/simulation video game.

https://store.steampowered.com/app/2287430/Metropolis_1998/

Posts18
Comments231
View on HN
old.reddit.com 1mo ago

Teachers of Reddit: Is the "Gen Alpha can't read" crisis real?

YesBox
19pts2
zengm.com 1mo ago

Being an old school web-based sports sim dev in the era of vibe coded games

YesBox
67pts57
www.generationamiga.com 2mo ago

Metropolis 1998 Brings Classic SimCity-style City Building back to life

YesBox
4pts0
old.reddit.com 6mo ago

Vibe coding lead to my project's downfall (in 4 months)

YesBox
5pts2
www.youtube.com 7mo ago

64KB Demoscene – The Timeless (2014) [video]

YesBox
1pts1
arstechnica.com 9mo ago

Metropolis 1998 lets you design every building in an isometric, pixel-art city (2024)

YesBox
102pts42
news.ycombinator.com 1y ago

Ask HN: Will marketing be the future king?

YesBox
2pts3
en.wikipedia.org 1y ago

Kite Aerial Photography

YesBox
10pts3
www.gamedev.net 1y ago

OOP Is Dead, Long Live OOP (2018)

YesBox
1pts0
arstechnica.com 1y ago

Metropolis 1998 lets you design every building in an isometric, pixel-art city

YesBox
8pts0
news.ycombinator.com 2y ago

Fastmail Is Down

YesBox
20pts7
news.ycombinator.com 2y ago

Ask HN: Any indie game developers here?

YesBox
17pts15
news.ycombinator.com 3y ago

Ask HN: Any solo game developers here?

YesBox
264pts146
news.ycombinator.com 3y ago

Ask HN: Any solo game developers here?

YesBox
173pts96
news.ycombinator.com 4y ago

Show HN: Pathfind 1M agents to unique destinations in my video game

YesBox
3pts0
news.ycombinator.com 4y ago

Show HN: New Pathfinding Algorithm

YesBox
2pts0
news.ycombinator.com 4y ago

Ask HN: Who's working on their video game?

YesBox
9pts6
www.youtube.com 4y ago

Show HN: Solving path finding in the city builder game Archapolis – 200K Units

YesBox
1pts0
OpenAI Presence 6 hours ago

Hmm. Am I right to be concerned? One of the benefits of hiring people to do work is that it eliminates single points of failure. The last few decades have had technology automate a lot of rote processes. People have discussed crystal vs fluid dynamics and the balancing act/trade offs. Too much rigidity (automation) == slower to adapt in a dynamic environment.

I guess my question is, what is a safe AI "process percentile" for a company that lets it recover if the AI goes down or goes haywire? No one knows (?), but it's worth thinking about.

I am also curious just how much direction the AI will need given the environment is dynamic. Humans generally align to the company's goals because they are rewarded (paid) to, and need to to survive. Relationships are built on unspoken and spoken communication. Unspoken could be cultural, hierarchical, environmental pressures, etc. As an extension of that, companies build relationships with other companies by sending (essentially) diplomats and ambassadors to each other (the article mentioned using AI for sales). -- All this to say: if you have to constantly explain the job to someone, they are not fit for the job.

We'll see, I guess.

what is the competitive advantage in maintaining your own engine?

It's still a product-distinguishing decision you can make at the indie scale. What I mean is, you can create an engine that allows you to get the performance + aesthetic that otherwise would not be possible. i.e. Specialize in a profitable niche.

And if hardware costs keep ballooning, performance will become more important.

IIRC, when the company was formed, everyone got an equal split. They may have issued more shares when some other key people joined. But, when someone quit or was fired, they had to forfeit all shares (got paid out based on the companies revenue over the last year).

Eventually a bunch of people left and I think only two founders remained (Carmack and Carmack).

Since the stakes were reabsorbed, it makes sense why he ended up with 41%.

I've found a few cycles of <<repeated box breathing + a long breath hold>> works quite well.

Box breathing is 4 seconds inhale, 4 seconds hold, 4 seconds exhale, 4 seconds hold. IIRC you are supposed to take in as much air as you can on the inhale, and let it all out on the exhale.

After you do a few cycles of BB, take in as much air as you can, then hold your breath for as long as you can.

You'll feel the results immediately

Pre-2022 Books 1 month ago

You are not alone. I like to read Harry Potter fan fiction [1] and I have started checking the publication date when Im searching for something new to read. I started doing this passively and realized it after the fact.

Have you ever met someone who could say all and do the right things but never made you feel anything, or your gut was sensing an ulterior motive? It's a magic trick we are all bewitched by at some point in our lives. I suppose I filter by published year because I dont want think about if I am being tricked or not.

[1] There are some very talented writers[A] out there who (I assume) cannot do the world building part.

[A] Recent Favorite: https://archiveofourown.org/works/1134255/chapters/2292768

My bet is working through an abstraction layer (LLMs) will make crafting a fun game more difficult. The art of designing a (great) game is in the details. English is not sufficient to communicate the individual strokes of a brush on canvas.

Also, thank you for sharing your experience. I recently joined that subreddit just to see what people are creating and I too have been unimpressed.

It reminds me of the campaign in the 90s against video game manufacturers for "corrupting the youth".

The government did intervene though. They threatened to regulate the industry if the industry didn't regulate itself. So some/all the big industry players got together and created their own independent age rating agency that they all agreed to use.

Whoever was suing won in the outcomes department.

Discord subscriptions seem to be working. People like to customize their profile (ie express themselves), even though profiles are not something frequently interacted with (that's the surprising part!)

I have a server (for my game) with about 1000 people. Out of the 300 people logged in, 50 of them have custom profiles.

So, it seems like a good idea for Meta.

Just sharing another story:

A molecular biochemist PhD I know was forced to redo her advisor's experiment over and over again because it wasn't getting the results he wanted. She knew she was beating a dead horse over the several years she was directed to work on the experiment, and had no other choice but to continue marching forward.

I was typing up a long and somewhat boring story.

So, the short of it is that this is a great insightful comment that I can back up with my own experience in making a game from scratch over the last 4+ years.

I've been developing a moderately popular (for an indie) game for over 4 years at this point (full time). C++, SFML, SQLite. Same as you: no coding assistants, no agents, etc. I also don't use git. [1]

One of the largest speedups is from how much of the codebase I can keep in my head. Because I started from an empty C++ file, the engine reflects how I reason and organize concepts (lossless compression). Thus most of the codebase is in my brains RAM.

I don't see how LLM agents are going to improve my productivity in the long run. The less a person understands their code (organized logic), the more abstracted the conversation is going to become when directing an agent. The higher up the abstraction ladder you go, the less distinct your product becomes.

[1] And very, very rarely have I wished I had it for a moment. Not using git simplifies abstracted parts of development. No branches, no ballooning of conceptual tangents, etc. Focus on one thing at a time. Daily backups and a log of what I worked on for the day suffices should I need to revisit/remember earlier changes. I've never been in a situation where I change I made over a week ago interfered with todays work.

Where can I boot up Coke Studios? Enjoyed that game as a kid, including making music (which was so friggen cool! They had tons of samples you could just drag and drop into a timeline).

Edit: fun memory. I figured out how scamming works at some point. IIRC (and I may not) I set up a minigame in my studio, and contestants had to give me their furniture to participate in a game. Since furniture could stack weirdly, people made all sorts of crazy mazes that were actually quite difficult to navigate due to the fixed isometric perspective.

Each stage required handing over a more expensive item than the last. At some point someone handed over a super rare/expensive piece of furniture.

Not gonna erase that. ACTUALLY I think I figured out how to clone items due to a bug. Or mine infinite DBs. Used that as cover to get someone to give me their item. Was a long time ago.

Anyways, a user handed me their super rare item and I then gave them a stern warning on how this is a common scam and I just stole their item(s). Then I handed everything back over to them and they profusely thanked me. lol

I wasn't sure what a solid state battery is, so I looked it up on Wikipedia.

Fun fact though:

Between 1831 and 1834, Michael Faraday discovered the solid electrolytes silver sulfide and lead(II) fluoride, which laid the foundation for solid-state ionics. Through his research, Michael Faraday took note of these solid compounds transitioning from insulators to conductors after being heated. While this would take almost another century to be acknowledged by Michael O'Keeffe in 1976, this mixed ionic/electronic conductions became the first record of a solid-state battery

(emphasis mine)

I dont know how it's implemented by the standard/compiler (not my domain). The performance differences are well documented though.

I've used both in my pathing code and tested each in debug/release.

Even if the std:: implementation was as fast as possible, you're still adding bit manipulation on top of accessing the element, so it will be slower no matter what you do.

A cache miss is going to mean anywhere from a 100 to 1000 cycle penalty. That blows out any sort of hit you take cutting your cycles from 3 to 1.

A good example of this is using std::vector<bool> vs. std::vector<uint8_t> in the debug build vs release build.

vector<bool> is much slower to access (it's a dynamic bitset). If you have a hot part of the code that frequently touches a vector<bool>, you'll see a multiple X slowdown in the debug build.

However, in the release build, there is no performance difference between the two (for me at least, I'm making a fairly complicated game). The cache misses bury it.

Wow! I'm shocked Limbo took 3 years and had a larger team. I've played a bit of the game (but didn't complete it). Looking at the Steam reviews and a quick search shows me it takes 3-10 hours to beat the game. :O

Thanks for reminding me how beautiful Rio ("Hio") is! I went to Brazil twice in the late 2000s. Brings back some fun memories:

- Most of the locals on the beach will start clapping when the sun begins to set. Ipanema is a beautiful beach/area.

- Brazilians are curious and happy to chat with foreigners. I particularly enjoyed how slowly everyone walked, not in a rush to get to anyplace.

- If you're staying in hostels, it's really easy to fall into the trap of hanging around other foreigners who pretty much all speak English fluently (which is fun, but isn't the main purpose of traveling IMO). I learned a little Portuguese before traveling which helped break out of that. I also couch surfed (stayed in strangers homes), which was fun.

- I found the cuisine to be light, though I was on a budget. Pretty sure I lost weight and had to eat more frequently. I miss Acia bowls.

- Dont drink unfiltered tap water, and make sure the bottled water seals aren't broken. I got sick a couple times regardless.

- Carnaval and soccer (football) matches are wild. Tons of energetic people.

- I was never mugged, but met a lot of people who were, or knew someone who was (locals and foreigners). Maybe things have changed. Traveling alone at night is not a good idea.

Applicants are using AI too. I've heard from people who hire/post jobs that they gets hundreds to low thousands of applications, and maybe 5% of them have any relevant experience. The problem is the breakdown of trust is costing all of us.

Thanks! The vertical axis is also broken down into a grid in a sense. Each "cell" is placed in a specific floor as far as the engine is concerned.

So like (C++):

   vector<uo_map<int, ObjStruct>>
Each vector element is a floor. You just need to move the sprite up in screen space to position it.

Though I wish I went with a vector<vector<vector<ObjStruct>>> approach now a days <chunk_id>, <floor>, <object>

Thanks :)

I'll be looking into porting during early access. I've heard the game runs on Linux with a compatibility layer though.

I do everything except the pixel art and buildings. It is a crazy amount of work!