
Show HN: I've been making one HTML5 game per week. Here's my 10th game - lessmilk
http://www.lessmilk.com/10/
======
sillysaurus3
Not sure if you're looking for critique, and giving critique has sometimes
been discouraged on HN, but:

It's pretty good for a week of work. Though there's a difference between being
challenging and being annoying. Many of the level design elements could be
classified as a "dick move." An example would be not making it clear the goal
is to collect _all_ the coins until after the player has bypassed some of them
and reached the end.

In general the controls are too sluggish. It's as if triple buffering is
enabled, or maybe quad buffering. If you're at a university, you should try to
borrow a high speed camera and measure the time difference between when
someone presses the spacebar vs when the character starts to jump. I don't
know if it's a Chrome thing or what, but I fell off cliffs several times due
to the input delay.

The gravity could be better. I'd recommend spending some time with Cave Story
to get a feel for how to make gravity really work in the player's favor,
rather than against them. In general it's a bad idea to make velocity strictly
linear. Some acceleration adds to the experience and precision.

A checkpointing system would be good. I can see how most players will give up
after getting mostly to the end and then dying. I think you should just
restart players from the last point that they were on the ground without
dying, that is, the most recent ledge that they were standing on.

It shows promise. If you're looking for feedback about how to advance as a
game developer, one step would be to make sure you're not rewriting your
entire game engine from scratch for each game. It's excellent that you're
writing your own engines rather than trying to use other people's, so be sure
to keep doing that. It's important for gamedevs to have an idea of the
underlying principles and limitations, and the best way to do that is to write
your own engines. I got the feeling that most of the week was spent on the
engine rather than iterating on the gameplay or level design though. Teaming
up with an artist or a level designer might be a good match.

~~~
lessmilk
Thanks, I love feedback! You make some interesting points.

About input lag, I'm a bit surprised. On my computer the input is super
responsive. Maybe it depends on the OS/browser? I'll have to look into this.

Gravity could definitely be better. I'll look at Cave Story then.

I have only 5 short levels, so adding checkpoint will make the game too easy I
think.

~~~
zheshishei
I'm not a game developer, but I found the jump key to be slightly
inconsistent, specifically pressing jump while running towards a ledge.
Whether or not the jump registers seems to depend on how close to the edge you
are. The closer you are, the less likely the jump is to register.

I guess depending on what you want out of the game mechanics, you could leave
it as is or extend the "range" of a valid jump to slightly beyond the edge
(perhaps half the width of the character). I guess some good questions that
you could ask are: \- Is it a faster paced game where jumping from platform to
platform quickly matters? \- Do you want to focus more on fluid movement and
the ability of the player to think about their moves ahead of time? \- Are
there any gaps in any level where the jump is nigh impossible without
performing a "perfect" jump. If so, is that a feature? (maybe it's supposed to
be that difficult?)

EDIT: I've been looking at the source and I'm pretty sure it has to do with
how Phaser checks whether the character is on solid ground or not
(body.blocked.down). I'm not too sure how it calculates it (I couldn't
understand the SAT.testPolygonPolygon function[1]. If anyone wants to help me
with that, I'd appreciate it). I think the tilt of the character when it's
running potentially makes it worse too.

