A small peek into Ur

It’s been many months since we’ve been able to show off some basic gameplay, but we’d like to change that. We have a few videos planned for you all, so get ready! What I’d like to demonstrate to you today is how many higher-level things are happening in the background at the moment.

You’ll notice some weirdness which we will of course be attending to. Those poor street spirits will be dressed up properly very soon. If you missed Aroha’s tweet, we put a temporary room in the game for the locations we don’t have yet; this cut out a good number of errors so we can focus on the ones we need to fix. There’s some visual “noise” that’s from the god-client, like all those tooltips and things highlighting as I walked past them. (Or did that happen before? I forget!)

Anyway, without further ado:

A note on the achievements happening back to back: Glitch counted everything. I have been astounded looking through this code to see how much counting occurs. When we set up our player data for testing, by default we made them level 26 with some currants and iMG…the game just has a bit of difficulty parsing that with the fact that we didn’t earn them. Picking up a currant forces it to count, and it goes “yay, you have so much money!” and fires off all the relevant achievements.  Don’t worry, we’ll be starting from scratch when the time comes just like everyone else!

State of the Project Address V2.0

Hi everyone!

It’s been a good 5 months since I last gave a nice overall summary of our progress on things, so here we go.

Game Related:

You know that throwaway server we’ve been talking about?  Well, we’re just about ready to throw it away!  Well, not really throw it away; it’ll still be a playground to figure things out for a while, but we’re actually ready to start working on the actual thing!  Aroha has put a lot of work into the high level design while we’ve been picking away at the throwaway server, so keep tuned for further details soon.  (I’ll pester him into making another one of his Dev Log posts.)

Of less importance, but more fun, is the fact that we got a lot more features working.  Just some of the highlights include the home streets and interiors along with towers (expect a video from me soonish!), hi5 signs, GPS features on the main map, triggers (physics and such), and I’m sure I’m missing a bunch!

The QA team under LadyCeres is still tweaking the locations of different items with input from their fake forums while also cataloging the way street spirits should look around the world of Ur.  To put that second part into perspective, each street spirit is made up of several customizable parts, which leads to an absurd number of possible combinations, but only a smaller subset actually make any sense, since some of the different styles simply don’t physically match up. You an expect a blog post about how the world of Ur is coming together soon!

Eleven Logo

We have a new logo made by none other than Kukubee himself!  He was awesome enough to make us our very own logo with similar styling to the Glitch one, but with it’s own unique feel to it.

eleven hq

Work has even started on the Android version of the Eleven app based on the Glitch HQ app that TinySpeck had.  Gafanhotz has been hard at work making it look really slick while the server infrastructure is still being developed to help drive the app.

Website Related:

eleven_forums

The forums are getting very close to internal testing, which means they’re also close to a public release!  Varaeth has been hard at work getting the whole website infrastructure set up to allow us to incorporate the forums with the game, vanity, wardrobe, etc…  I can hardly wait to be able to start interacting with everyone in a more direct manner.  Expect an update soon when internal testing starts.

I’m sure you’ve all already seen Joey’s video showing off the new combined wardrobe and vanity.  If not, what are you waiting around for, get over there and take a look!  Gone are the days of having to go back and forth between two tools to update your overall appearance; it’s all in one now, baby!  We’re still considering some extra features, such as customizing the color of some of the different pieces of clothing, so let us know what you think.  This is even something we could consider rolling out to public testing soon.  Stay tuned for more details!

skills

We’ve got an early concept for our skills page as well, thanks to RedBirdo.  Once we get the forums rolled out, we can begin integrating these important game-related features with the rest of the website.

Bottlenecks:

I’ll go over some of the bottlenecks from my last big post along with an update on where we are (some of which may have been mentioned above already), along with some new things.

Logo – Done!  Thanks Kukubee!

Vanity and Wardrobe – Mostly done!  Turnip started off the efforts to determine how it worked in the background for TinySpeck, and Joey helped finish it off by creating an amazing new interface.  We’ve got a little more behind the scenes work to handle in order to get the spritesheets generated (and put in the right spot for the game to pick up), but the main work has been finished!

God Pages – We’ve stalled a bit here, but have a small set of pages to start from.  Soon, we’ll need to pick this back up as a higher priority, and really start to consider the scope we want to include in our version of the system.  We’ll try to blog some details of this effort at some point.

Authentication – Just about done!  Varaeth is just working out some of the last details before we can start the forums testing.

Pathfinding – Still waiting.  There have been bigger fish to fry, so it keeps getting pushed aside.  If anyone has some experience in this area and would like to join our little team to take a stab at it, let us know!

Other Notes:

