eni

LD24

First time LD Jam team

My friend Regus and I will be joining the Jam for our first Ludum Dare. We might be shooting for an online multiplayer game, because realistic expectations are for suckers. Although his time is limited, so if we’re short of good ideas I’ll be flying solo. Either way, the list below applies:

Language: C#
Libraries: XNA
Graphics: Blender, Photoshop, Paint Shop Pro 5
Sound: *fxr, Audacity

Amusingly this will be our first time doing LD but also our first time seriously working together after having known each other for 13 years. So here’s hoping we come up with something good, and not something bad and a broken friendship!

European checking in

So, last night me and Regus, after grumbling about the theme for 5 minutes since it fit none of our ideas brainstormed for an hour and a half and then decided to go to bed. Turns out neither of us slept all that well, ghee wiz whoda thunk! We at least bashed out an interesting idea, which implements some features of evolution and natural selection as gameplay mechanics.

Right now I’m nursing my morning (mid-day) cup of coffee trying to wake up and trying not to think of how much time sleeping took up. Then we’ll bang out design decisions and milestones, I think, and get cracking.

One thing I can already reveal; we’ll be going online. YEEEAAAAAHHHHH!

Tags: coffee, multiplayer, online

End of day 1 progress

End of day 1 has come. I’ve gotten a single facing of the standing player sprite done. We’re displaying the map, but we can’t move the player/camera yet. I’m starting to think we’re not going to get this done in the 72 hours we have. *panic*

On the other hand, the client does connect to the server and retrieves a worldstate, and it generates the appropriate chunks then displays them. Which is pretty damn good for a days work. I’ve also gotten a bunch of the tile art done, which is also good.

Finishing in time seems like an impossible task right now, but we’ve at least still got two more days to go…

Tags: panic, progress, screenshot

Second day jam round up

Kind of lame in between all the “finished!” posts, but our jam project is still in full swing. Current features:

  • Randomly generated theoretically infinite terrain with houses that have door openings, shelves and tables.
  • Being able to log on to the server and seeing other players move around, fully animated.
  • Mouse based A* pathfinding mouse movement.
  • Auto dirt to grass tile transitions.

Note the depressing lack of gameplay features. I’m pretty sure at this point we overshot and we’re not going to make it in time. Oh well, lesson learned if it’s so, I guess! Still the fact that we managed to get this much done in a server/client architecture in two days is impressive.

Now for an art dump.

And last but not least, today’s dinner:

Tags: food, multiplayer, progress

The Joining – 3 Day MMO Postmortem

So, for our first Ludum Dare ever me and Regus made The Joining, a centrally hosted 2D shooter MMO. Against all expectations, including my own, we made a relatively complete game by jam’s end. Unfortunately a 3-day-mmo is kind of like 5-minute-cake, a cool idea, worth doing to be able to say it’s doable, but the end result is infinitely less satisfying than what you’d get if you put the proper amount of time in. While running around pewpewing evil robots is fun, a lack of players and general aim and finetuning makes it only playable for 5-10 minutes before boredom sets in.

What went right

  • We knew our tools. Despite the fact that XNA isn’t the best thing to use to get a lot of people to play your LD game, we decided to stick with what we knew in order to finish in time.
  • Teaming up with Regus was extremely enjoyable, we’ve known each other going on I don’t know, a decade and a half now, but we’ve never made a game together. Working together was great, we had complimenting skillsets and we didn’t step on each others toes or had to wait for the other to finish to continue working.
  • I’m mostly pleased with the pixel art I did. Pixel art is something I consider myself good at but I rarely get to do it anymore. Being able to do some again was very nice.
  • The game is pretty well feature complete and stable. Our code design was mostly to thank for that, until the last day when cleanliness kind of went out the window and some of my rendering functions turned to spaghetti.
  • We made an MMO, complete with combat, enemy AI, A* pathfinding and a neat sort of “level up” system. In three frickin’ days. How awesome is that? Worth it just to say we did it.
  • I got to remind myself that even if your art and particle effects are only 50% as awesome as you want, it’s still a more satisfying experience to have a bunch of half-awesome stuff and a more complete experience, then an incomplete number of perfect things. The perfectionist in me needed this reminder.

What went wrong

  • No music. I’m bad at music and didn’t have the tools or time to modify even an autotracker song. I subbed in ambient sounds instead and it works okay, but not the way I wanted.
  • We didn’t actually have time to add some features that would’ve given the game a goal, like a boss at the center, better tuned distribution of enemies, and a global win/lose condition like we planned.
  • The game wound up being not very fun. See my opening paragraph for thoughts about that.
  • I felt kind of sick after the third day cause I pushed myself so hard and my sleeping patterns are completely shot now.

Overall a lot of things went right, far more than went wrong. Our first LD experience was enjoyable, and taught me some valuable lessons, or rather reminded me of them. And it was a chance to do a few things I don’t normally get to do, like make an MMO and work on pixel art. I consider it a win, even if I doubt our game will be getting top ratings.

We probably won’t work on the game for a post-compo version, I think. Nobody’s asked us to, which is a pretty good sign that it’s not actually wanted. Comment if you think we should, though. I’m tagging this SuccessStory even though the end result is lackluster, because… well, 3 day frickin’ MMO man.

Eniko, signing out.

Tags: mmo, multiplayer, online, post-mortem, postmortem, SuccessStory