[1][http://docs.phaser.io/SAT.js.html](http://docs.phaser.io/SAT.js.html) line
605

~~~
panic
Most platformer games actually let you jump for a short time after you run off
the edge of a platform. The lack of this mechanic is what causes the jump to
feel inconsistent.

------
fiblye
I'm a hobby/hopefully someday profitable game developer who recently jumped on
the "develop a short game in X days" bandwagon. My most recently made game was
developed in 2 days [
[https://play.google.com/store/apps/details?id=com.ektomarch....](https://play.google.com/store/apps/details?id=com.ektomarch.PanicCircle)
], and damn did it feel good to get something done that fast!

My current plan is to make a bite-sized game comparable to this at least once
a month (it'd be a little stressful to force myself to come up with something
fresh every single week) and maybe just experiment with small projects with no
plans for completion in between. I also have a long-term project that I'm
expecting will take ~2 years, and honestly, sometimes I feel like I've run out
of ideas. Taking time away from my main project to work on these little
"distractions" actually ends up helping with my main work. I spend less time
idly waiting around for a good idea or solution to a persisting problem, and
more time solving new, smaller problems that can later be applied somewhere
else. Hell, I actually find myself actively switching between tasks every 10
minutes and ending up even more productive than I would be focusing on just
one project. Also, I had no real experience with Unity before this game, and
just taking a couple of days to force myself to learn it opened some doors for
future big projects.

In short, work on tiny projects whenever you find yourself doing nothing. You
might end up more productive or just happier knowing what you're capable of.

~~~
bluedino
What consists of a 'day'? Coming home from work or school and working on it
until 10pm? Spending an entire Saturday pounding away at it?

~~~
fiblye
It was a full Saturday and Sunday of work--about 12-15 hours total. A large
portion of that was adapting to C# and reading up on Unity documentation.

------
WesleyJohnson
I've been following your progress with these games and there are several I
really like, most of which is I think #5 with the cube jumping. I can't sing
you enough praise on posting these as inspiration to others and sticking with
the one game per week timeline. The motivation alone is inspiring.

That said, this one is frustrating. I feel the keys are off. I like to run
before I jump and in some areas, it's not possible because the responsiveness
of the keys just isn't there. It takes too long for my guy to jump after I
press up. Also, it seems like you're possibly doing your left/right code in a
way that gives left priority. If I press both left and right, my guy goes
left. I feel like he should stay stationary in that situation.

Other than that, I like the gameplay, tutorial text that's part of the scene,
the sounds and music. I really like the cube slanting to show motion, too.
Clever.

Keep it up!

------
michael_nielsen
Here's an article with lots of interesting background info from the same
author (lessmilk), "What I learned while doing my 'one game per week'
challenge":

[http://gamasutra.com/blogs/ThomasPalef/20140225/211663/What_...](http://gamasutra.com/blogs/ThomasPalef/20140225/211663/What_I_learned_while_doing_my_quotone_game_per_weekquot_challenge.php)

Worth it especially for the following superb link:

[http://www.gamasutra.com/view/feature/130848/how_to_prototyp...](http://www.gamasutra.com/view/feature/130848/how_to_prototype_a_game_in_under_7_.php?print=1)

~~~
lessmilk
If you subscribe to my newsletter, you'll get an updated version of the
gamasutra article that you linked.

~~~
michael_nielsen
I really enjoy your games and (especially) the tutorial side. Great stuff! But
I have been a bit put off by the frequent plugs for your newsletter. Of
course, you couldn't have known that before commenting here, and so I
hesitated a while before posting this. But I figure it may be a useful data
point.

In any case, I hope you keep up the great work, I'll certainly be following!

------
Brashman
I'm slightly afraid of clicking on game links on HN after 2048.

~~~
biesnecker
Seriously. I thought I was fine until I was reading HN on my phone and thought
to myself "hmmm... I wonder if the game works well on a mobile browser."

It does. #fml

------
lessmilk
OP here. Let me know if you have any questions about my project.

~~~
jaxytee
Any chance you release these on mobile?

~~~
lessmilk
You mean releasing native iOS/Android games? Yes, I'm thinking about it.

~~~
Romoku
You could trying porting the web games using phonegap[0] or titanium[1].

[0] [http://phonegap.com/](http://phonegap.com/)

[1] [http://www.appcelerator.com/titanium/titanium-
sdk/](http://www.appcelerator.com/titanium/titanium-sdk/)

------
tantalor
A significant number of devices on the web _don 't have keyboards_. They use
touch as their primary interface. Please support touch devices.

~~~
codezero
For this kind of experience building project I think it's fine to be a bit
feature limited, however it would be great to try doing at least one touch
only game to help build out other interaction options.

~~~
lessmilk
Game #7 works very well for touch devices.

------
MichaelTieso
How experienced were you before you started? Have you coded before? Any reason
you're not open sourcing your code? Seems like it'd be a great idea
considering you're still learning and could use some feedback from others.
Great job btw. Never heard of Phaser but now looking into it.

~~~
lessmilk
I have a bachelor's degree in computer science, and I coded a few side
projects.

And I'm considering going open source.

------
keerthiko
I'm impressed with the general quality:time-spent ratio.

I think the basic level design and polish steps are fairly well done. Even the
sluggish controls (as a number of people have pointed out) feel more limited
by lack of engineering time than your understanding of what feels good, and I
would guess that through some rigorous testing and closer scrutiny of your
code that could easily be fixed.

However, I think you exhibit some game design anti-patterns. I am referencing
Zileas' List of Game Design Anti-Patterns[1], that I think game designers
should reference more often until it's a quick checklist whenever they design
any game.

Most notably I think Dark Blue succumbs to "False Choice" and "Or We Could
____the Player. "

[1]
[http://forums.na.leagueoflegends.com/board/showthread.php?t=...](http://forums.na.leagueoflegends.com/board/showthread.php?t=293417)

------
eric_h
I think these are the best set of flappy bird clones that have come out yet
(except perhaps the flappy bird orbital game).

Admittedly, only a couple of them truly qualify for that title (annoyingly
difficult gravity games with stupid simple controls), but I think they all
adhere to the same theme - extremely simple game ideas that are nevertheless
compelling.

In the Atari-NES era, technical constraints forced this style of game design
upon developers, and they (well, some of them) still produced compelling games
by focusing on the details of these simple interactions. There are admittedly
somewhat similar constraints on this particular canvas (ahem) but I believe
the tools have evolved so much that you can spend a lot more time on the
mechanics, rather than fitting it into RAM (hence, 10 rather polished 8-bit
style games in 10 weeks).

I think it's good to get back to basics. I played all 10 games, and I enjoyed
it (though the typing game was downright cruel; it's amazing how difficult it
is to read and understand a misspelled word, then type it misspelled, let
alone the gibberish). Well done.

------
tripzilch
Well done! A few bits of constructive criticism, based on my own experiences
with making platformers in GameMaker:

\- you need to fix the gravity so it doesn't feel like it's on the moon. I
used to get the gravity wrong as well, but it makes for so much more fun and
snappy gameplay when you get it right (or actually, a bit _more_ right, cause
nobody really jumps that high anyway).

\- assuming your game logic goes a little something like, if the player is
standing on something solid, they can jump: instead doing that, give the
player a few frames (3-5) of leeway while they still can jump even though they
just walked off a platform ledge. it's a very subtle thing, and if you don't
pay attention you won't see that most platformers do this, but it makes all
the difference in gameplay (if the player feels like they would have totally
made that jump, but drop off the ledge instead, it feels like their character
just stumbled or something).

the last one is also based on one of the golden rules of gameplay: try to make
the game behave as the player wants, which is _not_ always necessarily exactly
how the controls are input.

(the following stuff is not really critique of your game but some things to
keep in mind as you continue)

similar tricks involve making the hitboxes of "good" objects larger than they
actually are, and the hitboxes of "bad" objects smaller (player thinks: "phew!
cool! I _barely_ missed that enemy!!"). btw Flappy Bird subverts this rule,
which makes part of its interesting frustratingness, but as always you gotta
know the rules before you break the rules.

and remember, you can always make your _levels_ harder, if you think such
tricks make it too easy on the player. you'll find that in such cases "harder"
translates to "challenging" instead of "frustrating".

good luck!

------
zhemao
Nice. Reminds me of the game Thomas was Alone.

------
joezo
I love the way the tutorial is part of the background, seamless!

A colleague of mine made a similar type of game a while ago, this reminded me
of that.

[http://www.tyasdev.com/MrBandana/](http://www.tyasdev.com/MrBandana/)

~~~
WesleyJohnson
I can't get through level 2.

------
davbryn
It seems pretty stuttery on Safari running on my Mac, but was fun for a while
- good job!

I didn't actually like the explanations throughout the first few levels:
sometimes it would be nice to figure things out on your own; feels like you
rob the player of the reward for completing the level when you explain it to
them before letting them figure it out? Especially since they can restart
pretty quickly: case in point, let them fall into the red and die early on
rather than explain it?

------
collyw
As a mainly backend developer, I just signed up for the book, realised it
didn't contain too much, but links to the tutorials. I had a quick read. and I
would say it would be more accurate to call the title "One Javascript game per
week". I got a bit excited thinking you could produce that sort of game using
just HTML5.

Hope I don't sound overly critical, as its a cool game and I appreciate you
posting it.

~~~
kibibu
It uses HTML5 canvas and audio APIs.

~~~
collyw
All front end Javascript uses HTML elements.

I thought it meant pure HTML 5.

------
Rusky
Pretty good game for a week. Most quick and/or beginner platformers I see have
a lot of glitches with collision detection and response. You pretty much
nailed it.

Critique-wise, the low end of the variable jump height is a little high, and
if the game lags it messes up the physics (e.g. in the first tunnel of the
last level the player stayed up against the ceiling longer than usual, missing
the platform).

------
aravind_b
A Hack to jump farther and higher in Game#10!!

Try this,

1\. open Game#10 in chrome

2\. Open the web inspector

3\. Go to profiles, choose Record Heap Allocations, and start

4\. Now try playing the game. You should be able to jump farther and higher.
In some levels, even overcome multiple climbs in a single shot than otherwise

Also notice kind of slowdown overall. But not necessarily a drag since all the
key events are still taken in seemingly the same speed

So why is this? Or is it another Chrome one-off?

------
atom-morgan
Thanks a lot for posting this as well as one of your posts I saw a few weeks
ago.

Because of your website I tried making my own simple game with Phaser and
found it to be very fun. For someone who'd never programmed a game before, it
was interesting to see how everything comes together. Just a simple game was
very fulfilling to me.

------
sauravt
@lessmilk, I love all your games. Great Job.

~~~
lessmilk
Thanks a lot! :-)

------
jakobe
This is great! It's incredibly awesome how much you can take away from Mario
and still have a fun game. I love how the rectangle slants to show that you
are moving. The game feels really responsive! (Macbook Air, Safari 7.0.2)

The progression in difficulty seems just right. This is exactly what casual
gaming should be like.

------
deletes
You hit detection is off. It you make a game with pure rectangles the
detection should be completely precise.

~~~
user24
I'm also seeing this issue. Example, I died right after taking this
screenshot: [http://imgur.com/Egy49Kv](http://imgur.com/Egy49Kv)

~~~
diydsp
yes i died catching my breath in the same place. i repeat what person above
said about rectangles meriting perfect collisions.

still a nice diversion. i like the way on my system, several bitmap redraws
occur per screen trace, giving the character a parallelogram shape.
subjectively, it looks like he's in a hurry :)

------
canadev
That was awesome. I finished it. I died 92 times.

The jumping mechanics reminded me of "air control" in strafe jumping in Quake
2. Can you tell I haven't played games much lately?

Love the music. I have had the tab opened for a few minutes now that I'm done
playing just listening to it loop through.

------
yangcanvas
I've seen/played a couple of your earlier games as well as this one. They all
have a good look and feel and are pretty legit mini-games.

I'll also take the opportunity to plug my HTML5 game collection:

[http://yangcanvas.com/arcade](http://yangcanvas.com/arcade)

------
gschier
That's so good for a day. I made a similar game a while ago that took a few
weeks! [http://platformpixels.com/](http://platformpixels.com/)

I would be interested to know what you used for collision detection (If
anything).

------
jonalmeida
After a little self-psychoanalysis I've realized that when I see "this is a
hard level, you can't beat it", it makes me want to try even harder which is a
neat idea to use in more games to get more people playing.

------
Ellipsis753
It's a great game. Just my sort of thing really and I really like the music.
It only took a couple of minutes to beat though so it's a little short. Then
again for a weeks work it's fine. Keep up the good work.

------
OWaz
Have you been writing anywhere about the things you've learnt so far? The
challenges with the framework you've used or anything you started to do to
speed up development?

------
beingProgrammer
I have been trying to write a small game. But after having seen this. Holy
Cow! It's so minimally(don't know if that counts as an adjective) Awesome.
Thanks for sharing.

------
Dogamondo
I may have bagged this game for being way too simple a few weeks ago. But
after Flappy Bird, the genre seems to live on. It's annoyingly great. Keep up
the good work!

------
knackers
Loved the 'artwork'. Simple but immediately familiar. Like some other
commenters, I felt that sometimes my jumps weren't being registered.

------
atulagarwal
I loved the games. They aren't simply demo projects, but real, interesting &
challenging games! Good game play, actually enjoyed them! :)

------
stefan_kendall3
Responsiveness of the controls needs work, but the game was just frustrating
enough. I died 19 times. Not nearly as brutal as super meat boy :P

------
meylingtaing
Don't know if it's just me, but opening up the webpage crashes my browser. I'm
using Firefox on an Ubuntu virtual machine.

------
blinkymach12
These are excellent, well done! Thanks for both documenting your progress and
taking the time to inject character into your games.

------
listic
1\. What do I need to learn to start making games like this? 2\. Is it hard to
make games that fill the browser screen?

------
TrainedMonkey
Beat it. Last level is pretty hard. In order to make important jumps register
press jump first, then start moving.

------
soapdog
This series of games is an inspiration. I decide to take another look into
phaser after seeing your stuff!

------
Havoc
Clever thread title. I bet "one HTML5 game per week" made quite a few people
click on it. :)

------
cyphunk
americans love to be positive but ill just be honest: the game play sucks. a
great project for hitting out code and learning but pretty brutal for actually
game play and enjoyment. but keep banging away at it, im sure a hit will come
out eventually.

------
mehulkar
May favorite part is the sound byte when you finish a level. "Yeaaah"

------
xwowsersx
This game is awesome. I love the "yeeah" at the end of a section.

------
jordan0day
I literally LOL'd at the "yeeeeaahhh" upon level completion.

------
trevoragilbert
Fun game, hooked me for longer than I'd have liked. :)

Curious why you chose HTML5?

------
zakqwy
Easy to learn, difficult to master. Great game, needs more levels.

------
ultimatedelman
can't beat it my ass!

[http://i.imgur.com/xKTvH81.png](http://i.imgur.com/xKTvH81.png)

:) great game. i enjoyed it! very similar to super meat boy

------
pla3rhat3r
Love the spirit of this. Good stuff. Keep building! :)

------
razorsese
Do you make any revenue from it?Or just pure hobby?

~~~
lessmilk
It started as a pure hobby with no revenue. But now that my project is getting
a lot of attention, I might start making iOS/Android apps, or maybe write
ebooks about how to make games.

------
joshferg
reminds me of this game
[http://www.avalanchegame.org/](http://www.avalanchegame.org/)

------
elyrly
Check out MelonJS to beef up the themes

------
juleska
i loved the second one xD ... it sends me back in the atari's days hehehehe,
nice job man.

------
jtcain
Awesome work! Keep it up!

------
watermarkcamera
that's very good ,if can run mobile,it's a good idea!

------
P4u1
kudos man, your creativity is impressive, good work.

------
BostX
GREAT!!!

------
cognivore
It takes longer to load than Skyrim.

~~~
lessmilk
That's the HN effect. Google Analytics tells me that there are more than 600
active visitors on lessmilk right now.

------
Fasebook
Glad to see the technology HTML5 is capable of has come so far.