“Can we come it and play yet?”  – Unfortunately not yet, but we’re getting closer with every step we take.  The rollout of the forums and wardrobe/vanity and the fact that we’re gearing up to start working on the ‘real’ game server should be good signs, so keep your eyes fixed here.

“Shut up and take my money!!!” – Patience, friends.  We still don’t have a great demand for income, since servers are really our only expense right now, and we’ve got that pretty well covered.  We’re also evaluating options on how to take donations once we start needing them, as well as considering options for Eleven merch.  As always, stay tuned here for more details.

Final Notes:

Again, I’d like to thank all of our amazing friends.  Tiny Speck, Kukubee, Jade, Danny, Brandon Brown, Xavier and many more that I’m sure I’m forgetting.

Things are slowly coming together, and I’m still insanely proud to be able to lead such a great team of people.  It’s amazing how well people can work together when they have a common goal!

Sincerely,

Your Chief Chicken Tamer,

Jim ‘KaiyonAlatar’ Condren

Playing Dress-Up

Here is a preview of our NEW concept for the Wardrobe and Vanity. The layout and functionality is entirely thanks to Joey!

For those that are curious, this interface is written using HTML and Javascript, but it’s calling upon the original Avatar Displayer SWF file found in the wardrobe. We’re all very excited about the Wardrobe and Vanity being more unified than it was previously – you can see how easily you can switch back and forth to customize your character’s entire appearance on the fly without needing to wait for each module to load independently. Enjoy!

Fun With Logos

Ladies and gentleglitchen, I’m very proud to unveil a very special something from a very special someone…

Our new official logo created by none other than Kukubee himself as his own personal contribution to our efforts!

Eleven Logo

 

We’ll be working to get this integrated into the game and rolled out to our website and social media outlets, so be on the lookout!

-Kaiyon

Weekend Whimsy

This is the tiniest of tiny updates. Feel free to pelt me with rotten cloudberries if this post gets you unduly excited. 😉

If you visit our homepage, we now have a favicon – it’s a symbol from one of our beloved giants! I can’t tell you which one, because it’s going to be different every time you refresh the page!

Thank Tii!

We thought it would be a fun way to honor our giants, who are still out there adventuring.  We’re hoping they return for a nice long sleep soon, so we can fill their dreams once again.

Many thanks to Veralidaine for designing the icons!

Unique Challenges

Seems your chief chicken tamer has been quiet for over two months.  Seems a good time to change that.

We’ve been asked with increasing frequency about a time line for an alpha test, and, while my previous post highlighted some of the tasks that sit between us and opening up, I haven’t touched on some of the challenges that a team like ours has to face which make even rough estimates on a timeline neatly impossible until we’re much closer to that goal.  What I’m talking about here is at the very nature of this project; we’re a volunteer only operation made up of rabid fans.

Volunteers
Every single person on the team is working on it as a labor of love. We don’t get paid for it (nor do we want to be currently, before offers of funding start flowing in), and just about anyone with a desire and applicable skill sets are welcome to contribute.  This leads us to a few of our major challenging points; availability, disappearances and missing skills.

Availability
Most of the team hold down full time day jobs (myself included) or attend school at the university level full time, with at least one notable exception. Bundle that with some having familial (I’ve got a wife and 2 small children, personally) or other outside obligations, and some of us are lucky to find spare time to work on the project in a given week. If we had even a handful of skilled people that could dedicate their efforts full-time to the project, things would move along a lot faster. In fact, Aroha has recently had the fortune to be able to devote nearly a full time effort, split with a personal project, and has helped advance several tasks much faster than would have otherwise happened. On the flip side, final exams, school projects, moving and starting new jobs (something I’m personally in the middle of) have caused several key team members to lessen their contributions significantly over the past few months.

Disappearances
If you look at the number of people we’ve brought into our team (91), you’d think we’d have enough people to move things along at a decent pace. Unfortunately, only 20 or so have actually continued to contribute past their initial excitement. It’s hard to say what exactly causes this to happen. Perhaps they find they don’t have as much time as they thought they did, aren’t quite as skilled as they thought, or maybe they just lose interest.  Either way, it can be difficult to deal with someone disappearing without notice, especially if they had a desired skill or had committed to a task already.  Unlike a paid job, the incentive to keep us up-to-date on what’s going on doesn’t seem to exist for some. Fortunately, we haven’t had to deal with this situation too many times, but it has caused some setbacks.

Missing skills
There are a very talented group of people committed to getting this project completed, which is amazing; there are a few areas where the skill sets are missing or held by too few team members (or team members that aren’t able to contribute a significant amount of time).  A couple examples of this situation are graphic design and significant AS3 experience.

