For those of you who know me, that is not what you might think it means. I finally got the camera working on the 2D HTML5 engine I have started to engineer. It already supports some bells and whistles such as being completely configuration driven, and allows me to build arbitrarily sized maps from sprites. Already it uses a simple painter’s algorithm to make sure that sprites overlap each other in a way that makes senses from the 2D projection. And as of yesterday, I now have the camera following the player around the map, even correctly accounting for the edge of the world map. You can try it out if you want (Left = A, Up = W, Down = S, Right = D, Re-center = X).Continue reading “camera works!”
I guess it makes sense to actually post in detail about project unigon, especially since this is why I created this blog in the first place. There are really two parts to this project; first, there is the motivations underlying the project; and second, there is the intent of the project itself, as it were. I already share a bit of this in the about section of this site, but to quickly recap, my passion is create storytelling experiences. And while my current day job is somewhat related to this, I wanted a more direct outlet to things I care about as a professional.
And like every (indie) developer out there, part and parcel of the process of developing a game (or any product for that matter) is determining what you can create with the resources you have available. And to be frank, even though I have over a decade’s worth of experience as a full-stack engineer, I have little experience developing games. So unlike game professionals who are just reapplying well-honed skills to their pet project, I must develop both the muscles and the application of said muscles. Why do I mention this? Because, part of project unigon is to expose me to the inner-workings of game engines, rendering, and story-telling. And frankly there are a lot of skills I need to hone before I really get this train out of the station. And of course, like any good project I hope that at the end of it I have something that I and others enjoying playing.
So what are the things that I want this game to be about? While I love playing a lot of different game plays, both the style of game that I enjoy and the style of game that I feel I can wrap my brain around the most completely is fantasy-based RPGs. Yes, there is really nothing too innovative here, and honestly, I am pretty okay with that. And after reading a bit of Joseph Kim over at Quarterview, his ideas around +1 Design resonate a lot with me. In a nutshell, he is talking about how to address the question of market differentiation to be competitive. He posits it is more effective to incrementally improve on a current success than try to complete on a revolutionary (and untested) game design. Granted, his insights are drawn more specifically from the mobile game marketplace which is hugely (grossly?) saturated. And since I am not motivated innovate deeply in the game space, I am arguably doing a bit of affirming the consequent, or some other silly fallacy nonsense.
But what kinds of games do I find fun and enriching? That is a long list that spans indie games like Fez!, Closure, Limbo, Journey, Kentucky Route Zero, Super Meat Boy, Dungeons of Dredmore, and Castle Crashers to name a few. And then there are the more main stream examples such as Skyrim, L.A. Noire, Last of Us, Walking Dead, and Assassins Creed II. Of late, I have been re-engergized by the emergence of games like CardHunter and Sorcery! which embody the kinds of gameplay that I find immensely satisfying, albeit for different reasons. CardHunter’s tactical movement with cards is an interesting take on battle mechanics, and Sorcery! which is as much just a good old-fashioned text-based action-adventure wrapped in a unique UX. And of course, if we look at the games where I have spent a lot of time then we need not go farther than Baldur’s Gate, to a lesser extent Perfect World’s NeverWinter, and of course, the undisputed king, BioWare’s DragonAge series. The one common thread is that all of them provide a deep story-telling mechanic set in a world which I personally find deeply satisfying. I am not arguing that these are revolutionary game designs, and that is very much my point. I am not, at least this point in my life, looking to re-invent a genre but instead just get deep into the creation of a deep, high-magic fantasy world.
I left after work yesterday to drive out to Deer Park in hopes of finding clear night skies at its Denver-esque elevation of 5400-feet. I had originally thought to join a star-party down in Goldendale this weekend but I bought tickets to PAX without realizing they conflicted with each other and so opted for my own star-party of one. I arrived around 9:30 at night after driving the last some 10 miles up a side of a mountain in near pitch-black conditions. Upon reaching the entrance to the site I mistakenly took a left instead of a right, which would have taken me to campsites, and instead ended up even further up the mountain near its very top. Given that the stars were already out and rather risk driving up and down dirt roads that strangely had one side mountain and one side pitch black (I discovered the next day on my drive back that there are some very nearly sheer drop-offs at points so I think the decision to stay put a good one.) I decided to park there and just unfurl my sleeping bag in the SUV.
And stars there were a’plenty. While Sequim and Port Townsend obstructed some of the viewing to the north, by and large the entire sky was available to me. It is really hard to describe that feeling when you realize the clouds in the skies are really the Milky Way, itself full of a hundred thousand million stars. And just seeing the constellations and asterisms and how really they do stand out in the sky it is not hard to understand how our ancestors who came upon these patterns in their sky night after night would have eventually come to provide them names and histories unique to each of them. I took a few breaks through the night to get some sleep but the stars were easily seen from inside and I kept just rolling over to look at them. And most happily, I was able to see my old favorite Orion before sunrise as it currently rises out the East along with the Moon.
After watching the sun rise over the Puget Sound from atop the mountain, I then tramped my way down the side of the mountain, following the Three Forks trail that drops 3,300 feet over 4.3 miles where it comes out upon the convergence of three creeks, Cameron Creek, Grand Creek and the Upper Greywolf. Note to self, that which goes downeth must eventually go uppeth. And further note to self, it is better to first go uppeth and then proceed to go downeth than its reverse. Regardless of the fact that I ended my hike drenched in sweat, it is wonderful trek that traverses conifers then the remains of the September 1998 fire and finally down into the very cool shade of deciduous trees. And of course, a day is not complete without a couple of hours sleeping on the beach such as one might find at Dungeness Reserve on the way back from a jam packed night and day.
And an easter egg, cowboy-style.
Kotoba will now be tweeting a few more kanji every day with the aim of better aiding Japanese learners. In particular, Kotoba will begin to tweet kanji based on their JLPT (Japanese Language Proficiency Test) level, 1 through 4. Hopefully this will prove itself useful to those who want to focus on characters more specific to their current level of study.
Additionally, Kotoba originally tweeted kanji randomly selected from its rather large database of said characters. While this could prove interesting for those wanting to stumble upon new Chinese characters, it could at times prove itself to border on useless expect for deep Japanophiles. In order to help better target the randomly selected characters, Kotoba now selects from a pre-filtered set of kanji that include frequency ranking. This frequency ranking is based on the number of occurrences the character appears in modern literature; the smaller the number the more it is used. Again, this will hopefully help refine the utility of our tweets for Japanese learners.
As always, you can still go to http://kotoba.wardosworld.com/character_of_moment to get a random character selected for you if you do not want to wait for the daily tweets.
Luke Hatcher’s excellent write-up on coloring sprites is a bit out of date for the latest version (v0.8.0) of Cocos2D.
Some very minor changes are necessary to get the example to work.
Originally, the tutorial sets both the position and color with the following two lines, or:
[redSprite setPosition:cpv(200, 160)];
[redSprite setRGB:255 :0 :0];
We need to change
setRGB:r :g :b to
[redSprite setPosition:ccp(200, 160)];
That is it to get the example working.