All posts by Justin

The Pre-Game Show

For quite a while now, we’ve found ourselves in an odd predicament. We’re far enough along that we have a reasonably-playable copy of the game under the right circumstances, but we are not yet ready to open an alpha test. This is due to the lack of a secure authentication system, wardrobe and vanity, a new logo, and the many other reasons that KaiyonAlatar outlined in his post on the subject.

Furthermore, we encountered severe memory leaks numerous times during the filming of this demo video, due to the way our caching system currently works. Even with five or so people online, the server becomes unusable after half an hour or less. Considering an alpha would ideally have many more than five players online at a time without crashing, we’ll need to address this issue as well as the set of issues we’ve covered before.

In the meantime, we’ve prepared this demo video to provide something a bit more tangible than an ever-increasing collection of screenshots. I’ll give a street-by-street explanation of what you’re seeing on each street, and what is and isn’t working. Finally, I apologize for the insanely long video. I removed about half an hour from the raw footage (almost all of it involves watching the game freeze up and reload), but I felt that removing any more might make the video less fluid.

Gregarious Grange (0:00-3:52)

In a fully-working version of the game, players would normally start out in the tutorial. However, we don’t quite have instancing working correctly yet, so at this point, Gregarious Grange exists as our starting point for players. Interaction with trants (trees and plants), as well as players and most items, works. Some achievements work, although completist badges and “do X, Y times” achievements do not at the moment; tasks are accurately counted, but nothing happens upon completion. Those annoying spinning wheels, Random Rube appearances, as well as Rubeweed essence  all function as expected,although NPC pacing does not, thus, the Rube just stands in one place. Global chat, private messages, as well as groups in general (although there does not yet exist a mechanism for joining or creating them), work properly. Finally, you can see that map teleportation is available.

Ajaya Bliss (3:52-10:22)

We are able to mine, but the game does not yet acknowledge group mining bonuses. Quoins can be collected (with the exception of qurazy quoins) and quoin sharding functions as it should. However, this has a tendency to rapidly overload the cache, which makes the game crash much faster. Alphabet Sauce is a potion that never made it into the game that provides letters above everyone’s head and directs them to spell words. It’s currently full of bugs (among other things, the letters don’t disappear when I move streets), but some point further down the line we’ll get it working and add it to the game. The follow feature, something that would’ve been useful for this demo, also does not yet work, but the admin commands to teleport to other players have been handy!

Kymi Abyss, Livo Farce (10:22-25:44)

As mentioned earlier, the letter placed on my head by the Alphabet Sauce potion remains on my head. You can see us harvesting jellisacs and peat bogs, scraping barnacles, and swapping Hi signs. Shrine donation works (the error I got during that was unrelated, and probably to do with hi signs). The quest timer fired off at just the right time, but as mentioned earlier, can probably not be completed without some additional programming.“Real” rook attacks don’t quite work; what’s seen here is a simulated attack that looks like a real one but isn’t (notice that the focusing orb doesn’t allow me to stun the rook).

Luminous Night (25:44-33:56)

Considering it’s an action not all dissimilar from scraping barnacles, it should come as no surprise that ice nubbin scraping also works. As discussed in the demo, animals (with the exception of chickens) act almost-normally, aside from the fact that they, like all other NPC’s, cannot yet pace. You will also notice that I was able to create a link from the map to share with my fellow Glitchen.

Jyotiba, Bodhisattva (33:56-37:17)

Perhaps most obvious here, as immediately upon arriving I land on a quoin, quoins give disproportionately large amounts of iMG. This isn’t so much a bug as something that will have to be corrected during a future QA run. Physics (e.g., the swimming motion) work as expected here.

Vortex of Random (37:17-1:17:58)

At this point, we’re not so much demonstrating specific functionality as just doing a walkthrough of an interesting collection of varied streets. One may also notice that all my inventory items have disappeared. This demo actually takes place across two testing servers, scheijan’s and mine, each with a different set of player data, hence the missing inventory and other seemingly random changes at this point. The stars and keyboard in Piano Party have been tagged, but will require configuration to perform as expected; the same goes for item spawners as well as the teleporter in Ain’t That Dry.  The stars, keys, and teleporters all require a “collision” by the player to perform the function for which they are programmed. Once the player crosses an invisible, pre-defined plane, the event happens, whether it be to light up a star, play a note on the piano, or teleport to another location. The item spawners can be taught what to spawn, as well as how often it should spawn. All of these things will be dealt with in the next phase of QA.  These invisible items are represented by an image of Stoot’s head in the “God” client, so that they can be seen to be configured.

