Show HN: I spent two years working on an HTML5 game. I finally released it
ektomarch.com
ektomarch.com
I tried to get it out fast and just barely tested it, but it should be stable. The demo has three bosses, ~25 areas, and a good taste of the gameplay.
My server seems to be intermittently dying, so Chrome Store link for anybody interested in purchasing (buying through my site would be preferable, though): https://chrome.google.com/webstore/detail/subbania/epnejcjdg...
The demo now lets players skip cutscenes by hitting the Enter/Return key. Z/X/C (or 1/2/3 if you don't have a QWERTY keyboard) control actions and the arrow keys control movement.
I think you should give the option to the user to skip the cut scenes altogether.
Is holding X to skip through dialogue not enough? Because I could re-add skipping.
I only kept going because so many people here praised the art style (which is brilliant, by the way).
Pacing. Pacing. Pacing. Three cutscenes in a row isn't a video game, it's a lecture :)
(Probably too long for the game, hard to judge.)
For a demo, I think the ideal length would be under 5s, just to show the artistic style. :)
I knew that obscuring the source code wouldn't do anything to prevent piracy, so I figured I'd just leave it as is so people can see how I did things.
I did make a little note at the bottom of the page about the possibility and I'd hoped it wouldn't happen, but I hope everybody who has a problem tells me as soon as possible.
this.img.src = this.img.src.replace(/Fish[a-zA-Z0-9]\./, "Fish"+this.direction+".")
It looks like this line is executed on every frame for all fish in the level. For Firefox users who have the Ghostery addon installed, this makes things rather slow because every setting of the src property invokes Ghostery to check whether or not it wants to block the image load.Granted, that should be another reason for me to uninstall Ghostery, but I wanted to let you know.
1. Download Firefox Nightly [1]
2. Install the profiler addon [2]
3. Play the game
4. Press Cmd+Shift+O to open a profile of the most recent few seconds
5. Wade through the tree until you find nsIDOMHTMLImageElement_SetSrc, which is called by <Anonymous>() @ CompletedEnemies.js:2460. This function contains only one line which assigns to the src property of an image, and that's the line I pasted.
[0] https://developer.mozilla.org/en-US/docs/Performance/Profili... [1] http://nightly.mozilla.org/ [2] https://addons.mozilla.org/en-us/firefox/addon/gecko-profile...
I've been working on Ejecta[1] in the past few month. If you want to publish your game on the iPhone/iPad, this could be interesting to you. I'd love to know if (and how well) it works with your game.
My understanding was that the big bottleneck for Javascript on iOS was the inability to use JIT (due to the lack of execute support for code on the stack or heap) and this seems like the perfect opportunity to bypass that issue entirely.
So you spent 2 years developing something, but then didn't even test it for a few days because you wanted to get it out "fast"? I just don't understand this mentality.
I get the title screen. 'x' or return will take me to a map screen, at which nothing happens except music playing.
A back of the envelope calculation suggests that serving the game even on S3 would cost $2 per 1000 players - much less elsewhere (I use 100tb but that's overkill for you).
I don't know if you're keeping track of the conversions - from hit to download and hit to sale - but you should easily make $10 per 1000 hits. $3 is also too low; you're likely to make far more revenue at $5 or $7.
I wouldn't be surprised if this change alone raised your revenue by ten times or more for people not coming from the ultra curious HN crowd.
You also should make the intro more like 10 seconds long at most. Split the intro cutscene up and show it slowly over the levels.
Seriously. You need to do this. I guarantee you're losing at least half the players.
Some other notes from a quick playthrough:
* Shadowing is impressive!
* You should probably scale 2x by default. Full screen is too big and default is too small
* I love the premise of the story
* You should have a visual reaction when you're hit
* Sticking in the same direction as you're firing works but I would limit it to key down, not key hit - let the player turn as normal when they tap fire
* It would be awesome if stalactites fell when you shot them, able to take out enemies
* Unfortunately I closed the game accidentally having gotten this far in the list and couldn't bring myself to button mash through the intro again :)
One last thing; I understand that it's the end of a long project and you just want to get it out. But the hours you spend to get the launch right (marketing, testing, feedback from friends etc) are critically important to the success of the product as a whole.
They're easily worth 10x as much to the bottom line as the hours you spend hacking away in the middle of the project. Single changes can have a 20% or 50% or 100% impact on sales.
I wouldn't try to release quickly and barely test a project I've been working on for two weeks, let alone two years - something to keep in mind so you don't have to learn it the hard way like I (and many others here) did.
In any case, great first project! Do you have a mailing list to sign up to? I'd be interested in hearing about whatever you come up with next.
I clicked on the article link expecting to be able to play something straight away without installing anything, given that it's HTML5. Also considering the epicness of such a personal and time consuming project, I was surprised to find a youtube video, followed by a payment decision.
OTOH if I'd been playing a demo already while while being entertained, converting to a paying customer, would have been much more likely.
I say all this of course, because given what I saw in the video, it looks awesome and want you to be rewarded as much as possible for your efforts.
I'm not sure about the cut-scene advice. Yes - I can see you loosing players but It's part of what makes this game feel very retro. Sure, you could tweak it a bit and do the cut scenes a bit shorter. Also you should add an option of skipping the cut-scenes alltogether. I did a replay of the first part and would happilly trade x-x-x with a single escape press.
Agree with the @reitzensteinm. You should have visual reaction to hit. I was kind of expecting it since you had a lot of other visual effects such as screen shake etc.
You've done an amazing job. Do you have a twitter account we could follow? app.net?
Regardless, they should be ruthlessly expunged from the demo. :)
I'll work on this. My website seems to be handling the strain better than I'd expected, so I really have no excuse.
>$3 is also too low; you're likely to make far more revenue at $5 or $7.
I actually tested it at $3.99 when I first submitted it. Nobody was buying it at all, so I dropped it to $2.99 and quickly made my first few sales. It could probably also be attributed to my lack of a demo during this period, though, but I'm pretty certain the price drop had a non-negligible effect. Maybe $3.99 is just an ugly number?
>You also should make the intro more like 10 seconds long at most. Split the intro cutscene up and show it slowly over the levels.
This is honestly something I struggled with. I didn't want an overly long intro, but at the same time I wanted an intro that'd let the player know what's going on immediately. I couldn't find any other way to pace it, so I loaded it up front and towards the end with the meatiest part of the gameplay in the middle fairly uninterrupted. I probably did lose some of the customers who play games exclusively for the action, but my main goal was to make something that wasn't necessarily complex gameplay-wise, but had a decent plot to help string it along.
>* Shadowing is impressive!
Most of my initial criticism came from how I did shadows, but I insisted upon keeping them. I'm surprised I've actually received positive multiple comments on it.
>I wouldn't try to release quickly and barely test a project I've been working on for two weeks, let alone two years - something to keep in mind so you don't have to learn it the hard way like I (and many others here) did.
The main game's been extensively tested; the demo was rushed out because I didn't really plan on releasing one. Comments and criticisms will be immediately applied to the demo, but I'll slowly add them into the full game so that I have time to test them more fully. It's also a reason why cutscene skipping isn't in the full game yet--it can sometimes yield weird audio issues.
>In any case, great first project! Do you have a mailing list to sign up to? I'd be interested in hearing about whatever you come up with next.
Nope. I just infrequently update my blog. I only feel comfortable showing my work after I consider it complete, and it's definitely a problem because it's practically impossible to generate hype.
Something you didn't mention, but something I definitely need to work on, is my writing and organization. If I hadn't spent all my time throwing random elements of the game together at arbitrary points in time, I could easily make something of this caliber every few months.
And thanks for the advice.
Q.) "I’m really interested in the game, but dont want to support paypal. Is there any other method of purchase?"
A.) "The only easy way for me to distribute through my own site was with Paypal. I did have Amazon Payments, but Amazon randomly locked down my account for reasons unbeknownst to me and they only gave me generic automated responses."
This is becoming a habit.
Javascript was nothing but pure bliss to work with, but the browsers were hell. Overall I know I'm definitely going to keep making short, simple games with javascript because it's a wonderful tool for the job. Long-term projects are a bit risky due to browser issues, so this'll probably be my last huge game with the language (sadly). If you're planning on doing a 2D game, javascript is a great language. Flash would still be "best" at this point in time due to all the support and speed at which you can create something, but, in a way, the problem solving and brain wracking is what makes development fun.
Unity's something I've been looking into for a while now, so it's a possibility for future projects.
The OS X issues have been screwing me over inside of outside of the browser. Performance dropped like a rock after Snow Leopard, so the real question is whether or not I'll continue using OS X.
I suspect most browsers have improved a lot in the time since then. I'd like to use Javascript for another game soon; I really like the language, despite its rough edges.
node.js?
The closest analog I can think of is ActionScript in Adobe Flash/Air/Flex, but that's not a mast I would lash myself to right now.
It's kinda a drag though because AIR actually provides a fantastic cross-platform solution for desktop apps. Even thought they are in ActionScript, it's extremely similar writing Javascript apps that have model binding.
I feel like I've tried every cross platform environment from AIR to Titanium to Java/QT to RealBasic, to Mono and none of them are quite as easy and predictable to get running as an AIR app. I guess going with straight-up C would be better but nobody on my team has that kind of experience.
Anyway, probably off topic rant, but I think AIR would be a reasonable choice for a desktop game. The main problem with it right now is that it feels like it's gone out of favor and everybody is abandoning the platform.
AIR is a great idea, but it would be way better (for me, at least) if they incorporated a decent HTML/CSS rendering engine that had the same potential as the ones we see on modern browsers.
I totally agree. I actually dabbled in making AIR apps a few years ago and found it just great. It's really the lack of access to the iOS platform that killed AIR for me.
I really do look forward to a future of desktop javascript, though.
You also say this is the last huge game with JS. Why is that?
And the biggest reason is because I can't trust the browsers. They run in a fragile environment that can easily be destroyed by a single update. For example, Chrome refuses to run Subbania unless it's installed as an extension because it directly modifies the pixel contents of the screen; Firefox doesn't. However, the way Chrome forces me to break up my code for "security" reasons also resulted in Firefox not reading keyboard input, which is why I provided separate HTML files for each browser. I'm sure there's some better way of handling it, but I just went with the simplest and most obvious solution.
Its Javascript support is probably what's drawing you to the engine though (I use C#).
I used to be all about HTML5 but after a while I realized that I don't like javascript and I hate dealing with browser quirks. C# Unity is where it's at.
Congratulations on shipping!
The problem for me was that my personal account contained stuff I did not want to share as a game publisher. Now I am trying to use the game account as my main, just to catch up.
You could save time by doing this though, as you say. I'm leaning more towards the idea of reusing code and trusting other peoples engines at this point. But we've all made our own engines and, as other posters have said, this is the guys hobby, and most likely a labour of love.
Lately, I've been spending a crap-load of time coding in JavaScript, and in spite of its obvious quirks (and haters) very much enjoy it. I'll be interested to see how you managed complexity on such a large code base.
Kudos, man: you shipped.
- get the option to skip cutscenes back in - these octopus dudes come way too close. It is too hard to dodge them. - if you get killed, you should start over in the sub-area you were in, and not the main level.
Good luck!
Thanks.
Well done for getting it out, 2 years is a bloody long time!
http://mtgox.com has a shopping cart that is trivial to integrate and allows people to pay with their bitcoins (also buy some if they don't have them yet).
I'm just suggesting alternative mode of payment that would be useful fore some of his customers.
You can set up mtgox cart so that all bitcoins you receive are immediately sold and money transfered to you so the whole process is transparent for the seller. (S)he doesn't have to have any knowledge or interest in bitcoins. You can set price in dollars and the amount the customer should pay in bitcoins is automatically determined.
You'll also get more money for each dollar your customer pays than with PayPal.
was that a stylistic choice only, or are there some performance benefits?
some of the artwork reminds me a lot of Yellow Submarine stuff.
My original reason was that I'm not at all good at working with color, and especially not creating colored sprites. By sticking with black and white I could easily draw images with my tablet and modify them pixel by pixel to look sharp. I eventually came to like the look, so I suppose it's also stylistic.
It wasn't intentionally done for any sort of performance reason, but oddly enough, it kind of ended up that way in the end. If I'd gone with full color sprites, there's no way I would've fit within the 10 MB constraints of the Chrome store. Images with one black and one white compress much better than images with dozens or hundreds of colors.
You could present color in a future sequel or expansion and even use it as a plot device.
Any chance of IE9 or IE10 support? I hear it's pretty fast for 2D games (certainly in my experience it has higher FPS than Chrome and FF)
The doctype detection also seems to drop it into quirks mode. You could probably fix that by using a standards doctype, but you could also just put in the meta tag that forces IE to run in standards mode for quirks documents.
It has the youtubelink & buy now button.
But for me the problem of browser-based games is just that: they're browser-based, and the browser is just not the environment I like to play in.
I'm not familiar with what's involved in porting this to iOS but if you can, you should definitely consider it.
As for an iOS port, it'd be nice, but it's simply not possible without me heavily modifying and diluting the game. Touchscreen controls wouldn't feel comfortable (maybe that's just me) and games of its difficulty and type don't port well. I've played other action-heavy 2D games on iOS, e.g. Dodonpachi, and so much needs to be sacrificed just to make it playable.
If anything, I could maybe attempt an iPad port. There's no way it'd be comfortable on the iPhone, though, and I wouldn't feel right completely killing the difficulty just to make it playable.
I've been writing a little puzzler/platformer using Crafty JS, and it seems to have a pretty flexible approach.
Fair amount of bugs/undocumented behavior, but hey, I can always go straight to the source. :)
However, I probably would recommend something like CraftyJS because it can help take some of the cross-platform troubles off of the developers' shoulders.
Good work!
It's nice you also released your notes for it. ;)
Copy what's displayed.
Then open the main game and do this in the Javascript console: states = JSON.parse(paste your copied data here)
I actually did have that feature in the game, but I deactivated it once it seemed my apparent save corruption issue was gone (didn't want to bring attention to any possible bugginess). I should reactivate it in an update.
Was this the demo or the full version? The last time I tested the full version on Safari (~5 days ago), it ran just fine.
I'll look into it.
Since it uses JS , can I use my 360 pad or am I stuck with keyboard?
You should host a playable demo on your site!
To be clear: It is in no way like mario, perhaps you misclicked?
In this the author said most HTML5 games are pacman, etc. If you look at Bastion for the chrome store, it's a very complex game with great graphics on HTML5.
What about this: http://www.scirra.com/arcade