Sign-ups are now open for the final closed beta test of Season of Dreams

January 1st, 2012 by Josh
0

It’s time again for some beta testing. :)

If you care to try out Season of Dreams a little early, and are willing to share your opinion on the game, just join the following Facebook group:

http://www.facebook.com/groups/308381952539720/

Later this week, I’ll be closing the group and posting a link to a beta of the game. I’m interested to hear your thoughts, so please post the following types of feedback on the Facebook group wall after you’ve played it:

  • difficulty (was the game too easy? too hard? did the difficulty progress as you played through each level?)
  • general feedback (what did you like and not like?)
  • bug reports
Posted in beta tests, platformer, Season of Dreams, upcoming games

Tutorial: Continuations in Mozilla Rhino (a JavaScript interpreter for Java)

December 26th, 2011 by Josh
0

I normally post only about my own game development projects, but this is going to be an exception. This is going to be a tutorial on how to use “continuations” (pausing and resuming scripts) in Mozilla Rhino. It took me days to get this to work, because I wasn’t able to find a complete example.

I’ll also be showing, through this example, how to automatically bind all the functions of a given Java class into JavaScript. Thus, any function you write in that class (example: ScriptFunctions.pause()) will be usable as a global function in JavaScript (example: you can call the function from JavaScript simply as pause(). There’s no need to call it as ScriptFunctions.pause()). This is extremely convenient.

Note: My example will be assuming that you will be placing all of your JavaScript code into functions and calling them as you need them (as opposed to having the script do something useful as soon as it’s loaded). For example, imagine that you’re developing an RPG (role-playing game), and your JavaScript file represents an NPC (non-playable character): you can define a JavaScript function “onSpeak()” that will be called when the player speaks to that NPC.

You will need to download and install Rhino from the Mozilla Rhino website, because although Rhino is built into the Java Development Kit (JDK)’s ScriptingEngine, the version of Rhino built-in is outdated and doesn’t support continuations (at this time of writing). So, download the source code from the site, and import it into your project. You should have an org.mozilla.javascript package in your project now that you can import.

Here’s the code to initialize Rhino, load the JavaScript script from a file myscript.js, and bind all the functions in a ScriptFunctions Java class as global functions in JavaScript:

        // init Rhino (JavaScript scripting engine)
        Context cx = Context.enter();
        cx.setOptimizationLevel(-1); // use interpreter mode (necessary for continuations)
        scope = cx.initStandardObjects();

        // load the .js file
    	InputStream is = this.getClass().getResourceAsStream("myscript.js");
    	Reader reader = new InputStreamReader(is);
        cx.evaluateReader(Game.scope, reader, "myscript.js", 1, null);

	// bind all the functions in the ScriptFunctions.java class into JavaScript as global functions
	scope.put("scriptfunctions", scope, new ScriptFunctions());
	cx.evaluateString(scope, " for(var fn in scriptfunctions) { if(typeof scriptfunctions[fn] === 'function') {this[fn] = (function() {var method = scriptfunctions[fn];return function() {return method.apply(scriptfunctions,arguments);};})();}};", "function transferrer", 1, null);

Contents of myscript.js:

function myJSFunction()
{
	// your code to execute before the pause goes here
	pause(); // this is bound to a Java function that does the dirty work of pausing the script/storing the continuation
	// your code to execute after the pause goes here

}

Contents of ScriptFunctions.java (you can define more functions to do whatever you want, but the pause() function is for continuations):


import org.mozilla.javascript.*;

public class ScriptFunctions
{
	public void pause()
	{
        Context cx = Context.enter();
        try {
            ContinuationPending pending = cx.captureContinuation();
            pending.setApplicationState(1);
            throw pending;
        } finally {
            Context.exit();
        }
	}
}