LD25

MidBoss: post compo version

midbosstitlescreen

 

Click on the image to get it!

MidBoss post compo version

So, MidBoss did fairly well in the ratings. I won’t bore you with the full overview, but it came in #81 in fun, and #91 overall. Pretty good! I kind of wish I hadn’t taken Sunday off, maybe it would’ve done better as a compo entry than a jam entry. It’s not like I actually spent the available 72 hours on it, but oh well.

Since the competition I’ve been working on the game, to polish it up and make it more playable. The post compo version is now ready and you can get it here. Keep in mind that I intend to change core gameplay mechanics to make the game easier to balance and maintain in the future! New features include:

  • Dynamic line of sight and lighting
  • Save/resume feature (save scumming is available)
  • Dynamic music system
  • Options menu (also for key rebinding!)
  • Various bugfixes

And that’s not the end of MidBoss, I want to keep developing it further, so if you have any comments or feedback, or want to keep updated on progress, please follow @Enichan!

 

Tags: 2D, ld25, postcompo, pygame, python

Comments

10. Jan 2013 · 05:49 UTC
Awesome! 😀 I’ll be sure to test it once I get home.
10. Jan 2013 · 05:51 UTC
One question about the dynamic lighting:

MidBoss first official release

Today I released MidBoss (v0.5 beta), because stuff might still change and/or break) as a feature complete game. It’s an overhauled, rebalanced version of my LD25 game, and my January entry for One Game a Month.

MidBoss is a game about possessing your defeated enemies in order to become stronger. You play the weakest of the dungeon denizens, an imp with no ability other than possessing other creatures. Your goal is to defeat and possess increasingly stronger creatures, unlocking their abilities for yourself and becoming stronger as you go along, and eventually defeat and become the dungeon’s ultimate endboss.

Features now include:

  • Possess your enemy and gain their strengths and skills
  • Dynamic music system with more frenetic music to accompany action
  • Line of sight and fog of war systems
  • A total of 15 monsters to defeat and 10 skills to unlock
  • Randomly generated dungeon floors
  • Single-file save and resume
  • Permanent death, if you die your save is gone (save-scumming is available)
  • Full options menu including key rebinding

If you like it or have feedback, feel free to leave comments here or let me known on Twitter @enichan. Also in case anyone’s curious, here’s my 1GAM profile.

Tags: 2D, ld25, pygame, python, SuccessStory

LD28

I am so totally in you, Ludum Dare. *creepystare* o____o

Obligatory I am in post! I may or may not be doing hourly minute long vlog updates, haven’t decided yet. I think they could be very funny, but, yeah.

Tools of the trade:

  • Visual Studio 2012 + TypeScript
  • Custom WebGL 2D game framework
  • Photoshop (I seriously need a better program for pixel art, recommendations!?)
  • cgMusic + GXSCC
  • Audacity
  • Virtualdub

Comments

13. Dec 2013 · 13:47 UTC
I still use Paint so I can’t give many recommendations!

LD32

Ultra Hat Dimension crash-on-startup issues resolved

Ultra Hat DimensionIf you haven’t already you can now try Ultra Hat Dimension — the premier hat-based puzzle game — more easily than ever. I’ve updated the latest build to automatically work around two crash-on-startup issues the game had. I’ll explain the problems and the solutions in more detail below if you’re interested in learning from my mistakes.

The Problem

Right after submitting UHD the reports of crashes when trying to run the game started flooding in. This was 4 am my time, so I was quite annoyed. I wound up staying up til 6.30 am trying to fix the issue. It turned out there were two problems:

  1. Windows was marking the zip as a file “not from this computer” and blocking files. Blocked files can be unblocked by right clicking on the file, selecting Properties, and clicking “Unblock” in the general tab.

    ClearScript, which I used for Javascript scripting, has an interesting way of loading its dependencies, so it can load either 32-bit or 64-bit on demand. One of the dlls being blocked caused ClearScript’s loading to fail and crash with an unhelpful TypeLoadException error. I’d never noticed the blocking behaviour on Windows before, and I’d never heard of it causing crashes with my other games.

  2. ClearScript also had a dependency on the Microsoft Visual C++ 2013 Redistributable (x86). This was easy to reproduce on my laptop.

The Solution

Eventually I figured out what was happening was that Windows Explorer’s built-in zip support propagates the file zone information (which indicates it came from another computer) and because I use 7Zip to extract files myself, I could not replicate that behaviour. Basically, any program that unpacks zips doesn’t have this problem, only the Windows built-in.

Since it only causes a crash with ClearScript’s dlls which are loaded at runtime, I rolled up a bin file format that packs multiple files in one. Now my framework checks for ClearScriptXX.bin (either 32 or 64) and if it finds them extracts the files from that before running the game. That creates the dll files, which won’t be blocked by Windows, and so won’t crash.

I also bundled vcredist_x86.exe with the game. The framework checks if this file exists and checks the registry* to see if the redistributable is installed. If it’s not it runs it with /passive /norestart arguments, which means no user input is required to complete the install and the user won’t be prompted to restart. After installing the redistributable, the game loads up as expected.

* The registry entries for the 2013 VC++ Redistributable to the best of my knowledge can be found here

Tags: 2D, C++, jam, javascript, ld32, Ludum Dare, postmortem, update, Windows