Butting heads
I honestly think we’ve been incredibly lucky with regards to how well our team gets along, even though the occasional disagreement had occurred. So, while this hasn’t been a huge issue, there has been at least one notable exception where someone didn’t mesh well enough with the group that they felt they had to leave the project. It was an unfortunate situation, but I was quite happy that it was able to be resolved in a very peaceful manner, and I’m quite hopeful that we won’t see any worse situations in the future.

Internationalization
While it seems most of the team is based in the US, there are a good number of team members hailing from other countries around the world, including, but not limited to, Germany, the UK and Brazil. You’d think the time zone and language barriers would be a bigger obstacle, but aside from some people mentioning where they’re from or that they don’t know the best way to say something, you’d hardly be able to tell.

Managing expectations
Everyone is excited, probably our team more than most. Truth is, this is a massive undertaking, and, especially when you take some of the above into account, it’s going to take time. We have some talented and driven people working on it, but that won’t make it go that much quicker. The only realistic way to get things done faster would be to have all of us quit our current jobs/school and find a way to get paid fair wages from this project, which isn’t something that we want to do and don’t feel is viable long term. If you look closely at the discussions that Tiny Speck had regarding the shut down, you’ll see that the game had to not only support a current staff level at a fair wage, but also compensate for the time in development when no money was coming in. This is a hole we’d prefer not to get ourselves in, and if we decide to build up a paid team at some point, it would likely be under a different kind if structure to help make the game more viable.

So, while we know you’re all excited to get in and play, it’s going to take some time. Don’t worry though, our key contributors are very committed to making this happen; when we finally let you in, be certain that we’re giving you the best built game we can. Tiny Speck gave us a great starting point from which to rebuild Ur.

Dev Log 1: Hunting for Leaks

In the Pre-Game Show post, Justin mentioned memory issues in our current game server, which required frequent restarts during the recording of the video because the server became unresponsive. Even though this is just a prototype, we decided to look into these problems — otherwise, we would just make the same mistakes again later.

To reproduce the situation without needing a bunch of real people to log on to a server and do stuff, we have a fairly simple script that simulates that: A set number of fake players that log in one by one (in the same location), and immediately start moving around without pause. The continuous movement causes a non-stop flow of messages from the clients to the server, which makes problems bubble up more quickly than in real-world use.

Monitoring the game server process memory usage while running that script resulted in this diagram:

During the login phase, things still look more or less normal, and memory usage ramps up from below 200mb to ~350mb. After the fifth login though, something bad happens: The garbage collector starts a big cleanup cycle, and manages to free up over 100mb of memory — but it takes more than a minute to do that, making the server completely unresponsive during that time.

Following that, the players can continue running around (but memory is being consumed at an alarming rate), until it all comes to a grinding halt again, this time for over three minutes. Finally, it all goes pear-shaped and the server process just crashes (that’s where the graphs abruptly end towards the right).

In order to find out what is consuming memory so quickly, we first tried an analytic approach: Taking snapshots of the server process memory before and after certain operations (e.g. a player moving once), and comparing these snapshots. Unfortunately, this did not lead to any useful results, as there are a lot of unrelated things “going on” within the process even during short time intervals, making it very difficult to spot the changes relevant to our problem.

Instead, we had to switch to a somewhat more painful empiric approach: Removing “suspicious” parts of the code, bit by bit, and repeatedly running the aforementioned script, while closely watching for significant changes in the memory usage patterns. As you can imagine, this gets quite tedious after a while. While googling for less frustrating ways to solve such problems, I came across this half-joking remark by Ben Noordhuis (a long-time core node.js contributor), which I wholeheartedly agree with:

Tracking down memory leaks in garbage-collected environments is one of the great unsolved problems of our generation.

Eventually, we did find the culprit. A slightly simplified explanation: All of the game objects (players, items, locations etc.) are wrapped in a “persistence proxy” when they are loaded, which tells the persistence layer to save the object whenever it changes. When a nested property of an object is accessed (e.g. player.metabolics.energy or player.stats.xp), such a proxy has to be created for the subordinate layers (metabolics or stats in this example). Our mistake was creating these proxies on every access, instead of just once and keeping them around. Really obvious once you know it (as is often the case with bugs)!

After a pretty simple fix, the script produced much more pleasant results:

Looking good! Now, off to make this work for more than five players…

Still here!

Hey everyone! I realize it has been quiet this month. Our team members have had lots of real life obstacles to contend with, including new jobs, moving, and final exams. We have been making some progress in the webapp, authentication, god pages, and server code. Nearly everyone will be back to work around mid-May though! I am very excited to be able to focus on Eleven full-time again soon, as is the rest of the team!

Keep imagining the future with us!

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.

%d bloggers like this: