Hi. I'm johnfn. Reach me on gmail (same username).
About johnfn (twitter: @thedayturns)
Entries
Ludum Dare 26 | Ludum Dare 25 | Ludum Dare 24 | Ludum Dare 23 |
Ludum Dare 21 | Ludum Dare 19 |
johnfn's Trophies
Archive for the ‘LD #23’ Category
Interest in bi-weekly game jams?
The Ludum Dare is awesome. But rated jams come every 4 months. That’s a long time!
My favorite part about Ludum Dare is getting the ratings – so I know what I did well in, and what I can improve.
My friend and I are thinking about building a website to host more frequent, but lower-key, rated gamejams. It’d have a focus on learning how to improve (I’ve noticed people saying how the comments they got on their games didn’t help them understand out how to get better). Would you be interested in this?
Do you have any other suggestions for cool things you might be interested in?
If this is something that interests you, leave a comment so we can get back to you when we have a decent prototype
Do you like game jams?
Do you REALLY like game jams?
Then you should go subscribe to www.reddit.com/r/gamejams !
I’m trying to build up some support for a little community at reddit where we can share and keep up to date on all the latest game jams and jam related news. If you know of any upcoming game jams, you should definitely go post and help us out. If you don’t, we’d still love to have you!
Bright Worlds Postmortem Part 2 – Right and Wrong
Let’s start off pessimistically. What went wrong??
I’ve been thinking for a bit about exactly what went wrong with Bright Worlds. It’s incredibly tempting to claim that the things that did go wrong were out of my control or would have happened to anyone, and at first I did think that this was the case. But after more consideration I started to think differently.
What went wrong.
- Lack of planning.
This was it. The killer. The big secret to Bright Worlds is that I actually did not design any levels or have even the foggiest notion of what they would be (apart from involving light and dark, of course) like until about 5 hours before the competition was over. I spent the 6th to last hour brainstorming every level design that currently exists in the game. Just for funzies, I uploaded some pics of my notebook where I did this. 
This is what sleep deprivation does to you.
The last 5 hours were a mad rush to implement every one of these maps.
Hah! I bet I tricked you. It turned out that that mad rush was actually totally fine. I managed to get all of those levels in the game. No sweat. I’m a baus. The big problem, though, was that this lack of planning really affected what I had done in the last 1.5 days.
There was a disconnect. I had wasted a ton of time on features that I simply didn’t end up using – what a disappointment. I had sweet particle effects. I had mirrors that would reflect light in interesting directions. I had another enemy type.
On the other hand, when I did the level design I realized that I was going to need some features I didn’t have – particularly glass, a patrolling enemy, and a few other things.
A clear lesson has been learned: A solid starting plan will keep everything in order.
Another thing I did wrong, similar to the first.
- No prioritization.
My game is all over the map in terms of polish. I have that really sweet effect where the sound gets masked when you go into darkness, but controls are clunky. The raycasting and lighting effects look really good, but block movement is only in 16 pixel increments, which a lot of people called me out on.
The reason for this is very simple. When I was keeping my LD todo list, I didn’t have any system of priority at all. That meant that the things that ended up getting done were pretty random. I would just choose something on my list and do it. Now that I’m writing this out, it seems incredibly stupid, but it was true! Later on (last 8 hours) I started to catch on that something was up, and I starred each item from 1-5 stars, forcing myself to work on higher stars before lower. This was a lot better, but it was a bit too late for me to really gain the benefits of this approach.
When I look back on my previous LDs – particularly LD19, as LD21′s notes are sadly lost to me – I had used a website called Workflowy which allowed me to take hierarchical notes and write notes under notes and remarks to myself and stuff like that. Another big benefit of the website over the notebook that I used this time was that when you turn the page of the notebook you’re very likely not to turn it back. This is not really possible on a website, since a page can just keep getting bigger and bigger
I think in the future I’ll use Workflowy again to plan out my game.
Lesson learned: Prioritize your notes.
Final thing.
- Less features, more polish.
I don’t know if anyone is keeping track, but the number of features in my games has been growing exponentially.
LD19:
- Jump bar
- Dark world
LD21:
- Escape / Enemy Avoider
- 1 Enemy type
- Dead Body Dropper
- Boss
LD23:
- HP Bar
- Sanity bar
- 3 enemy types
- Radial light
- Beam light
- Gun
- Pushable blocks
- Powerups and health balls
- Heck, I even had a particle engine and mirrors. They didn’t even make it into the game.
This is absurd!!! Honestly I don’t think anyone even cares about the number of features you have. I think they care more about the polish – it’s easier to immediately see. If you look at the really strong contenders this time around and just count up features, I probably have more, but my game is not nearly as good.
Next time, I’m going to dial down the features and instead work a lot more on polish. Cute animations for everything, nice parallax moving backgrounds, etc. It’s going to be a thing of beauty, I promise you.
Lesson learned: Never underestimate how important polish is, and how important features aren’t.
This has been really pessimistic so far, so I’ll pat myself on the back for a bit here. Things I was happy about with this game include:
- The art. I did significantly better than my last two entries, and I was really happy to see that pan out. (I think I can do even better though
) - The music. This is the first time I’ve had people take notice of the music in the comments, and that’s totally awesome!
- The last two puzzles. I’m not going to spoil them, but I was particularly happy about how they turned out.
- The overall product. As much as I bashed myself up above, I really do think that this was one of my best games I’ve ever made, and even though it’s flaws it’s definitely my best entry to LD.
Thanks for reading. Here’s a link to the game – check it out!
Bright Worlds postmortem, Part I – The Betrayal of Python/Pygame
ahem.
I love Ludum Dare!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Okay. Glad we got that out of the way. Now, let’s talk about my most recent game. Since I’m sure you all are raring to hear about it! I can see the look of intense excitement in your eyes. Good. Sit down in a nice comfy armchair and smoke one of these fine cigars while I tell you a tale of betrayal and rapscallion-ry.
Python. Python is one of my favorite languages. It’s just so easy to bust out code. It instantly alerts you to where any errors are. The code is so much shorter than equivalents in C++ or Java. There’s practically nothing wrong with it.
Or so I thought.
See, turns out Python is actually really slow. (‘What?!’ you exclaim from your armchair. ‘I had no idea!’) Generally, it doesn’t matter. Computers are usually fast enough to compensate for the approximate 30-50x slowdown that python entails, at least for 2D games. The last game I made, Escape Artist, for LD21, was written in python/pygame and it was zippy and smooth.
But what I didn’t anticipate was that the game I was making – Bright Worlds – was going to be really computationally expensive. Bright Worlds in a nutshell is a game involving light simulation. It has radial lights (they go in all directions) and directional lights (go in a single direction). (Incoming technical stuff – feel free to skip to the next paragraph if you don’t understand.) This means that for each light I need to raycast to every point on the map, then calculate the light delta values for that light, then sum up all the deltas across the whole map. This is an O(n^3) operation for those of you familiar with big-O notation. If you’re not, what I’m saying is: this takes a lot of time!
Long story short: Python could only handle about 2 lights on a scene before very visibly lagging.
That’s without doing anything else. I had a sweet particle system that I essentially dumped because python was just too darn slow.
It got even worse, though. From the comments that I’m seeing on my game, the game speed is all over the place. On windows, it runs really fast. On OSX, it’s pretty slow. Lag sucks, and I’m pretty sure that some people are getting a disappointing playing experience.
What a pain.
I love python, and I still do, but this was a huge disappointment.
I didn’t know this, and I couldn’t have anticipated it without actually coding out the game. In the future, I’ll use a faster language. Scala looks pretty promising, so I’ll probably buff up on Scala for the next LD. Another nice benefit of Scala – no porting worries.
So much done, so much left.
Releasing some code.
https://github.com/johnfn/ld23
Right now what we have is a very rudimentary set up for a top-down RPG or platformer in pygame. If that sort of thing seems up your alley, be sure to check it out!
I’m in!!!!!!!
Ludum Dare is awesome. I look forward to it possibly more than anything else. You guys are all awesome, and you make awesome games. Keep it up.
So. This LD is right in the middle of college. But that’s not going to stop me. I’ll just fail all my classes if it comes to that!
Choice utilities:
- Scala! I traditionally favor Python, but I think I’ll switch it up this time. I recently developed a game in Scala and it was surprisingly fun. It felt like Python with type checking. Plus, Java is cross platform so I won’t have any more porting headaches. That was always one of the worst parts about Python (and having to do it after the game was done, when I just wanted to sleep – ugh!) update: I didn’t actually use scala. Probably a huge mistake
- Graphics Gale – for busting out ze pixels in record time.
- FL Studio or Garage Band – I’ve been working on music recently, and it’s one of my goals to score well in the audio category.
- sfxr – This thing is invaluable.
- Coffee – sooo much coffee.
- Sleep – hah, who needs it in LD?
My goal continues to be humble: BEAT NOTCH.
I also want to aim a little higher in the audio and graphics categories than before. I tend to be pretty lazy about graphics – aiming to change this



