Live data from Hacker News

Before the iPhone, I worked on a few games for what were called "feature phones"

twitter.com

111–120 of 407 posts

Re: Before the iPhone, I worked on a few games for what were called "feature phones"

#111
post #3

Must be fun being related to John Carmack.

Just a fun question. If you had a choice; would you rather be John Carmack or Tony Hawk?

Amount of injuries Tony Hawk had to take to become this good is horrifying. That is enough for me make me choose John.

Re: Before the iPhone, I worked on a few games for what were called "feature phones"

#112

I worked at a startup, Javaground [1], where we ported and developed games for J2ME phones. We had a room full of dressers full of all the different mobile phones of the day. Each phone had different implementation quirks, such as variable audio delay when playing a file, audio/image formats that were faster/slower, odd button events (some used press, some used ondown, some had no ondown, etc). A lot of our work was…

I worked with a few people from JG. I also worked on a bunch of J2me games. It was an interesting time to be in mobile.

Re: Before the iPhone, I worked on a few games for what were called "feature phones"

#113

The chain all in one place, such that it's readable: > Before the iPhone existed, I worked on a few games for what were called "feature phones": Doom RPG 1&2, Orcs&Elves 1&2, and Wolfenstein RPG. Qualcomm's native-code BREW platform had better versions, but I haven't seen any emulators and archives for it, so they may be lost at this point. The J2ME (java mobile) versions are still floating around, and can be emulate…

Thank you. Twitter's user experience is the worst.

Is it really Twitter or the habit to write everything there, even lengthy posts?

Re: Before the iPhone, I worked on a few games for what were called "feature phones"

#114
post #87

GC every frame? Jesus. Gamedevs jump though hoops to avoid it.

Your other choices are: - Never GC via using object pools. This code is nastier than C++ because Java is not intended to be used this way. - GC whenever needed randomly. The game will just pause occasionally. Very annoying as a player. - Write the actual game in C++. Make a few JNI calls here and there. On feature phones I only remember this being possible for some vendor apps.

If these phones were still around, I'd imagine there'd be another option now:

- Write your game in C++ and transpile it to Java using some fancy framework that dances around never using GC.

Re: Before the iPhone, I worked on a few games for what were called "feature phones"

#115
post #23

Earlier quoted context omitted.

In case you want a simple explanation for this story: he tried to run an old pre-iPhone mobile game on a computer. The game runs very slow on computers, which is surprising considering the performance difference between these old phones and a modern computer. The reason turned out to be that the game runs a memory cleaning command to avoid bugs arising from lack of space. Since modern computers have 10000x more memor…

It seems kind of crazy to me that people were using a GC language on a device with 128kB of memory. John even mentions how he was forced to run the GC on every frame to avoid problems. I would think when you are that constrained you would be closely tracking your memory usage. It's probably a miracle that those games weren't constantly hitching and crashing due to slamming up against the memory limits.

Best practice was to pre-allocate everything, or at least not allocate insane amounts of objects per-frame if at all possible such that System.gc() would become a no-op up to tracing and maybe defragmentation anyway.

Re: Before the iPhone, I worked on a few games for what were called "feature phones"

#116
post #49

Earlier quoted context omitted.

The Twitter web UI if you are not logged in is purposefully broken. Every so often, it will just show you "access denied" or "you don't have permission". It is the peak of dark patterns.

It seems to require randomly from 1 to 5 page refreshes to display anything (and don't be fooled by helpful retry button, it won't work, you need to use browser refresh). I thought it was just broken, but you say it works when logged in? WTF.

Try copy/paste of the URL into a brand new browser tab. Works for me, every time. Which means it's probably something to do with the Referer header being set? Anti-flooding/hotlinking maybe?

Re: Before the iPhone, I worked on a few games for what were called "feature phones"

#117
post #49
post #29

Earlier quoted context omitted.

I'm curious how the UI looks to other people, because "all in once place" isn't really a complaint I can understand about the Twitter UI I'm seeing. There's buttons and stuff between tweets, but with 280 characters per tweet (140 was definitely less readable) they're not significantly more difficult to read on Twitter than they are in the paragraphs you posted.

The Twitter web UI if you are not logged in is purposefully broken. Every so often, it will just show you "access denied" or "you don't have permission". It is the peak of dark patterns.

This happens regardless of whether you are logged in or not. IIRC it's some weird implementation bug with how they use webworkers. There was an HN thread on it a couple of months ago that prescribed some fixes. It varies by browser, browser version and some other things like what chrome may be a/b testing for you. The fixes are temporary, though.

Dunno why Twitter seems to have completely deprioritized the issue though. They change the error message every once in a while but nothing else.

Re: Before the iPhone, I worked on a few games for what were called "feature phones"

#118

Earlier quoted context omitted.

It surprises me the number of people who thought they could make money selling emulators, in what is and has always been almost exclusively dedicated to piracy.

I will admit to paying for Bleem! in the long long ago. I still have the CD. Frankly, it was pretty damned amazing.

Did burned game CDs work with Bleem? I assumed it made some check for an official disc.

Re: Before the iPhone, I worked on a few games for what were called "feature phones"

#119
post #14

Imagine having John Carmack randomly contribute a patch to your project, pretty awesome stuff.

I'd take a screenshot and hang it up on my wall like a trophy.

Worth introducing a bug that would annoy him enough. /s

Re: Before the iPhone, I worked on a few games for what were called "feature phones"

#120
post #48

Earlier quoted context omitted.

Well, malloc and free are black boxes as well. And in typical implementations can potentially take arbitrary amounts of time to run, too. (Though they usually don't.)

It depends on your allocator - ptmalloc, the default linux allocator - is open source, and there's plenty of very robust open allocators (jemalloc, mimalloc, tcmalloc, etc). Understanding how your allocator works can be very important in certain contexts. On windows I'd expect the default allocator to be a black box, but I might be wrong. For garbage collection I strongly recommend this book (on top of the source cod…

> On windows I'd expect the default allocator to be a black box, but I might be wrong.

The UCRT is at least "source available" on Windows, up to a point, and distributed with the Windows SDK. The release heap codepath is a bit boring:

    malloc:       C:\Program Files (x86)\Windows Kits\10\Source\10.0.19041.0\ucrt\heap\malloc.cpp
    _malloc_base: C:\Program Files (x86)\Windows Kits\10\Source\10.0.19041.0\ucrt\heap\malloc_base.cpp
    HeapAlloc:    (kernel32.dll alias for ntdll.dll!RtlAllocateHeap() on my machine)
The debug codepath is a bit more interesting:

    malloc:                  C:\Program Files (x86)\Windows Kits\10\Source\10.0.19041.0\ucrt\heap\malloc.cpp
    _malloc_dbg:             C:\Program Files (x86)\Windows Kits\10\Source\10.0.19041.0\ucrt\heap\debug_heap.cpp
    heap_alloc_dbg:          C:\Program Files (x86)\Windows Kits\10\Source\10.0.19041.0\ucrt\heap\debug_heap.cpp
    heap_alloc_dbg_internal: C:\Program Files (x86)\Windows Kits\10\Source\10.0.19041.0\ucrt\heap\debug_heap.cpp
    HeapAlloc
HeapAlloc itself is a bit more of a black box (AFAIK), and contains a lot of the fun details about the actual process of heap allocation - although there's a bunch of hooks, debug functions, documentation, articles, alternative implementations (ReactOS), etc.
Post reply on HN