16 ms·
Show HN: Angeldust – a fast and efficient video game
After years of solo development I'm presenting: Angeldust, an omni-compatible action RPG and building game!
Website: http://angeldu.st http://angeldu.st
My single server hosts 250+K active players in one giant, dynamic fantasy world. Angeldust's game server is pervasively multithreaded, implementing John Carmack's dream of processing an immutable world state each tick.
Both world handling and network traffic routing uses any number of threads. For networking, a typical game session only uses ~3Kbps of bandwidth, enabling decent play even over 2G/EDGE networks.
The client is programmed in C++ with bits of C, Objective-C, Java and PHP. It runs really well on very low-end and obsolete hardware, all the way up to modern systems with fast GPUs.
Angeldust works perfectly on Windows XP+, even without hardware OpenGL; Mac OS X 10.6+, even on the first 2006 32-bit Intel GMA945 MacBook1,1; Linux 64-bit glibc 2.17+; Android v2.2.3+, supporting Bluetooth game controllers; and iOS 6+, though iTunes App Store forces iOS 8+ (any way around this?).
I live stream weekly on YouTube and Twitch, even right now! Come ask me your development questions! I often see developers playing together with their kids.
YouTube channel: https://www.youtube.com/AngeldustLive https://www.youtube.com/AngeldustLive
One more thing: the Angeldust website ( https://angeldu.st https://angeldu.st ) uses plain HTML and CSS to offer interactive, game-related actions. It's fully functional even without JavaScript enabled.
- JshWright 7y agoTried registering, but the password input in the Android app doesn't support pasting text...
- ItsFirefly 7y agoYes, I'm sorry that the UI support on Android is a bit limited. Input support is a bit lowest-common-denominator there to work around keyboard bugs.
- matthewcanty 7y agoI would also add that I get a little ticked off when I have to adjust my password manager's defaults - in this case reducing from 64 to 32 characters. In the past I have very-often stopped exploring a new thing at this point but this time I am continuing! Looks great and I also eagerly await more details of it's implementation.
- ItsFirefly 7y agoSure, sorry about the password blues. Let me know what you want to hear implementation-wise and I'll get on it after streaming!
- matthewcanty 7y ago"What should service providers do?": https://tomssl.com/2016/10/21/a-sensible-password-strategy/ https://tomssl.com/2016/10/21/a-sensible-password-strategy/ This is a pretty straightforward set of expectations which should solve most issues.
- mileycyrusXOXO 7y agoHow often do you run into trouble with 64 length? For one password manager, my default length was 16 and at the time I ran into a sites few sites that restricted it to 12 or 14. Is this less common these days?
- dmje 7y ago64 character password: overkill, much?
- vanous 7y agoThe inability to use even password manager's keyboard has forced me (and probably more people) to use much weaker passwords then usual. Also, the 32 chars limit... Thanks for the game.
- ItsFirefly 7y ago
- lokedhs 7y agoSame. I actually went through and typed my Lastpass-generated password. That was a painful exercise. Anther oddity is that the Android version is free while the Steam version costs money. Is there some other kind of monetisation strategies for that version?
- ItsFirefly 7y agoNope. On Google Play I'm limited to a 50 MiB APK size so I can only ship assets for the "Cartoon" visual style. As you don't get the full experience of having both the "Cartoon" and "3D" visual styles available I find that not charging for the product is good option. Also: my preconception was that Android users are more likely to pirate a product. So to prevent them from downloading a malware-laden pirate APK and getting a poor experience, I'd rather have them play the game for free without hassle and tarnishing my reputation.
- lokedhs 7y agoThat's an incredible attitude, and should be commended. I bought the game on Steam even though it's not really the type of game I usually play. I don't doubt I will get my money's worth.
- ItsFirefly 7y agoI hope you enjoy the experience! To be honest I think Angeldust is a video game tailored for non-gamers. Most people playing Angeldust that I know in real life are not gamers by any stretch of the imagination, but they just like the laid-back pacing, welcoming nature and upbeat atmosphere of the game. It's amazing to see random friends and acquaintances with zero interest in gaming have fun in my game.
- lokedhs 7y agoI've seen some games downloading assets after the application is started. Did you consider implementing it like that?
- 7y ago
- mysterydip 7y agoAssuming "works perfectly on XP even without hardware OpenGL" means you have a software renderer as backup, can you explain more about how you get performance out of one on modern OSes (where DOS techniques of direct framebuffer access don't apply)?
- monocasa 7y agoWindows XP IIRC shipped with a soft OpenGL that'd look like a hardware version. I imagine they's not doing anything special other than not having requirements that a soft renderer can't fulfill.
- ItsFirefly 7y agoRight on. Software OpenGL 1.1 works on XP (and other Windowses) and the render engine falls back to minimal features if it detects this.
- maxdata 7y agoI can't for the life of me believe that's the actual name of this game. Looking forward to the sequel, Black Tar Heroin!
- wang_li 7y agoIt’d be blacktarhero.in.
- nerdponx 7y ago"Black Tar Hero"
- marcus_holmes 7y agomethamphetami.ne
- suby 7y agoThis looks impressive. Can you go into how you implemented the immutable world state each tick a bit more? I'm developing a game myself, and figuring out a good method of multithreading it took a lot of work. While I am content with the results, I wouldn't say I arrived at a good solution. It sounds like you went with a purely functional approach? Did you rebuild the entire gamestate each tick, or keep a list of changes you needed to make to the relevant data?
- ItsFirefly 7y agoI'll reply more in depth after my livestream, but it's a very good question. You can hop on YouTube right now to discuss it if you want. There's a bit of banter going on, but I might be able to squeeze in some useful replies in between.
- sxp 7y agohttps://youtu.be/1PhArSujR_A?t=988 https://youtu.be/1PhArSujR_A?t=988 was Carmack's presentation on an immutable Haskell game engine. Unfortunately, he doesn't go into too much detail. https://news.ycombinator.com/item?id=15036591 https://news.ycombinator.com/item?id=15036591 was the previous HN thread about it.
- ItsFirefly 7y agoThis question was the most asked one during my livestream. It's a good one! Even though it's 01:33 right now after a 7 hour livestream, I'll try to answer it as clearly as possible, building from the foundation up to the high level. The Angeldust game world is tracked in an "active chunk set". A chunk is a 2D part of the world, 32x32x64 in-game blocks (meters). The active chunk set tracks only the chunks that contain, or are near, players. This chunk set is processed in parallel on any number of threads/cores configured in the server settings file. Angeldust tracks two states for the data contained in each chunk, kind of like an array of size 2. Each tick, one state in the array is the immutable "read"-state and the other is the mutable "write"-state. Every tick these states ping-pong between the roles. During processing the server processes the read state and copies over unchanged entity/world data by simply pushing pointers to that data into std::vector<>s in the write state. For things that did change I push a new pointer into the write state and clear up the old pointer in the next tick. Pushing pointers saves memory bandwidth since you don't have to copy all entity data for every tick. And still you can guarantee that the "read"-state will be unmodified so that other CPUs/cores/threads can freely access all of the data and pointers. On the livestream I discussed a few cases where I do use (largely uncontested) mutexes for data synchronization: for friend chat and private chat I do a lookup of destination hero pointers in the "hero map" and then lock/unlock the hero's mutex for pushing chat messages into a vector. Does this make sense? Let me know if I should elaborate. I will probably take a nap now, but I'll answer you (and others) tomorrow. I'll also do another livestream tomorrow, because I feel everyone on HN has very useful questions, feedback and ideas.
- smt88 7y ago> programmed in C++ with bits of C, Objective-C, Java and PHP I am very curious how and why this happened
- setr 7y agoSeems like the other languages were for the frontends. C++ core, Java for Android, objC for iOS, php for web
- ItsFirefly 7y agoOn the livestream I detailed this a bit. Angeldust has a single "domain model" containing all item, entity and object properties contained in a PHP code generator that generates C++ source code and header files for use in the client, server and asset tools. It also generates PHP files for use in the interactive and tied-to-the-game website. The website is also in PHP. The client uses Objective-C to integrate certain platform features into the C++ codebase on iOS and macOS. Java is used for some functionality not provided by the Android NDK.
- edoo 7y agoCulturally speaking getting kids into a game called "Angel Dust" which is street slang for PCP is not going to do society any favors.
- bananamerica 7y agoIt also won’t harm society at all. It might harm the game, but I doubt it.
- StavrosK 7y agoTell that to the slightly hard-of-hearing bookstore employee who, when I asked for Minecraft, gave me a copy of Mein Kampf.
- TminusDoom 7y agoI believe that the absence of the connection, would make an intelligent ignorance.
- lostgame 7y agoYou seriously may want to reconsider the name. ‘Angel Dust’ is a slang for the narcotic PCP - I immediately was confused and only clicked so I could tell what it actually was. Not sure how this didn’t come up before? At any point in development? O.o Edit: whoa, downvotes, really? Care to say why? This is a legitimate concern?
- purple-again 7y agoIt is and is shared by many other people not commenting. Creating a product targeted at children and then naming it the same as a dangerous addictive street narcotic is not a wise decision.
- oneeyedpigeon 7y agoNot sure why anyone's downvoting you, but I suspect the name is 100% on purpose - it would be quite the coincidence otherwise. I remember a game called Speedball in the 90s, which was very successful - this is nothing new!
- kossTKR 7y agoComparing the words angeldust and the very common word "speed" is not comparable at all. Also the game looks like it's targeted at smaller kids. It would be like creating a minecraft clone and calling it "meth-heads". Thats 100% not what he is doing and if it is, then it's pretty insane.
- swsieber 7y agoI haven't heard the term angeldust before, FWIW.
- oneeyedpigeon 7y agoNot "speed", "speedBALL". It's another example of narcotic slang - I think a combination of heroin and cocaine. Again, it's quite likely whoever picked the name was aware of the meaning.
- iTokio 7y agoWhat are the advantages of using your custom engine instead of unity, unreal engine?
- smnplk 7y agoperformance I guess.
- Narishma 7y agoLower system requirements is one that's pretty obvious.
- ItsFirefly 7y agoMy vision was to make an "all-inclusive" product where people with ancient hardware would be able to enjoy a modern-day product. All existing engines focus on modern specs like OpenGL 3.x, 64-bit processors and operating system versions that I am not even able to run on some of my own devices. In addition I have complex, dynamic geometry to render. And I wrote a custom, fixed-precision integer math library to prevent rounding errors for the almost infinite game world. Other products have weird rounding errors near the start, the middle or end of their worlds because of inconsistent floating-point accuracy. Moving to doubles only mitigates the problem instead of solving it. And then it's just efficiency too. I have no idea how or why Unity or Unreal will treat my assets. As demonstrated on the stream: the game instantly switches between visual styles and texture quality. It lazily loads all resources so the main thread is only stalled when doing bulk uploads to the GPU. This makes the game start up in less than a second, something I couldn't pull off with a COTS engine. Let me know if this answer didn't address your question fully.
- jammygit 7y agoHow long did the client side engine take to build, if you had been able to do it full time?
- ItsFirefly 7y agoIt's ridiculously hard to come up with an answer to this seemingly simple question. I've tracked my time usage pretty meticulously by version number, but for most features I had to develop the server-side, client-side, website and network simulator code simultaneously. Developing this (or any) game I think isn't a process where you build the server first, then build the simulator and then build the client. It's building v0.0 for all parts, then v0.1 for all parts and onwards where all parts gain features in lockstep. For Angeldust I've done dozens of updates, each and every single one building upon the existing base. Looking back it's amazing to see that the product evolved in an almost linear fashion from v0.0 all the way to the current version without ever having to drop or redo features. But because the product evolved as a whole I can not really distill a time estimate for only the "client side engine". I mean: would you consider testing the client side engine part of client side engine development? For testing you need a working server. For which you "need" a working network simulator. It's dependencies all the way down. And how about translation work for in-engine strings, updating shared libraries and frameworks, issue tracking, writing the asset conversion toolchain (which needs assets, which need integration). It's very hard to come up with any solid number. Maybe if you can severely limit your question's scope I can come up with an educated guess.
- ossworkerrights 7y agoHow long did it take you to reach 250k players, and has there been marketing involved?
- ItsFirefly 7y agoThis HN post is kind of the first attempt at getting the game out to "the public" aside from passively being present on app stores like Steam, Itch and Google Play.
- ossworkerrights 7y agoSounds good - keep up the good work!
- Hit_Man 7y agoThe over 283k accounts that are on AngelDust are not unique players. Many players have 100s accounts, mainly for the purpose of claiming enough land to build towns.
- ehhhhhhhh 7y agoDoes fast & efficient = fun?
- ItsFirefly 7y agoNo, of course not. But I myself honestly appreciate a well-crafted product way more than a badly crafted one. So I think we can at least say that: Fast+efficient+"some fun" > Slow+inefficient+"some fun"
- setr 7y agoMakes it more likely. I've noticed a first-pass test for video game quality is to watch the speed of menu transitions -- a slow transition time is indicative of other problems (menus are the least interesting, and very common, interface a game provides you; no one wants to spend any more time in the menu than they have to, except the designers). Speed correlates highly to quality in game implementations. Additionally, being a multiplayer game, fun also comes almost for free -- as long as you give decent tools for supporting the social interaction, the players will bring the fun in themselves. (For some reason, a lot of games fear their player base, and strangle the interaction opportunities as much as possible).
- Paperweight 7y agoThis comment will get downvoted but, dude, you are a GOD tier programmer. How?
- ItsFirefly 7y agoThanks for the kind words! I'm not sure if I can give you a recipe or an answer. I do me like you do you. Everyday I give it my best and eventually you end up with a product like this. Just get started and work on your dreams!
- shamelessApathy 7y agoFor the senior citizens viewing this they might relate the term "AngelDust" with the dissociative PCP, let me assure them though, it hasn't been called AngelDust since the 70s. You'd be much more likely to hear it referred to as "wet" or "sherm". IF you went to the ghetto and tried t buy Angel Dust they'd think you were a cop. It's like calling weed "dope". Just a little disambiguation from a drug name etymologist :)
- yojex 7y agoI don't know if "drug name etymologist" is an official profession or your hobby, but if it's the former I would suggest you seriously reconsider and re-research your conclusion on this term! Just a friendly suggestion :-)
- i_am_nomad 7y agoBut that’s my favorite drug name, despite its antiquity. There’s just such a goofy mismatch between something that sounds like magical fairy sparkles from heaven, and a drug that lets you fight six cops at the same time and win.
- LeftHandPath 7y ago> For the senior citizens viewing this they might relate the term "AngelDust" with the dissociative PCP, let me assure them though, it hasn't been called AngelDust since the 70s. I don't see that connection as an issue with the game or your post. It certainly isn't doing anyone any harm, despite what others suggested in earlier comments. That said... I'm 21 years old, and I still associate "angel dust" with PCP. The name is still used by popular rappers including Mac Miller [0] and Run the Jewels [1]. It is still defined as PCP in 6 of the top 7 results, vs 5 of the top 7 for "sherm" and 0.3/7 for "wet" on Urban Dictionary [2,8,9]. Angel dust is the most common synonym for PCP on Urban Dictionary [10]. The name "angel dust" was used to refer to PCP in a 2011 episode of Its Always Sunny in Philadelphia [3]. The name is still in common parlance on Reddit [4,5,6]. However, the drug seems to have experienced a decline in popularity, accounting for less than 0.1% of all documented hallucinogenic drug use in the United States in 2017 [7] - suggesting that the term "angel dust" is not well known simply because the drug isn't commonly used, and not because the term has been abandoned. I just don't want anyone to get into trouble thinking that they can use the phrase "Angel Dust" without it being seen as a reference to hard drugs by the general public. I am also surprised that this association is being rejected, considering that the creator of the game is going by "Frank Lucas" [11], which is the name of a famous drug trafficker [12]. [0]: https://www.youtube.com/watch?v=rIQqzTNRmoc https://www.youtube.com/watch?v=rIQqzTNRmoc [1]: https://www.youtube.com/watch?v=R_esHn4X03U https://www.youtube.com/watch?v=R_esHn4X03U [2]: https://www.urbandictionary.com/define.php?term=Angel%20Dust https://www.urbandictionary.com/define.php?term=Angel%20Dust [3]: https://itsalwayssunny.fandom.com/wiki/The_Gang_Goes_to_the_Jersey_Shore https://itsalwayssunny.fandom.com/wiki/The_Gang_Goes_to_the_... [4]: https://www.reddit.com/r/PCP/comments/ba1754/two_dimes_of_pcp_angel_dust/ https://www.reddit.com/r/PCP/comments/ba1754/two_dimes_of_pc... [5]: https://www.reddit.com/r/Drugs/comments/5tru38/what_is_angel_dust_and_what_is_the_high_like/ https://www.reddit.com/r/Drugs/comments/5tru38/what_is_angel... [6]: https://www.reddit.com/r/serialpodcast/comments/2qove1/how_long_does_an_angel_dust_pcp_trip_last/ https://www.reddit.com/r/serialpodcast/comments/2qove1/how_l... [7]: https://www.drugabuse.gov/drugs-abuse/hallucinogens https://www.drugabuse.gov/drugs-abuse/hallucinogens [8]: https://www.urbandictionary.com/define.php?term=sherm https://www.urbandictionary.com/define.php?term=sherm [9]: https://www.urbandictionary.com/define.php?term=Wet https://www.urbandictionary.com/define.php?term=Wet [10]: https://www.urbandictionary.com/define.php?term=PCP https://www.urbandictionary.com/define.php?term=PCP [11]: https://angeldu.st/en/game#play-now-button-3 https://angeldu.st/en/game#play-now-button-3 [12]: https://en.wikipedia.org/wiki/Frank_Lucas https://en.wikipedia.org/wiki/Frank_Lucas
- nikkwong 7y agoThis is the most interesting thing I've seen in a while. Props man. Good work.
- ItsFirefly 7y agoThanks so much! Finally sharing the end result of all my hard work feels really good. And seeing so many visitors swing by on the livestream is insane!
- nikkwong 7y agoYeah. I'm definitely going to follow you for more updates. It will be interesting to slowly learn from you via osmosis as I've been interesting in developing browser games for a long time. Seriously impressive to see what today's tools enable creative people like you to do as a team of one.
- ItsFirefly 7y ago"Today's tools" do not necessarily allow you to make anything like this. I'd even go as far as to say that an array of ancient hardware and software are the main reason for being able to make a product focusing on compatibility and performance. Not aiming for a moral high ground, but just looking at it practically. I started Angeldust on my trusty, white MacBook1,1 mentioned in the starting post. Having only an Intel GMA945 for powering a 1280x800 display and trying to get a decent frame rate forces some design decisions. I quickly ran into optimizing for GPU overdraw and resources instead of being bottlenecked by the dual-core Intel CPU. Then I ported the engine to iPhone 3GS where you get the exact opposite situation: the GPU can push lots of pixels to a 480x320 screen, but the ARM CPU is struggling to keep up. Just this 2006/2009 era combination of hardware alone forced me to be efficient with both CPU and GPU. Eventually I even got the engine running smoothly on a first-gen Raspberry Pi on a 1280x1024 display which is no small feat. I think if you start from "today's tools" on "today's hardware" it's entirely too easy to consider any older platform inaccessible or obsolete, while if you work the other way around you appreciate the sheer power older devices have when used properly. Then moving onto newer hardware is just icing on the cake and just shows you how ridiculously powerful a modern 6-core Ryzen with an appropriate GPU is.
- ItsFirefly 7y agoThanks so much everyone for all the positivity so far! I'm still streaming right now. After the stream I'll catch up with all questions and comments here, I've had a blast talking about my work so far. And if any of you can get me in touch with John Carmack that'd be very awesome ;)!
- Exuma 7y agoHes quite active on his facebook
- jheriko 7y agosend him e-mail!! worked for me :)
- ItsFirefly 7y agoBoth you and Exuma: thanks for the down to earth answers! I'll give it my best shot.
- echelon 7y agoHow did you afford taking off years of work to develop this? Did you have a lot of capital / runway? Low cost of living? Kudos for this extremely well polished project. This is the dream many of us have but can't or won't embark upon. This is very inspirational.
- ItsFirefly 7y agoGood question. I started working right after what we call "middle school" in the Netherlands which translates to high school I think. During the daytime I would work my job and in the evening self-study for the "Open University" we have here. I lived with my parents during this time and could save up money as a buffer. Thanks to that support I could financially bridge these past years of development without worrying too much. Also: keeping expenses as low as possible. My product is old school and so are my computers.
- smadurange 7y agoInspiring! Looks awesome. Hope this will go on to become a huge success. All the best!
- echelon 7y agoYou're killing it! Great choices, fantastic execution. You're going to go far. Keep it up!
- ItsFirefly 7y agoThanks! A slight word of warning though, something that also came up during yesterday's livestream: I've been really lucky to be able to successfully fulfill my childhood dream by making this game. But like Freddie Mercury sung: it's [not always] been a bed of roses or a pleasure cruise. I've sacrificed progress in other areas of my life to see this through to the end. I hope to catch up there starting as early as next year. Nonetheless I definitely wouldn't be the same without having taken on this adventure. I've grown so much as a developer, an entertainer and even as a person by creating Angeldust.
- ArchReaper 7y agoDo you have any plans to open-source all or parts of the game or underlying platform? Do you plan on developing this into it's own 'game engine' or plan on going further than this initial game? I've been following a few multi-threaded game projects and they are always very interesting to read up on, best of luck!
- ItsFirefly 7y agoYes, open sourcing at least the client part of the game is something that I'm very interested in. I'm not entirely sure when or how this will happen just yet, it will depend greatly on the commercial success of the game. But it's definitely my preferred course of action for the future. EDIT: I'm not really interested in separating or spinning off the engine, but you will have few problems turning the game into something entirely different.
- ossworkerrights 7y agoWhile I would advise against open sourcing the core of the game, opening the client api may be a good idea - perhaps others can write clients for it, but there may be issuing around people making bots to cheat the game.
- ItsFirefly 7y agoI wrote a "bot" myself in the form of a network simulator for general and load testing of the server. If players were to automate the game I'd be more than happy to make a special server where we could show off their work. Making an agent navigate an open 3D space and performing planned tasks would make for an impressive demo for all parties involved.
- ossworkerrights 7y agoWould be interesting indeed!
- exikyut 7y ago
- synthecypher 7y agoAwesome were you inspired by Ace of Spades at all or have heard of it? I remember that original voxel-based engine and web server list that launched the client using their custom URI. It was awesome how small the game was and how fun it was the simple concept (Minecraft with guns and no floating blocks).
- ItsFirefly 7y agoI once saw a trailer for AoS, but to be honest I don't really play many games myself these days. I find that working on Angeldust is in itself a reward that alleviates the need to play games as escapism or entertainment.
- friendlybus 7y agoJust curious, what would you say to your customers that are playing you game for the sake of escapism or entertainment?
- ItsFirefly 7y agoI'd say: have fun! With Angeldust being a shared, persistent, open online world it's a pretty cool place to make friends and work on building projects together. You can leave a permanent mark in a place where you can be someone else compared to real life. But I always advise enthusiastic players to keep an eye out on real life. Mind your health and your relationships. Real life, family, friends—they all come first. Of course you can be friends in-game and even build meaningful relationships there, but that's no substitute for living a well-balanced "real" life. I've been an avid gamer in the past, and right now I'm a very avid developer. I try to balance that in real life by playing sports and exercising three or four times per week. Going out on walks, to the movies, meeting up with friends. "Balance in all things" as a character from Baldur's Gate would say.
- keyle 7y agoImpressive for a solo indie game dev.
- blunte 7y agoThis game is not available in the Dutch Apple App Store :(
- McDev 7y agoSame for the UK.
- deleted 7y ago[deleted]
- ItsFirefly 7y agoSorry for taking a while to reply—I contacted Apple support and it seems like the issue is out of my control. For both you and the GP comment I'd like to refer you to my reply here with background and more information: https://news.ycombinator.com/item?id=21872869 https://news.ycombinator.com/item?id=21872869
- ItsFirefly 7y agoIs there any way I can diagnose this? As far as I can tell Angeldust is actually available on both the Mac and iTunes App Store. Any feedback or advice is welcome here.
- blunte 7y agoI originally followed your link on your website, which opened App Store and gave me that notice about it not being available in this country. However, now I just opened App Store, searched for "angeldust", and bought it for less than 5€... so clearly it is available. So it has something to do with the path a user takes from the link on your website thru the Apple dialog that asks where to open the link [App Store], etc.
- ItsFirefly 7y agoThanks so much for taking the time to follow up. I think you are right on the money with my website-link being stale or outdated. I've contacted Apple to diagnose and fix the issue. If you—or another hacker—knows a good way to link to apps on the iTunes App Store from a website I'd love to hear it. Apple's link builder seems to tie in a regional preference which might not match the user's actual region.
- ItsFirefly 7y agoStill streaming, sorry, it's a crazy and crazily cool moment for me right now. I promise I'll be back with answers soon! :D
- angrais 7y agoWhat's your plans for commercialising AngleDust?
- ItsFirefly 7y agoAttaching a price tag it (done!) and trying to spread the word through relevant channels (in progress). Posting on Hacker News has been a thoroughly enjoyable process so far and I look forward to meeting more great minds.
- johnnylambada 7y agoUninstalled. Looks like fun but I let Google choose a hard password and there's no way to paste it into the Android app. I tried typing it but had to swap back and forth between apps to get all the pieces of the password. The game clears the password when I got back. Last chance change password but I don't see how.
- ItsFirefly 7y agoIn another thread someone shared their experiences with their password manager too. Even after hundreds of thousands of players coming in I never heard or realized this was a problem. I'll do my best to polish this. Thanks for your time though!
- johnnylambada 7y agoAs someone else mentioned I should have been gentler in my comment. Thanks for what looks like a great game can't wait to play it.
- ItsFirefly 7y agoDon't worry about a thing. Over the years I've come to appreciate feedback in any shape, way or form. Anyone taking the time to reflect on my product, my work or me as a person is someone who's apparently invested, but possibly didn't get the exact thing they were hoping for. I can only listen and learn from this. It might also help that I'm Dutch and we're supposedly pretty "direct" by default. I've also learned from dealing with Russian players who are even more versed at that craft.
- geddy 7y agoTotally valid criticism but kind of dickish delivery. The guy built a game, for free, I think it's worth more than an "Uninstalled."!
- johnnylambada 7y agoTotally justified remark. I was frustrated after trying it. I'll reinstall after the password fix. Thanks for keeping me honest :)
- tanyatik 7y agoThis looks cool! 250K players is impressive. Are those real players or bots? Interesting to know more about performance too, what is your rate of update per second? How long does it take to process a tick? Do you have a tech blog? Would be really interesting to learn more.
- ItsFirefly 7y agoYou might have noticed I already took a looong time to formulate a reply to your questions. And I'm still not sure how to approach them, so I'll reply to the last part first. Currently I only have my livestreams as a public presence. I find it a very comfortable and pleasant medium for conveying who I am. It lets me share stories and ideas including non-verbal cues and that's a major plus for me. So if you want to learn more, definitely subscribe or follow on YouTube and/or Twitch: https://www.youtube.com/AngeldustLive https://www.youtube.com/AngeldustLive https://www.twitch.tv/AngeldustLive https://www.twitch.tv/AngeldustLive I honestly appreciate talking about technical things a lot, even though I might be playing what appears to be a silly video game. As for streaming: I just did three consecutive days, but will take a short break. I'll be back this Thursday.
- Hit_Man 7y agoOut of the almost 284k accounts, nearly 25k of those accounts have no gold, so probably logged into the game and logged off, without playing the game. And 34k have less than 1,000 gold. Some of the players have 100s of accounts, and those are mainly for claiming land, since each account can only claim 64 plots of land.
- bdibs 7y agoLooks fantastic! When did you originally start development?
- ItsFirefly 7y agoI'm going to give a sentimental answer instead of a fully accurate one. This also came up during the livestream, so it's a great question! When I was a five or six years old kid I used to program on our home computer, a Philips P2000. Monochrome green on black CRT, Zilog Z80 CPU, different ROMs for running BASIC or Pascal or whatever you hacked onto it. My very first program drew Christmas trees on screen. Very appropriate to share this story right now. I immediately showed my mom, who wasn't really impressed, because she didn't understand what I had done. I had told my computer what to do—wow! Then one day I was walking around the schoolyard imagining the world around me being digitized and available as large, 3D blocks inside my computer. "My" P2000 wasn't advanced enough to pull it off and similarly I wasn't advanced enough to program something like that. But the idea of having a coarse, 3D replica of my world and being able to have fun in there with my school buddies always stuck with me. Many years later, at an intellectual dead-end in my job I took a month-long vacation to regain focus on my life and myself. And I suddenly remembered my childhood dream, or fantasy, of that 3D world. And I realized that computers were now advanced enough and I was advanced enough. So I decided to take on the journey, channelling my inner five-year old. Some players have joked about this with me. That they're actually investing their time in the figments of a five year old's imagination. And that's not far from the truth. Even though Angeldust is better, more beautiful and more professional that I had ever imagined, it is the actual implementation of my childhood dream. So the answer to your question is that I started development somewhere between being five years old and now. Hopefully this answer still gives you some joy and insight!
- Narishma 7y agoIs there a way to close an account?
- ItsFirefly 7y agoSure, ping me on the e-mail address listed on the support page.
- martinesko36 7y agoWhat are your server costs?
- ItsFirefly 7y agoIt of course depends on the demand, but very low in general. During periods where I don't have a lot of player activity even a single vCPU is enough to host about 2.000 simultaneous players.
- yazaddaruvala 7y ago> It of course depends on the demand Do you require downtime to scale or is it seamless?
- ItsFirefly 7y agoMigrating requires downtime since the game server runs as a monolithic entity. I migrate between dedicated servers and VPSes based on expected demand. Right now we're running on big metal to be able accommodate many players coming while I'm more actively promoting it. When the hype settles down I'll probably move back to a small VPS. I always joke that Angeldust and the server would even run on your toaster. I bet it would even be able to serve hundreds of simultaneous players before turning into toast.
- plasma 7y agoNot sure how your backend works, but I read a neat technique by I think Second Life, where each actor is in a zone, and a zone is managed by a server. If a player leaves the zone, their entire code stack and current state is shipped to the next zone (script hand off) without the player noticing. They mentioned because each actor is running in a VM/scripting language, the servers can pause/resume the VM for that actor on any machine they move to - pretty neat.
- ItsFirefly 7y ago
- lbj 7y agoAmazing job man, well done
- unixsheikh 7y agoCongratulations, amazing work! I absolutely love how you have opted out for frameworks on the website and that it just work. Kudos! The same for your considerations for making it work on old hardware and you comments on your live stream today about your old Mac and making it run on Windows XP as well. More developers need that attitude. I wish you all the best and I hope this becomes a Minecraft size success!
- ItsFirefly 7y ago(Michael Scott:) Finally! Thank you. The "old school" PHP -> HTML + CSS with minimal JavaScript website is a thing of beauty I think. It's heartwarming that HN didn't dismiss my website just because it's not Web 2.0 or 3.0. From a technical perspective it's very much Web 1.0. But I see it as being elegant, functional, very fast and maintainable. It's tied in to the game at a core level as well, with real-time updates of in-game action. Also: I didn't even see a CPU spike during HN's peak hug, so try harder, soldiers! As for the older hardware and building something for performance: in my dreams this past night I realized that HN as a website closely fits my design philosophy. This website is just completely transparent and gets out of your way. You get a box. You enter text. Boom. It's beautiful. I hadn't posted on here before, but the entire experience has been delightful. Tangent: sometimes it feels like the home computer I grew up with was faster than any modern device that I use. I'm glad I'm at least able to recreate that feeling of raw performance on older hardware. Computers have always been insanely fast, I'm not sure where we lost sight of that.
- findyoucef 7y agoHave you thought about porting this to Nintendo switch? Indie community is huge so many games do well on the platform.
- ItsFirefly 7y agoYes. A lot! Unfortunately I've always considered "the big three" consoles completely out of reach for my project. Many players have asked about a port to the Switch and other consoles. I'm confident I'd be able to pull it off technically without too many issues. But I have zero experience dealing with parties like Nintendo and adhering to their (I imagine) very strict policies for games. Being a mostly-multiplayer cross-platform-play title complicates things too I think. During my stream yesterday I also discussed Switch compatibility. I think Angeldust is a perfect fit for the Switch. Nintendo's design philosophy very closely matches mine. Angeldust is big, bold, colorful, cheery. Let's get it on there stat I'd say! If you have pointers on getting started with indie development on the Switch, I'd happily start reading up. Now's a good time as any. And with most things in the game I learned everything by just starting and winging it. Hopefully this'll be another case of being able to quickly internalize things and get going.
- friendlybus 7y agoThese guys help indies port to consoles, maybe they have a few tips? https://do-games.com/ https://do-games.com/
- ItsFirefly 7y agoThanks, I took a look. They look geared specifically to getting Unity engine projects "ported". Porting my (non-Unity) code is the least of my worries; I'm already maintaining about ten different build toolchains. I anticipate most problems in the Nintendo Switch platform rules and guidelines that I'm completely unfamiliar with as of yet. And I lack the hardware to test. But now that I'm forced to think more about it, both seem like solvable problems. Thanks for the inspiration :)
- jameslin 7y agoI tried to download the game from appstore but it's not available in NZ, maybe you can provide actual package to download without app store.
- deleted 7y ago[deleted]
- ItsFirefly 7y agoOf course! I can't distribute iOS apps outside of the iTunes App Store, but I do have DRM-free, standalone versions of Angeldust for macOS here: Itch.io: https://metagaming.itch.io/angeldust https://metagaming.itch.io/angeldust Steam: https://store.steampowered.com/app/488440/ https://store.steampowered.com/app/488440/ If anyone nows a way to distribute iOS 6.1+ apps that doesn't violate my agreements with Apple, get in touch with me :D!
- epse 7y agoSearch for it from the store, apparently the link is somehow broken
- colatkinson 7y agoThis looks incredible. Gives me vibes of old school Runescape, mixed with Minecraft. Plus the performance as you've detailed it sounds like quite a feat! Also very cool to see a project that supports old hardware--I remember being a kid with hand-me-down computers struggling to play even some Flash games. Gonna give this a play tonight. Rock on, dude!
- ItsFirefly 7y agoThanks for the feedback, I hope you enjoy playing. I'll be livestreaming again today at 17.00h UTC, feel free to swing by to hunt together, or talk technology!
- dosy 7y agoHow do you plan to make money and support the server costs?
- winrid 7y agoAwesome job. I'm working on a game with some similar technical challenges (landscape is based on actual Earth though) and backend is in Java. I'll see if I can get my friends to play.
- ItsFirefly 7y agoI read somewhere about doing your project in a "release early, release often" style of development. While developing Angeldust I got others involved and playing after just a few months of part-time development. Getting feedback, ideas and issues early definitely helped me build a rock-solid base on which I could build the overarching gameplay. So if you have friends (you're already doing great there!), get them playing today! Or tomorrow! It also forces you to have a working build pipeline and packaging process for getting builds out to others instead of toying around on your own machine. Also: don't take my advice as gospel, but judge its merit for yourself.
- davidmurdoch 7y agoIs the game similar to something like Terra Mango (https://terramango.com https://terramango.com)?
- winrid 7y agoIt's similar.
- tapatio 7y agoStupid name.
- cerberusss 7y agoCan you please read the guidelines, especially the part about "shallow dismissals"? https://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html
- travbrack 7y agoIs there a Mac installer available for download? App store says the game isn't available in my region (USA)
- blue_box 7y agoYou can buy it on Steam.
- ItsFirefly 7y agoQuick answer—both Steam and Itch.io offer DRM-free, standalone macOS versions: Itch.io: https://metagaming.itch.io/angeldust https://metagaming.itch.io/angeldust Steam: https://store.steampowered.com/app/488440/ https://store.steampowered.com/app/488440/ Long answer—you are the fourth hacker to report that the game isn't available for you on one of Apple's App Stores. I've contacted Apple right after my stream yesterday, now waiting for a reply. If anyone can help me diagnose this or get it working, that'd be greatly appreciated. I recently switched from a free tier to a paid tier for the product launch, so I might be messing up something.
- sickmartian 7y agoIt's showing up for me in the App Store, macOS Mojave 10.14.6 (18G1012) from Argentina. Hope it helps with diagnosing somehow, and good luck with the project, looks impressive.
- ItsFirefly 7y agoSorry for taking some time to reply in full, but I wanted to wait for an official answer from Apple support. Apple informed me that: "[Y]our apps … are available worldwide and functioning as expected. If your customers are reporting issues, they may not meet the requirements for the apps or have some issues on their devices and would need to contact technical support for assistance." I'm glad you and others reported problems with availability, but it looks to be something outside of my control. If you still want to get Angeldust on your Apple device from the App Store you might have to contact Apple to help diagnose the issue. I'm sorry that I am unable to help you. Like I posted earlier, Angeldust is available from several other sources besides the iTunes and Mac App Store: Itch.io (Win, Mac, Linux, Android): https://metagaming.itch.io/angeldust https://metagaming.itch.io/angeldust Steam (Win, Mac, Linux): https://store.steampowered.com/app/488440/ https://store.steampowered.com/app/488440/ Google Play Store (Android): https://play.google.com/store/apps/details?id=nl.metagaming.angeldust https://play.google.com/store/apps/details?id=nl.metagaming....
- jdkee 7y agoHow is this not Minecraft without extra steps?
- doyoulikeworms 7y agothis looks incredible, thank you for sharing!!
- p410n3 7y agoWow. It works everywhere. Amazing
- anthk 7y agoNo OpenBSD support :p.
- ItsFirefly 7y agoDon't sweat it! I did get an older version of Angeldust running on OpenBSD with pledge and unveil without problems. It's just not a market I can comfortably cater to at the moment. Kick back and relax for a moment and there'll probably be a binary or source distribution for *BSDs too. Same with Raspberry Pi. Game runs beautifully, but I have no great packaging and distribution process yet. In addition I also ran Angeldust on Haiku. There is no reason why a product like this wouldn't run everywhere. (Also shoutout to theo and/or tedu if you're here.)
- appleflaxen 7y agoHow did you choose the name? For a native english speaker, the only association I have is with really hard street drugs (specifically PCP), and that association is very strong. Is there a special meaning for your game?
- deleted 7y ago[deleted]
- ItsFirefly 7y agoSince your message popped up right at the top I'm going to reply to it, hopefully summarizing my view on this and addressing the lively discussion about the game's name. There is a special meaning for the game. The short backstory is included on the game's website. Here's the gist: in the game's lore Violet and Crimson are angel siblings. Violet is the angel of creation, Crimson the angel of destruction. Due to unforeseen circumstances both angels shatter to dust. This dust dwindles towards the planet where the game takes place. Subsequently parts of the game world and its inhabitants have been permanently infused with magical energy. Energy derived from the dust of angels. Angeldust. "Angeldust" is beautifully fitting and it's a beautiful name in my opinion. I wouldn't want it any other way. There's an entire design language behind the lore, the names and composition of the game world. To a casual observer this might not be apparent or make sense. But everything ties together perfectly. I've seen discussion and jokes about the name before when reaching a larger audience. It's great that people have an opinion on the name and some of it's (in my view) lesser known historical usages. As far as I'm concerned Angeldust is a pretty cool video game product with unique properties. In no way, shape or form do I want to endorse or conjure connection to other, past uses of "Angeldust". I hope you can appreciate the context, connection and product that "Angeldust" refers to for me. And then I get there's a bit of confirmation-bias and pattern-matching going on with my name. I wouldn't have expected otherwise from the smart hackers here. I have no good argument against this. I wasn't aware that I share my name with a (for you all, well known?) dude from the past. Given finite first and last names, collisions are bound to happen. Maybe we should start using MD5- or SHA-hashes as names to prevent this in the future.
- vectorEQ 7y ago
- nnq 7y agoThe graphic style - oh, my eyes!!! Please team up with a designer, or with a different designer! ...I don't mean the quality, it's understandable resources are constrained. I mean the actual artistic decisions... it burns your visual cortex with all those colors and textures fighting each other. What's the theme, "kindergardeners on acid meeting Elvis"?! or "South Park but in Fortnite drawn while drunk"?
- ItsFirefly 7y agoOof! I'm the designer and art director myself. Please elaborate a bit as "colors and textures fighting each other" doesn't give me the slightest clue as to what you perceive as problematic. Can you post annotated screenshots so I can learn from this? Then I'll go and fire myself! I've been playing the game in both the "Cartoon" and "3D" visual style for years and it's been a very pleasant and eye-pleasing experience for me. Please open your world a bit for me. Maybe share some of your design work for inspiration. Thanks in advance for your feedback.
- nnq 7y agoHeh, sorry, I've been to harsh with the comment I guess... it's probably just me personally being "highly allergic" to this particular toony-style. I think it sort of falls in some "uncanny valley" of design, being neither stylized/abstract/low-poly-ish enough, nor realistic enough, nor fully-pixelated/blocky/minecrafty, but just in-between. In general I like styles that either: - just go all the way in the stylized direction, like Bad North [1], The Witness [2] or even Clash of Clans [3] (to be honest I also dislike CoC-style popular with mobile games nowadays, but at least it's consistent/harmonious in its candy-plasticky look) - OR they actually try to do the realistic-style part, like the classic Age of Empires, or toony-ish-ralisticky like more modern Northgard [4] - OR they fully embrace the blocky style like Minecraft, or the 8-bit/pixelated style of clearly retro-style games "In between" styles just look... annoying, giving a "sand in your eye" mental sensation of the early 90s games that were too shallow and childish. It lacks some "higher harmony" thing that I can't describe any better. I get this "allergic" reaction also when I see this style in clothing or architecture or whatever. Anyway, keep up the work if you and others enjoy it, don't be discouraged by people that just prefer smth else! I'm just a bit sad bc I probably would've liked the game mechanics, but the style totally turns me off. [1] https://store.steampowered.com/app/688420/Bad_North_Jotunn_Edition/ https://store.steampowered.com/app/688420/Bad_North_Jotunn_E... [2] https://store.steampowered.com/app/210970/The_Witness/ https://store.steampowered.com/app/210970/The_Witness/ [3] https://play.google.com/store/apps/details?id=com.supercell.clashofclans&hl=en_GB https://play.google.com/store/apps/details?id=com.supercell.... [4] https://store.steampowered.com/app/466560/Northgard/ https://store.steampowered.com/app/466560/Northgard/
- odrzutowiec 7y agoHello, very impressive project, great job! I have two qestions, somehow related but not fully. 1) How did you handle such big distance draw? Are you using lod and occlusion culling? Was it PVS or rather depth buffer based solution? Did you use bsp or octrees or something else? 2) what data structures did you use to hold the world and it's objects? And how much of it is kept on the server vs client?
- ItsFirefly 7y agoAngeldust has practically zero level of detail (LoD) and has no occlusion culling. "Almost zero LoD" means that geometry is always rendered at full resolution, but subtle vertex-shaded effects like the waving of grass are not applied for distant geometry. So you will see grass everywhere, but it won't wave when it's "unnoticeably" far away. Other than that I just push millions of mostly buffered triangles and vertices each frame at high view distance without a hitch. Turns out computers are pretty fast these days. Note that I'm working on a newer render engine that actually uses more GPU shading capabilities and this engine runs even smoother than the current one, since it balances the workload a lot better between CPU and GPU. As for data structures: both client- and server-side it's pretty much a simple std::map<coordinate, chunk*>. Its O(log(n)) lookup is adequate and I don't want or need to do complicated things to ensure decent performance. On top of the map I do spatially-aware caching to prevent say 99% of actual map lookups which turns the majority of lookups into O(1) which seems pretty much optimal. As for keeping data: the server is authoritative in everything. The server keeps the data. You can take any device, install Angeldust and sign in with your credentials and you'll find yourself back in the same world, same friends, same progress, same everything that you had on another device. Same with game state: the server tells the client everything. The client is basically just a dumb graphical terminal application that renders 3D visuals instead of VT100 text.
- deleted 7y ago[deleted]