Now, finally, we get to the fun stuff. This Java code will show you how to call your JavaScript function from within your Java code, catch any continuations (“pauses”), and then resume the script execution:

	Function f = (Function)(scope.get("myJSFunction", scope));
	cx.setOptimizationLevel(-1);
	try
	{
		cx.callFunctionWithContinuations(f, scope, new Object[1]);
	}
	catch (ContinuationPending pending)
	{
		System.out.println("The script was paused!");
		System.out.println("Resuming the script...";
		int saved = (Integer)pending.getApplicationState();
		cx.resumeContinuation(pending.getContinuation(), scope, saved);
	}

Of course, in regards to that last chunk of code, there’s not much point in resuming the script as soon as you pause it — I’m doing that for the sake of keeping the example simple. In a real scenario, what you would normally want to do upon catching the ContinuationPending is store the ContinuationPending’s information, and later use that information to resume the script at your leisure.

Useful links for extra reading:
Mozilla’s tutorial on Rhino continuations
Another full example of Rhino continuations (doesn’t load the script from a file, and doesn’t automatically bind a class of functions)
Rhino group on Google Groups (helpful people are here who can answer your questions)
Rhino tag on Stack Overflow (to see if anyone on Stack Overflow has posted a question that can be useful to you)

Posted in programming tutorials

What GameFly is doing wrong (and what they’re doing right)

December 7th, 2011 by Josh
0

I’m going to take a moment today not to talk about game development, but to talk about a company with which gamers are all very familiar: GameFly.

Let me preface this by saying this: I want to link GameFly. I really do. The idea of renting an “unlimited” number of games every month for a flat fee is something I find very useful — in theory. A service like that could theoretically enable gamers to check out new releases before buying, to see whether or not they want to slap down the full $60 each for them, and it could also theoretically enable gamers to try out a large variety of older and niche games they might not otherwise commit to purchasing. There’s a third reason I would ever rent a game instead of purchasing it: to conserve cash by renting it for a couple of nights and go on an all-night gaming binge to consume as much content as possible before I need to return it.

GameFly’s execution, however, prevents any of the three from being a possibility. Here’s why.

Pricing
I realize that, for any product, there’s always going to be some fraction of the population that complains that the product is too expensive. Bear with me; the next section, Shipping Times, will show in greater detail why the current price plans are too high, even if the figures below don’t convince you:

  • 1 game out at a time: $16/month
  • 2 games out a time: $23/month
  • 3 games out a time: $30/month
  • 4 games out a time: $37/month

(I’ve rounded up the five cent marketing ploy on each, so $15.95 becomes $16 and so on)

“One game out at a time” doesn’t give you much sampling power, because, as you’ll see in the next section, you’ll generally be left without a game half the time, unless you’re the type who likes to keep his rentals for more than a week or two at a time. We can assume, then, that most users are going to be going for at least the $23/month, 2-game-at-a-time plan.

Let’s compare that to something like Redbox, who recently started offering game rentals, and, while their back-catalog is certainly lacking, they’re surprisingly well-equipped with new AAA releases. Redbox charges $2/night for a game, but they don’t have any requirement of “you must spend at least $23/month or get nothing at all” like GameFly does– with Redbox, you don’t have to worry about shipping times, so you can literally pick up a game down the street (depending on where your nearest Redbox is, but chances are it’s not far), play it for a day, and bring it back for $2, having the option to rent another game right there if you so choose — no waiting for GameFly to receive your game (which is normally when they ship out your next game, though there are some exceptions that might save you a day or two — I’ll get to that later), and no waiting for your game to actually arrive in your mailbox. It’d take 11.5 rentals to make up the cost of one month’s GameFly subscription — and renting 12 games in a month requires a lot of free time, even assuming you don’t have other games that you’ve had sitting on the shelf waiting to be played. You’re not forced to spend money on rentals during weeks when you don’t really have time to play games. You could argue “sure, but then you only get to play one game at a time, not two,” but, as I’ll get to in a moment, that’s usually the case with GameFly’s 2-games-out-at-a-time plan as well, anyway.

Shipping Times
Here’s the part that really amplifies why GameFly is overpriced for the service you receive.

I’ve tried GameFly’s “10-day” free trial a total of three times now, each time hoping they’d improved their shipping times since the last time I’d tried them. If you could return a game and receive a new one the very next day, or even in two days, GameFly’s 2-games-out-at-once plan at $23/month would be a fair deal. Instead, I’ve observed that it’s a horrible deal for anyone who doesn’t hold onto their games for more than a week or two (even religiously playing a game for one week at a time turns out to be a bad deal). This is because half of your subscription time– the time you’re paying to have two games at your home, your games are somewhere in the mail. GameFly has recently been boasting about having added more shipping centers, but I’m in the midst of my third chance at GameFly, and I’ve seen no improvement whatsoever. Specifically, here’s how it went down (note that I’m located in Wisconsin, so anyone living closer one of GameFly’s shipping centers may have slightly different results):

1. Thursday, December 1st, in the very early hours of the A.M. (before the U.S. Postal Service does their business), I placed my order.
2. Tuesday, December 6th, the games finally arrive.

That’s five days– HALF of my “10-day” free trial– spent waiting for the games to arrive. The return process is even worse, tacking on at least a day, usually two or three, because GameFly generally waits until they receive your current rental before shipping out the next one. The obvious solution here would be to just give users an option on their website to say “hey, I put the game in the mail” and then ship out the next game as soon as that word is received. That, of course, requires some level of trust, in that a user could take that action without even sending the game back, but they’re already taking a huge risk in sending out new release, $60 value games to their users anyway, and it seems to be working out for them, so why not?

To be fair, GameFly recently (as of sometime this year) enacted a new policy where they have some tracking information on the return envelopes, and they’ll ship out your next game soon after the post office scans in the return envelope, thereby notifying GameFly that the shipment is officially on its way. This could still cost you a day in many cases, because what happens if the post office scans your return package after the new games are picked up by the USPS from GameFly’s shipping center? A website notification system would still improve shipping times. And even with this new system in place, there’s still one major caveat: many post offices don’t even have the scanning equipment that tracks and notifies GameFly when the return package has been shipped! If your local post office doesn’t have the equipment, you’re back to GameFly’s previous, even worse shipping times.

So, basically, you only have your games for half the time you’re paying for them. You’re essentially paying $23 per two weeks of having games out. And being a recurring, monthly subscription, you can’t cherry-pick the days or weeks that you want to rent games– it’s either the full month or nothing.

That’s how the shipping times and the prices work against each other. You’re enjoying GameFly’s services for about half the time for which you pay, making $23/month more accurately described as $23/two weeks.

New release availability
The only way I could see GameFly making sense financially, then, is for the gamer who plays only new releases and only until they’ve run through the game once (where the alternative is usually buying the game for $60 for a game they may play again only on rare occasions). To that end, you’re paying around $20 to play through a brand new game when it would otherwise cost you $60 to do so. You could just wait a few months and buy it for $40 in most cases, but if you only want to play while the hype is still high, that may not be your preference, so GameFly seems like the way to go…

…But wait a minute! For popular new releases, GameFly’s demand usually outweighs the supply. You can check this by going to GameFly’s website and visiting the page of the new game you want to rent. See the “Availability” indicator? Chances are it’s “Low,” which means there’s a queue of people waiting for it, and you’re probably not going to see it within the next couple of weeks even if you put it on your list. If it’s “Medium,” you may or may not want to take your chances. Usually, you won’t see “Available Now” until at least a month after the game is released. At that point, price cuts or other deals may already be in effect, and if they’re not, they’re usually right around the corner. For example, Assassin’s Creed: Revelations, one of the most anticipated games of 2011, has been available brand new for $40 just a couple of weeks after its release (at which point GameFly’s availability still registered as Low — I checked).

What GameFly is doing right: used game sales
Given my complete disappointment with GameFly’s rental service, I was shocked when I first purchased a used game from them. GameFly is, in my opinion, the very best place to buy used games (assuming you buy during their sales).

They frequently offer free shipping to non-subscribers (and free shipping is always available to subscribers), which makes shipping cost irrelevant.

Their prices, during sales, are incredible. Last week, I purchased Alice: Madness Returns on sale for $15 (normally $20). The game’s only been out since this summer. Participate in their sales if you can, as they always have something going on with their nightly sales, and they have huge end-of-the-year sales. Even without the sales, though, their prices are still highly competitive: I see right now, GameFly is offering Assassin’s Creed: Revelations for $40, while GameStop, who leads the used sales market, (and from whom you should never buy for reasons even beyond their outrageous pricing, but that’s another story) is offering the same game for $55.

The condition of the games is what really blows my mind, though. Being a rental service, you’d expect to get scratched-up messes that barely play. That couldn’t be further from the reality. First of all, GameFly never ships cases or instruction books out to renters, so those are in like-new condition when you receive them. The cases still have that “new game” feel, and the instruction books still have that freshly-printed scent. The discs, in my experience, have also been in great condition, with hardly a scratch. Perhaps best of all, any DLC codes packaged with the game are unused, making the greatest deterrent to buying a used game no longer applicable.

Summary
In short, GameFly is a great place to buy used games (the best place for doing so, in my opinion), but their rental service sucks.

Posted in random discussion, ranting

A little birdy

November 20th, 2011 by Josh
3

Here’s a bird I drew and animated for Season of Dreams:

(the animation shows up faster [at least in Chrome] than it’s supposed to, by the way, so you can expect that it looks more natural in-game)

Pixel art is definitely not my strongest skill, but I’m satisfied with how this one turned out. It’s probably one of my best animations.

I must admit that I took on some inspiration from a game called Jasper’s Journeys. When I started working on the bird, I needed something to use as a reference to see how the flapping should look, and so I watched a video of the bird in Jasper’s Journeys to get an idea of how someone else successfully animated the flapping process. In the end, my result ended up looking quite a bit like that one.. way more than I had intended. I didn’t trace it or anything like that, though; all I did was observe and draw. Hmmm. Ah well.

Posted in Season of Dreams

Downtime / lost a few blog posts

November 11th, 2011 by Josh
0

A week ago, the server crashed and the webhost lost all the data, so any blog posts I posted in the last two months (since my last backup) have been lost. I don’t think that amounts to more than two or three posts, though, so no worries there.

This is also why the site was down for the past week, if anyone was wondering.

Posted in Uncategorized

Season of Dreams – Trailer #1

August 22nd, 2011 by Josh
0

Here’s the first trailer from Season of Dreams, showcasing gameplay from levels 2 and 3:

Posted in platformer, Season of Dreams, trailers, upcoming games

Does pirating a game make it less fun?

August 6th, 2011 by Josh
0

A couple of nights ago, I purchased Humble Indie Bundle #3. The Humble Indie Bundle, if you haven’t heard, is a five-pack of DRM-free games released by independent developers (well, more than five– several games have been added to the set since its launch), all offered on a “pay what you wish” model. The idea is simple: you choose the price you want to pay ($0.01 minimum, though the average is around $5 to $6), and you divide up where you want your money to go — the developers, your choice of two charities, or to the Humble Indie Bundle organizer(s?).

Ever since I purchased the bundle, I’ve spent nearly all of my daily subway commute playing these games, and they’ve been a lot of fun. Thinking about it, I’ve realized that my fun is boosted tremendously by the fact that I helped out my fellow independent developers and also the Child’s Play charity to some extent.

Upon observing this, I started to ask myself: how much different would the experience be if I had just pirated the games illegally instead? Would the guilt of pirating give a polar opposite effect of the joy of donating? It seems pretty clear to me that it would.

I’ll admit that I’ve pirated games in the past, and when times are tough, I sometimes still do — I know what it’s like to be less fortunate, and when it comes down to paying rent and buying groceries versus keeping the gaming library stocked with the latest AAA titles, sometimes tough decisions need to be made. I don’t believe that being honestly broke should be a barrier to keeping up with modern gaming. I do buy whenever I have a strong certainty that I’ll be able to afford living expenses in the upcoming month, though, and I make a point to avoid pirating independent games, as I know that every purchase DOES make a very direct impact on these developers: nobody becomes an independent game developer because they think they’ll get rich (or if anyone does think that, they’re seriously misguided); this is a business where you’ve really “made it” once you can comfortably put food on your family’s table.

In any case where I’ve pirated a game, though, I’ve noticed that my enjoyment of said game goes down remarkably. Why is this?

Think about it this way. Traditionally, when you buy and play a game, you’re investing two things: time and money. You’ve already spent the money, so if you decide to stop playing after ten minutes, your money went entirely to waste. If you’re playing a pirated commercial game (or perhaps a freeware game), then your only investment is time. In that latter case, it’s much easier to justify giving up on a game right away. When you’ve actually made a purchase, you’re more inclined to give the game a thorough chance before you form your opinion on it. Similarly, you’re probably going to be more patient and soak up the game more thoroughly — checking out sidequests, not skipping cutscenes, trying for achievements, etc. When you’ve made an actual purchase, it’s easier to justify sinking your time into the experience, even if the first two minutes don’t leave you thinking “BEST GAME EVER! MUST KEEP PLAYING!” It’s easier to justify making a reasonable time investment in these cases. And in the case of donationware, you also get a warm feeling of humanitarianism throughout your entire gaming experience.

So yeah, support your [especially independent] game developers, and I think you’ll have more fun in the end.

Posted in random discussion

Handling online payments in games (for microtransactions, subscriptions, etc.)

July 31st, 2011 by Josh
0

Today I’m going to switch up the topic of my posting a bit by writing a small tutorial instead of writing about any of my particular games.

In the increasingly microtransaction-oriented world of online gaming, game developers have a few different options to choose from on who processes their payments. Whether you want to sell virtual in-game items (perhaps a Health Potion or an EXP boost of some sort), or you want to offer your players a virtual expansion pack for purchase, or you want to require your players to pay a monthly (or weekly or annual) subscription fee to even play your game, I hope this article helps you decide which service best suits your needs.

Without further adieu, here’s the list:

PayPal


PayPal is, in my opinion, the best option in most cases for handling in-game item purchases. PayPal’s IPN system is somewhat easy to implement, and definitely easier to implement than most of their other API’s (you’ll want to know PHP or another server-side programming language, though, as well as have web hosting that supports said programming language– but that goes for most of the options in this list).

PayPal’s fees usually end up somewhere between 5% to 10% of the total cut. More specifically, PayPal’s standard fee is $0.30 + 2.9% of the total purchase amount. Note that the fee is taking out of YOUR revenue; the customer is NOT charged the fee. In other words, if you charge your customer $5, they get charged exactly $5, while you receive only about $4.55. It’s not a huge cut (consider how Facebook charges a whopping 30% for their Credits system!), but you’ll at least want to pay it some attention.

If you’re REALLY trying to put the “micro” in “microtransactions” in your game’s business model, however, PayPal offers a “micropayment” system that charges $0.05 + 5%. In this case, as you can see, the flat rate is lower ($0.05 as opposed to $0.30), but the percentage is higher (5% instead of 2.9%). This means PayPal takes a much smaller cut if your payment amount is low– say, $3. If you do the math (and I’m hoping I did it correctly, math being a great weakness of mine), you’ll see that $11.90 is the tipping point at which the micropayment system starts costing you a greater fee. If you’re willing to put a little extra effort into it, you can actually code a system that will use BOTH the micropayment model and PayPal’s regular model, depending on whether the amount is less than $11.90, saving you a few dimes each time you make a transaction. Doing so would involve having two PayPal accounts I believe, but the minor hassle could definitely pay off in the long run.

I should mention that PayPal also has support for subscriptions, which can be useful if you’re developing an MMO of some sort.

Note that you’ll need your own web hosting (one that supports PHP or whatever other programming language you’re going to write your PayPal-handling code in) in order to use PayPal. It’s not really an option for the non-code-savvy, unless you were planning to dish out all of your virtual items by hand, which I definitely wouldn’t recommend as you’ll only annoy your customers.

MochiCoins

MochiMedia, the company known for in-game advertisements in Flash games (and who is now expanding into other useful API’s for Flash games), is now trying to get all up in your microtransaction business. I haven’t worked with MochiCoins before, but it looks like the system is (expectedly) geared toward Flash games, particularly those with unlockable content (i.e., games where you can pay $x to unlock a new set of levels or something) as opposed to consumable items. I could be wrong on that last note, though (let me know in the comments what your experience with MochiCoins has been!).

Authorize.net or PayPal Payments Pro

If you’re looking to process credit card payments directly on your game’s website (without even mentioning “PayPal” or another service anywhere on your site), this is how you do it. It’s going to be very expensive, though: you’ll first need your own dedicated server or VPS (expect to pay at least $50/month, though prices vary wildly). You’ll then need an SSL certificate, which I believe runs no less than $100/year, possibly $200/year. Then, for the actual service you’re going to use, Authorize.net and PayPal’s Website Payments Pro each charge monthly fees, the latter being $30/month. The benefit in all of this is that you’re processing payments directly on your site and not redirecting to PayPal or elsewhere, which can look more professional if you’re a major game development company releasing a AAA title. For the rest of us, it’s not really necessary.

Facebook Credits

Facebook launched their Credits platform to the public earlier this year (2011), and as of this month, they’re actually requiring you to exclusively use Credits in your Facebook games. Why are they forcing you to use Facebook Credits? So they can collect a ridiculous 30% fee. That’s right: for every $100 of in-game items you sell in your Facebook game from now on, you’re only ever going to see $70 of it. Google+ is starting to look like a better alternative, as they’ll be charging less when they launch their own gaming platform (I seem to remember hearing 20%, but I can’t find any articles giving a definite answer at the moment).

Posted in tutorials

Super Orbulite World postmortem

June 25th, 2011 by Josh
0

Super Orbulite World recently celebrated its second birthday, having been released on June 10, 2009.  I feel like writing a quick postmortem, having never really written any for any of my games, so here we go.

 

What went right

RPG elements

One thing very unique to the game is the whole “level up = deal more damage and take more hits” system.  As far as I know, SOW is the only 2D run-and-jump platformer to do this.  It was a novel idea, and I believe I executed it really well.  If a level or boss was too hard, you could make an effort to kill all the enemies you see (for their experience points), allowing you to level up and making the rest of the game easier.

3-zone format: two levels and one boss each

The game is divided into three “zones” or themes, each representing a location in the game’s world: Birth Island, Red River Cave, and Atlantis Island.  Each zone has a different look and different enemies, and each boss has unique characteristics that require you to face them a certain way (for example, the Realmkeeper stresses patience — attacking him many times in succession angers him more, causing his next attack to release many more projectiles which will be harder to dodge).

Rather than go with three or four levels per zone, I just chose two because this is just enough time for you to get a feel for the theme without getting bored of it.  I took inspiration from the Sonic series here: in Sonic the Hedgehog 3 (which has three acts per zone), I always get bored by the third act, versus Sonic 2 which uses two acts per zone and allows you to just get a taste of a zone before moving onto the next theme.

Another goal I set out to accomplish in my level design was to never do the same thing twice; each level must be unique in some way.  Level 1-1 is a very easy intro to the game, level 2-2 is a vertical stage, etc.

Custom levels / modding

I went to some fairly great lengths to make the game modifiable in custom levels.  You could change things such as friction, chaining together a series of levels, and.. I can’t really remember much else.  Anyway, I packaged in a few sample “custom levels,” including a series called “Long Jump,” which was a minigame where the friction was set extremely low and you were to run and time your jump over a very, very long gap (the gap grew longer with each level).   The same level editor I used is also available, being a freeware editor called Mappy.  I wrote support for custom levels directly into the game’s title screen menu, and even added high scores lists for each.  On the SOW website, I wrote (in PHP) an area where players could upload, download, and rate custom levels.  Unfortunately, the game itself wasn’t very widespread across the web, so not many custom levels were ever uploaded.  Another major part of that was accessibility: custom level creation was more of a “power user” thing, considering you had to download the level editor separately, and that any advanced modifications required creating a specific-format text file for your level.

“Demo” mode

The title screen has what’s called a “demo mode,” which is simply the screen where you see the game play itself.  That sort of mode is very popular in 2D platformers and other games alike; one famous example that comes to mind is Super Mario World.  Anyway, this was my first time implementing a demo mode in any of my games, and it was much easier than I had expected.  Basically, all I had to do was save the keyboard input as I played (into a binary file) and read that back in.  I had expected the file size of the replay file would be huge, and that the play would be inaccurate, but nope, everything turned out fine.. except that something went wrong in the Atlantis Island level and the demo actually jumps into a pit repeatedly until it “Game Over”s itself.  Heh.. maybe I saved the wrong demo file as I was recording them or something.

Sound effects

One of the most fun aspects of the development was coming up with sound effects.  There are some pretty silly voiceovers I did.. Janewalker’s “O-m-g whatever!” when you kill her, for example.  For that one I had to modify my voice digitally a bit, but you might find it fun to know that the “NOICE!!” you hear when you pick up a power-up is all me.  Woot.

What went wrong

Difficulty: too hard!

First and foremost, the game was simply too hard for 90+% of the players.  I didn’t realize this until after I released it.  Throughout development, I was creating the game that I wanted to play, so if it was too easy for me, I made it harder, and vice versa.  The problem there is that, as any game developer knows, you end up playing your game a LOT during the development cycle.  By the time the game was finished, my skill level at playing it was (and remains) at an expert+ level.  (Don’t believe me?  When the title screen goes to the Red River Cave level, watch it play!  That stunt took a few tries, but trust me, it’s just as hard as it looks.)  So, in essence, I was designing an expert-level game.  Nowadays, when I’m working on Season of Dreams, I frequently go back to an area after it’s been designed and widen the platforms, shorten the gaps, etc. to explicitly make the game easier.

Art and music

Hey, I’m a programmer/designer, so these were out of my area of expertise.  But for a solo freeware game, I guess it’s not so bad.  If the game were shareware or commercial, you bet I would have hired artists and composers, though.

Conclusion

It’s a pretty decent game, considering I didn’t spend too much time on it (not counting a year hiatus from the project, I’d say it took about two months to complete).  The main problem here was that it was simply too hard for nearly everybody.  Despite that, I think I accomplished some pretty cool stuff with the RPG elements and level design.  I’m taking a few lessons learned from SOW into my new project, Season of Dreams.

Posted in game development, platformer, Super Orbulite World

Winter in Season of Dreams

June 24th, 2011 by Josh
0

Ahh, a new screenshot at last.

I’ve been pretty busy lately with web development, so I’ll give at least partial credit on the lack of updates to that.  I’ve launched one website, Rate Your Landlords.com (created and owned by me), and I’m about to launch another, La Crosse Campus Rentals (co-created/co-owned with a friend from work). Both seek to provide a service to the general public, and neither is quite as exciting as games. But eh, I need money to feed myself.

Back on topic, Season of Dreams is still underway. Here are some of the latest developments:

Art
- I recently hired an artist to draw monsters, of which he’s drawn two so far — the mole you see in the above screenshot, plus a skeleton clown for level 3 that you’ll be seeing at some point.
- I’m in talks with several artists for tilesets and a re-drawing of the main character

Programming
- Just minutes ago, I finally fixed a couple of major bugs with the weather system that had been annoying me. The game is now aesthetically more aligned with what I had intended…

Level Design
- Not a lot going on here lately. Just focusing on the above stuff mainly, but it’s worth noting that level 2 is about 90% complete in its design. Because of a really cool transition effect I have planned, level 2 won’t technically be finished until after I have the tileset for level 3 in hand.

Story
- I’m still not quite satisfied with the story, and I’m trying to come up with some major changes that won’t undo the level/art work that’s been done so far. What I don’t like about the story at this point in time is that it’s not quite deep enough — the characters aren’t three-dimensional, and the overall premise is somewhat cliche. But to change that would be to risk having the game be TOO story-heavy for the Flash game market. It’s quite a balancing act to say the least…

 

Note about the blog: I’ve re-enabled comments for the first time in many months, this time with a new anti-spam plugin.  Hopefully this one works better than the last did.

Posted in Flash games, platformer, Season of Dreams, upcoming games
WordPress SEO fine-tune by Meta SEO Pack from Poradnik Webmastera