Guillermo Gamera Way/Uncle Friendly’s Emporium (1:17:58-1:22:56)

It was my childhood dream to star in Ur’s only cooking show (unsurprisingly, this meant it had the worst ratings in its category). Nah… in all seriousness, this was a last-minute addition because we forgot to demonstrate any sort of cooking or crafting. So I chose an expensive, complicated recipe to allow me to perform a thorough demonstration. Although they are not all pictured, crafting works in all cases that we’ve tried. Vendors are able to sell their goods, as well.

Asslandia (1:22:56-end)

Yes, that street will forever be known to me as Asslandia. I realize it disrupts the continuity of the video to put it after the cooking demonstration, but a street like this belongs at none other than the tail-end of the video (okay, I’ll stop trying to be funny now). Asslandia is “instanced”: an instanced street usually has a capacity limit (sometimes only one user is allowed), and in that way, makes it more of a challenge than other streets. You may remember dying alongside a friend and ending up in Hell One, only to find that your friend was not there, despite them saying they were also there. Hell One was instanced, so if one was full, another instance was created to take on the overflow. We can create and use instanced locations, but all instances share items and players (meaning you can appear in more than one instance at the same time) at the moment. This isn’t an issue in most cases, although once we have the housing templates, it will become a serious problem that must be resolved (houses aren’t true instances, but they copy templates in much the same way).

Conclusion

The game itself is mostly playable; the main missing parts of the experience thus far are the housing templates and missing quest locations, which we should have soon. The largest hurdle to overcome before the possibility of an alpha test is an essential subset of web app functionality. Fortunately, progress is being made on various parts of the web app, so we are getting closer to that goal. Finally, there are still performance issues in the game itself that will have to be addressed before any larger-scale tests can be performed. That said, we are beginning to make progress on these goals, and I look forward to an alpha test at some point in the not-too-far-away future.

Eleven, Flash, HTML5, and You

It has been asked numerous times, both from inside and outside the project (it got asked so much in Slack that I finally had to append to one of our channel topics a statement informing readers that we are not, in fact, rebuilding the client), why Eleven is using Flash instead of HTML5 to build the game client. We appreciate the concern, and as a matter of fact, have discussed the topic fairly extensively. I myself have tried to answer the question many times, in many places, but have never really taken the time to provide a comprehensive rationale for our continued use of Flash.

I suppose the first misconception I’ve seen floating around is that using Flash allows a quicker path to launch, but absolutely no other benefits. From my perspective, the opposite is true. By sticking with Flash for the game client, we actually gain numerous advantages. I’ll address the most obvious (speed of development) first, followed by the two most common concerns people see with Flash (performance and mobile), then discuss the technical hurdles we would face implementing a game client in HTML5, and finally discuss what matters most to me personally: providing an experience on par with that offered by Glitch.

The most obvious advantage gained from continuing to use the Flash client is speed of development. The very first milestone our team accomplished (way back in November, but time has flown and it feels like we’ve progressed so far since what seems like a rather short time ago) was the successful compilation of the Glitch client as provided to us by Tiny Speck. For those who are curious, the process is something like this. My method differed slightly, but the essence is the same. It’s not necessarily a complicated thing to build, but the fact that building the complete client was still a process that took hours to figure out meant that we were dealing with quite the complex beast. It’s about half a million lines of code, and rewriting it would take a significant investment of time. We’re by no means in a rush, but people would like us to open in a (reasonably) timely manner, and we’re trying not to waste your time (as I’ll continue to explain in a bit); HTML5 offers no practical benefit, but numerous downsides, anyway. 🙂

Next up are performance concerns: What are the performance implications of Flash versus HTML5? Not being much of an optimization guru myself, a cursory look at the Glitch client, which still feels like it should run better on the rMBP I bought a couple of months back, would lead one to believe there’s much room for improvement. And maybe there is. However, that improvement would most likely be found by tweaking the Flash client, as opposed to switching to HTML5, which is hardly the performance savior it’s been depicted as. A quote from Cal (Bees!) of Tiny Speck:

“flash is a bit of a performance hog” – try running the same graphics in html5 and you’ll find that flash has very very good performance. unless you’re going to rewrite the client in unity/native-code then flash is going to give you *much* better performance than html5

While I’m in full-on TS-quoting mode, I should also mention the pathway Jono has mentioned for optimizing the Flash client:

 

“the memory leaks are in the game client, it needs a lot more object pooling”

the game needs 3/4 GB minimum”

We cache assets in memory indefinitely too”

 

Suffice it to say, the Flash client could use some work, but in general, the client works, and in the grand scheme of things, works well, so it’s not on the list of things that’s holding us back from launch, at least in my perspective.

 

Next up is the relationship between Eleven and mobile devices. In short, such a relationship would mean certain disaster. MMO’s generally are not something you want to implement on a mobile device. Once again in the words of Cal (and taking another opportunity to shamelessly plug Slack – its search functionality has made finding all these quotes a piece of cake):

 

you can compile some flash to ios/android, but:
1) adobe have given up on that
2) it was built for very simple stuff anyway
3) glitch requires high bandwidth / low latency that you generally don’t get on phones
4) it’s very cpu/gpu intensive with lots of very large textures
5) mmos aren’t really possible under ios app store guidelines – the content & behavior needs to be built into the app
6) typing & playing on a tablet is pretty terrible
glitch is not a game that was designed for or could work (as-is) on mobile
In short, an MMO, especially a social MMO like Glitch, is not something you’d want to play on a mobile device. The experience would be awful, and it would also discourage the social behavior we’d like to encourage. Speaking from personal experience, I frequently remoted into my web server from my phone to chat with people in Glitch, and it was almost impossible to hold a fluent conversation. We seek to offer a pleasant experience, and supporting mobile devices would degrade that heavily.

 

The penultimate reason for our decision to stick with Flash (and the part of this post that [finally] includes the cool screenshot you’ve probably been waiting for, and may well have skipped through the rest of the article to find) is that the Glitch client is a technical marvel, that would be next to impossible to replicate. But, you say, shortly after The End of the World, there were various HTML5 remakes of small parts of the game! True. But some of the more difficult parts to re-implement are the ones you don’t see. Namely, LocoDeco, the Eleven/Glitch level editor.

Game___Glitch_18AD7E83

As you can see, it’s a fairly complex tool, and possibly one of the more advanced things ever done with Flash (I’m not the only member of our team to have made this observation). Its use is reminiscent of Photoshop in a way (and having used Photoshop most certainly helps one figure it out). Even if HTML5 were more mature as a technology, I highly doubt something like this would be possible to implement in it (as it is, it’s a testament to the coding prowess of Tiny Speck that they managed to create such an advanced design tool in a platform originally designed to play simple animations on web pages).

 

Finally, there’s the reason for sticking with the Flash client that matters the most to me personally. It’s why I’m so passionate about this particular issue. In order to deliver an experience that “feels” like Glitch, we need to use the Flash client. Even if it came at some cost in other areas, that’s priceless. We need things like the physics engine baked into the client to work exactly as they were, or things just won’t feel right. If we thought we could’ve done this without the myriad resources Tiny Speck released into the public domain, we could’ve started much earlier (and yet, we probably wouldn’t be nearly as far along as we are now – building an MMO from scratch is nigh-impossible). And using the client TS so graciously provided to us, that can happen. I think Kukubee put it best a couple of weeks ago when we demonstrated our progress to a few of the folks at Tiny Speck:

 

Kukubee: “damn motherfather, this is glitch!”

 

And that’s exactly what we’re going for. Nothing less. We’ve discussed it time and again, but if we wish to provide a quality experience, it’s the only way to go forward. I suppose that ultimately, I don’t get the affinity toward HTML5. Presumably what everyone really wants is the Glitch experience they know and love, and we’re trying to deliver that in the best way possible.