While 2014 up to this point was mostly dominated by the Crossword Dungeon AS3/Starling port, I am taking a short break from that project to collect my thoughts as well as player feedback. I’ve started another project and have a new direction in mind for 2014, details of which follow, roughly in chronological order:
I am happy to announce the latest and greatest update to Crossword Dungeon, version 1.1, is now available for iPhone and iPad on the App Store! A thorough list of changes can be found here. Reviews and ratings, as always, are greatly appreciated!
These simple procedurally-generated Space Invaders-style sprites were directly inspired by Jared Tarbell’s classic Invader Fractal. The concept is straightforward: start with a grid of a set width and height (3×5 works well), and mirror on the x all tiles except for the center one. You can see it in action here and grab the source code from GitHub.
If you, like me, have been using Zwoptex to create your spritesheets for Starling or Sparrow, you might have noticed a distinct lack of trim support. That is, Zwoptex claims to be trimming your files, but the resulting XML does not include any such trim data. Use the following file to fix this pesky problem:
The long-in-coming 1.1 update to Crossword Dungeon is currently in the works. The main focus of this update is to bring the game to iPad with Universal support, as well as adding 200+ more words, fixing bugs, improving performance, and tweaking the balance.
Since Cocos2d iPhone’s OpenGL is only capable of repeating textures that have dimensions which are a power of two, I’ve put together a quick-and-dirty algorithm to tile arbitrarily-sized sprites to arbitrary sizes. TiledSprite takes a source sprite with a texture from a file or a subtexture from an atlas, and clips and/or tiles to fit the requested width and height. The source code is available on GitHub as a Gist, just copy-paste it, download it, or clone the repo and grab the .h and .m for use in your project.
In developing an algorithm to generate nodes that are guaranteed to be within a certain distance of each other, I stumbled over this interesting distribution of particles which were initially placed randomly then moved near their nearest neighbor. I’ve dubbed this particle system “Neural Particle Deposition” on account of the organic, neuron-like shapes it produces. Take a look:
And now for something completely different: dissatisfied with other Spanish translations of Lewis Carroll’s Jabberwocky, I’ve taken a stab at it myself, adhering to the following guidelines:
- Most importantly, the spirit, tone, and setting must be maintained.
- The Spanish version should not feel like a translation.
- The structure, rhyme, and cadence must be maintained.
- The meaning must be preserved as closely as possible.
- Nonsense words must be translate into similarly evocative nonsense.
I’ve codenamed my current project “Adventurers“, which, although somewhat telling of its theme, should give little away of its mechanics. Needless to say, adventurers will be involved, and there will be adventuring. It’s being developed in Objective-C and Cocos2d 2.0 for iOS, with iPad support from the get-go.
This name generator takes a seed of similar sounding names (or any words), and generates a new set of names based on the likelihood that one letter follows another in the original set. It picks the first and last letter, generates the letters in between, best-matches the second-to-last letter, and runs post-generation triple-letter and Damerau–Levenshtein checks to ensure uniformity with the seed.
Developing and releasing Crossword Dungeon has been an amazing learning experience. Mobile, iOS, Objective C, Cocos2d, and a solo commercial release were all personal firsts, and releasing within a fairly tight window (for personal and motivation reasons) meant a good number of items slipped by untested. Update 1.0.1 has been submitted to the App Store for review, and contains the following changes:
Crossword Dungeon is a roguelike-like in which your character traverses a procedurally-generated crossword dungeon, wherein guessing the correct letter results in a critical hit to the monster on the tile, and the incorrect letter in trading blows with the aforementioned baddie.
During the past few weeks, I’ve kicked the development efforts of my latest project— sneak peek below— into overdrive, targeting a completion date of end of August/beginning of September. Here are some updates of note having taken place during this period of relative blog and Twitter silence:
Here’s something you’re likely to have run across: the player character is in the center of the screen, and you want it to move in the cardinal direction you click, relative to its position—clicking above it moves north, below south, to the right east, and to the left west.
I’ve implemented this control scheme in my current project, settling on the following technique after a less-than-elegant implementation relying heavily on if-elses:
Even though reception for The Adventurer’s Guild has been excellent, a few bugs, especially one particularly fatal one, have stopped players from diving as deeply as possible. These bugs are no longer.
I have uploaded an updated version in which I was careful not to fiddle with any game balance issues so as to keep with the spirit of the 7-day roguelike challenge. Here are the details:
His current focus is on refactoring the backend by adding better model classes, revamping the data layer access layer with PDO and Memcache, and cleaner database access in general (I will admit to having a good amount of queries strewn about at the controller or even view level).
In the months since my foray into game design and development podcasts, I’ve expanded my playlist to include a few new podcast gems. These podcasts run the gamut from casual game conversations by players and journalists to insights into the inner workings of some of my favorite studios, tabletop RPG discussions, and, for a change of pace, writing-related topics:
Comet describes a number of techniques with which a web server may push information to a client in a non-transactional format. Long Polling is one of such techniques, in which a browser’s request remains open until the server has information to send.
Long Polling is particularly useful in semi-synchronous applications, such as chat rooms and turn-based games, and is straightforward to implement with PHP and jQuery:
Hark not, the lack of updates on the Legends of Aesthir project does not mean progress has halted, only briefly paused (mostly on account of Skyrim). In retrospect, having set a hard deadline for completion of the minimum viable product was unwise, since I had little room to play with either the scope or the timeline (and, as with anything fairly complex, something always has to give).
In any case, these are the items from the roadmap that I managed to complete:
Whereas the focus in the past few weeks has been in tightening up the interface, the focus for the coming weeks will be on getting Legends of Aesthir to a playable state.
MDA: A Formal Approach to Game Design and Game Research is a paper borne out of talks and workshops given by its writers, Robin Hunicke, Marc LeBlanc, and Robert Zubek, with the aim to formalize the understanding of games by splitting them into three parts: Mechanics, Dynamics, and Aesthetics.
With the latest design and UI update to Legends of Aesthir comes the opening of registrations for the playable game. The registration is, at the moment, a means of collecting the information of prospective alpha testers, but, as you can see by the presence of the login area, development continues steadily!
Legends of Aesthir is a web-based, collectible-card game I’ve been working on for the past few months. Development progress has been fairly quiet so far, but that is about to change with the latest interface redesign, with which I am extremely happy!
It’s finally here! The Color Guessing Game— where you can both test how quickly you can type out color names, and how imaginative you dare to be. Common color names are worth the least points, while rare and unorthodox “colors” will net you the most. Be as creative as you dare; if your guessed color is not found, assign it to a swatch at the end of the game so that it can be added!
Announcing The Color Guessing Game! A Flash and Papervision3D-driven word game where you battle against the clock to name as many colors as you can remember. Rare colors, those which have only been guessed by a handful of other players, net you the most points, and common colors a meager offering. If the color is not in the system, assign it to a swatch at the end of the game so that it can be added to the list!
What do you get when you put 11 randomly-matched game developers, artists, and musicians together and ask them to create a game in 48 hours around the theme of “extinction”?
With the v0.6.136 release, Dance of Death began its movement towards a more wilderness-survival-centered gameplay rather than the dungeon crawling of traditional roguelikes. I loves me a good dungeon crawl, but what I can really sink my teeth into is an open world where your progress is only limited by your character’s skills. That, and post-apocalyptic settings.
Fresh out of the oven, my first entry into an nDRL challenge (a 4DRL, no less), Chronophase!
These last four days have been really intense. Tough choices could not be awarded the luxury of a night’s sleep, as I normally prefer; they had to be resolved within the minute. It really gets down to the core of what game design and development is all about.
I have officially entered into the 4DRL (4-day roguelike) challenge as of yesterday, with a space-based roguelike, Chronophase. I have been kicking around the idea for a space-based roguelike for a while, and what better time to tackle it than a 4-day-cut-the-fat-and-focus-on-what’s-important challenge?
A large part of Dance of Death v0.6.136 was the addition of world generation. Although the world is little more than a large island at the moment, the results are rather satisfying, even considering that the current method of generating terrain is purely based on elevation. After experimenting with a number of techniques, I settled on this simple formula: 1) Generate Fractal Perlin Noise, 2) Multiply noise by a radial gradient, and 3) Apply terrain and water line. Here is the breakdown:
Today, on the first Annual Roguelike Release Party, I am honored to bring you the latest update to Dance of Death, version 0.6. This has been one of the longest iterations to date, implementing a number of major features focusing on world and wilderness generation. I am extremely pleased with the outcome of this version, and though I have my work cut out for me moving forward, feedback is, as always, very much appreciated!
This September 19th, the first Annual Roguelike Release Party will take place. Not quite a literal party, the ARRP is a community-driven event in which roguelike developers are encouraged to put out a release with the intention of garnering, among much fame and fortune, increased visibility and feedback. As of now, there are 24 entries in the official announcement page, including Dance of Death version 0.6.
The goals for the Dance of Death v0.6 release revolve predominantly around world generation, wilderness generation, and integrating these radically new features into the existing game. No small task, by any means, which is why I have devoted an entire version to this set of features, and also why I have made the decision to scale back on three non-essential items:
With version 0.5.102, Dance of Death reached a stable point and is ready for its next major features: the world map and wilderness. I definitely have my work cut out for me for 0.6, and though the goals list below is short, it is a meaty one.
In addition to wilderness generation, v0.6 will begin to reflect the results of a recent discussion in r.g.r.d. regarding gender bonuses and the social responsibilities of game developers at large.
The iterative development process has been a real blessing for the health of Dance of Death. Releasing early and often has allowed me to keep the project’s momentum going, as well as make tough decisions about what gets done for each section, and how.
One of these such decisions has been to move what was once the #1 item on this list, wilderness generation, to the next release after 0.5.
Announcing the release of Dance of Death v0.4.89!
Among the features for this version you’ll find custom keyboard mapping, international keyboard support, ranged combat, and game saving and loading.
In the past few months, Dance of Death has seen rocky progress. Development momentum came to a crawl while I took a brief break after work got particularly busy with an Oracle/Ironman 2 project that completely tapped my AS3 mana reserves for a few weeks.
Recently, however, I’ve made slow but steady progress, and am down to the last two features for version 0.4!
Normally, in regaining momentum for a project, I’ll pick it back up and work on small-ticket items just to get into the groove again, then work my way into the larger items. Though this time I have done the opposite, I finally have a handle on one of the larger features for version 0.4: custom keymapping.
In lieu of a particularly busy last few weeks at work, I’ve taken a quick break from programming for a bit. I can honestly say that I have seen code in my dreams in the past, and that’s something I’d like to avoid in the present!
So for the most part, I’ve been kicking back and playing plenty of games.
Now that Dance of Death has moved into alpha stage, some critical features need to be tied up. Save/Load, world permanence, custom keybindings, ranged combat, international keyboard support, and a few interface changes are among the items which I’ll be working on for version 0.4.
It’s finally here! Dance of Death has officially entered into alpha territory, with version 0.3.60— playable and winnable.
This has been the largest iteration to date, and also the most feature-packed one, with a good number of engine, interface, and content updates.
The past two weeks or so, Google Analytics started to report incoming traffic from the Something Awful Forums (forums.somethingawful.com), directly into /dod. Across the past few days, this has become the 5th most popular referrer into the Dance of Death page specifically. The trouble is, I don’t recall having posted on the forums, nor am I able to find the source!
Back in my university days, I fondly recall when our professor for Structured Computer Organization, a seasoned computer scientist who worked on the EDSAC 1 back in the days of yore, asked, “Have any of you worked with Assembly?”. Having had the odd run-in with some flavors Assembly in previous microprogramming classes, I raised my hand.
In these early stages of development of Dance of Death, I definitely have my work cut out for me. I’m also grateful to have received such great feedback from the roguelike community, much of which has helped me determine development priorities.
Announcing the latest release of Dance of Death, version 0.2.23! This release continues to build up the main engine, and has at its core the new Character Creation system.
At this point, the game is still in a “tech demo” stage, insofar as not having a winning condition, and a number of incomplete or unimplemented features.
Development of Dance of Death is alive and well! This past week, I’ve been spending time in the roguelike community, playing games in development to get inspiration, and checking off items on my To-Do list for the upcoming release. Most of the items have been straightforward and painless, and I have left the best (and toughest) for last: character creation.
A few days ago, I stumbled upon the Wikipedia Article on Bézier Curves. As a fan of procedurally generated art, when I saw the fifth-order Bézier curve animation within that article, I was inspired to attempt my own Bézier curve drawing algorithm. This is what happened. In this article, on ANidea, I break down a basic Bézier curve algorithm and show how it can be generalized to create Nth order Bézier curves.
Although I have worked on two (albeit short-lived) roguelikes prior to Dance of Death, this is the first to feature a dungeon generation algorithm. While it relies greatly on brute force searches, especially for connectivity, I am quite happy with it, and it definitely gets the job done!
Firstly, I’d like to thank everyone who has taken the time to tinker with the first release of Dance of Death.
Although I’ve been able to get away with some major oversights given the fact that it is an early tech demo, I appreciate that you have pointed out potential areas for advancements and some items I entirely missed.
I am proud to announce the first playable release of Dance of Death! It requires Flash 10 to run, and, for the time being, a decent size screen.
Since I am taking the “release early, release often” approach, you’ll find with this release is a very early build of the engine, featuring basic dungeon generation, FOV, monster generation, item generation, and very basic combat.
Eons ago, in a long-fotgotten era that some call “the nineties”, I had my first exposure to a programming language. mIRC, the internet relay chat client for Windows, included a feature-rich scripting language that allowed you to not only customize the interface or have user events trigger custom functionality, but to develop entirely unrelated applications parsed, interpreted, and executed by the mIRC “virtual machine”. Aesthir was born.
In light of the announcement of 37signals‘ new book, Rework, I feel compelled to recommend easily the best book I have read on the topic of project management, application development, beta releases, managing feedback, avoiding scope creep, communication overhead, and pretty much everything that is involved in working in a development team: Getting Real.
The driving force behind the Dance of Death title and concept was a popular and often resurrected discussion on r.g.r.d.: how to make the warrior class something more interesting than a close-range mage.
In other words, is there a way to differentiate the way a fighter interacts with the world from that of a mage’s?
With the relaunch of this site as a blog comes a piece of great news: I am currently working on a Flash ActionScript 3.0-based roguelike game tentatively titled Dance of Death.
This time I am keeping it simple, staying away from the over-ambitious trap that bogs down so many indie games’ development.