About winferno

Entries

winferno's Trophies

winferno's Archive

Final Preparations

Posted by
Friday, April 29th, 2011 6:12 pm

Raided the local Asian market for random drinks, white rabbit candies, seaweed crackers, and some fruit! Now maybe I should see if I get a window up using SFML…

 

 

Desktoppage

Posted by
Thursday, April 28th, 2011 6:31 pm

I haven’t seen many “here’s my cave where I’ll be spending the next 48 hours” snapshots, so here’s one to get things going.

I’m in!

Posted by
Thursday, April 28th, 2011 1:29 pm

Hi everyone, I’m in for LD48 #20! This will be my fourth time entering (after bombing out twice previously, due to illness and running out of time). I’ve definitely learned the importance of getting tools and materials prepared prior to the event. Here’s what I’ll be using in my development environment as planned:
platform   : Debian Linux x86/32-bit
language   : C++
editor     : emacs
libraries  : SFML, minimal code template & vector library, and possibly Box2D.
graphics   : Gimp, Blender, maybe some ImageMagick
sound FX   : csound, maybe Wolfram Tones
music      : Renoise
game title : http://www.norefuge.net/vgng/vgng.html

I’m looking forward to a fun time coding my head off and chatting with other LDers in IRC!

 

My Secret Weapon for LD #18

Posted by
Monday, May 24th, 2010 9:12 pm

I’ve spent a little time creating some template code for the next LD event, after failing at LD #17. I wanted to share this, in case any other Linux devs can benefit.

My template doesn’t do much, which is sort of the point given the nature of Ludum Dare. I wanted to gather up some basic functionality that I consider to be fair to use, and probably already available to many other LD’ers using existing game engines like OGRE, etc. Using this I hope to be able to get a quicker start during the events.

I’m using Linux, C++, CMake, SFML, GLee, OpenGL, and OpenAL. Here are the features I’m going for:

  • Get a window up on the screen. Admittedly, this isn’t too hard thanks to SFML.
  • Load music / sound files from disk, and play them.
  • Load UV texture-mapped 3D objects exported from Blender (http://blender.org/) and display them using OpenGL VBOs. The Blender export script I’ve created is included.
  • Render bitmapped fonts using image files loaded from disk.
  • Build either a Linux or Windows executable by changing a CMake flag (I have a mingw32 cross compilation set up, installed).

You can download my template here: ld48_template.tar.gz

If you can use this, or have time to build the sample app and give me some feedback, that would be awesome. Thanks!

-Windsor

P.S. I just read PoV’s post about packaging Linux applications. I’ll have to put some of those techniques to use in the next version of my template.

Template application running.

End of Day 1

Posted by
Saturday, April 24th, 2010 2:07 am
IMAG0254

Workspace #1: Starbucks.

I’m all done for today and I still have enough caffeine in my system to keep my dreams strange. I goofed off a lot during these first few hours and didn’t get any real work done. I did come to the conclusion that my favorite audio sequencer available for Linux is now Renoise. It’s not open source, but damn if it’s not a cool piece of software. It’s not Ableton Live, but then, Live doesn’t run on Linux, and it costs three times as much. I feel a little silly sticking myself with a new tool to learn in the middle of the contest, but I’m determined to get some music in my entry, and also work completely in Linux while I do it. Good night!

Linux Desktop Time-lapse Creation Script

Posted by
Friday, April 23rd, 2010 3:25 pm

Here is the script I’m using to create a time-lapse video of my desktop, with webcam video superimposed in the corner and an audio track. Works for me in Debian Linux with uvccapture, scrot, and ffmpeg installed. Hopefully this is helpful for others. Note that I had to hard code the location of the script at one point because I am a bash bonehead. You will probably have to change that to match the location on your system.


#!/bin/bash
#
# Timelapse video creator.
#
# Uses the following tools: uvccapture, scrot, ffmpeg.
#
# Start recording with 'timelapse start' (continues until killed),
# compile captured frames in to a video with 'timelapse compile'.

interval=5 # delay between frames (will probably longer due to processing time)

arg=$1

if [ $arg ]; then
if [ $arg = "frame.jpg" ]; then
counter=`cat counter`
counter=`expr $counter + 1`
echo got video for frame $counter
scrot screen.png
echo got screenshot for frame $counter
composite -gravity southwest frame.jpg screen.png composite.png
convert -quality 100 -resize 800x composite.png `printf "%04d" $counter`.jpg
echo processed frame $counter
echo $counter > counter
elif [ $arg = "compile" ]; then
ffmpeg -shortest -qscale 3 -ab 192k -r 10 -i %04d.jpg -i music.mp3 video.mp4
elif [ $arg = "start" ]; then
uvccapture -oframe.jpg -x320 -y240 -q100 -c/home/win/scripts/timelapse -t$interval
fi
else
echo "timelapse "
fi

Bears

Posted by
Friday, April 23rd, 2010 8:08 am

ld48_motivator_theme

Count me in.

Posted by
Friday, April 23rd, 2010 1:36 am

Hi everyone, I’m pumped for the LD #17!! I’ve been busy with school and haven’t had a lot of time to prepare or even think about preparing. Consequently I’ll be using my usual set of tools:

System: Samsung N510 netbook + Debian Linux (penguin power!)
Code: C/C++, SFML, Emacs
Graphics: GIMP, (and possibly Graphics Gale)
Sound: I really want to play with Csound, but this probably isn’t the time for it – Csound looks crazy. ???
Physical Environment: coffee house + car (living semi-nomadic these days)
Food: carne asada fries + Rock Star. That should be enough calories for at *least* 48 hours.

Good luck, and see y’all on IRC!

..A dimension known only to LD48ers

..A dimension known only to LD48ers

Screenshot #2

Posted by
Saturday, December 12th, 2009 6:31 pm

screenshot_02

Looks a lot like the first screenshot. =/

First Screenshot

Posted by
Saturday, December 12th, 2009 1:21 pm
screenshot_01

its a start

I declare it shall be an isometric room-based memory game, based on collecting, erm rats. colored rats. I’m currently trying to get a pseudorandom dungeon generator going. It still has some issues, but progress is happening.

Posted by
Friday, December 11th, 2009 9:32 pm
Keeping it simple this time.

Second time in LD48. I like to think I learned a couple things from last event… Like, if noone can run your entry, it won’t be very popular (thanks to peeps who actually did run it). I’m going to try the SFML library and get a Windoze binary out this time.

Using: Debian Linux, C/C++,  SFML (OpenGL). And yea, timelapse and webcam.  *cheese*.

Time to get brainstorming on some game mechanics. Good luck and have fun everyone!

A First Time Entrant’s Write-Up

Posted by
Wednesday, April 22nd, 2009 6:24 pm

Introduction

This was my first attempt at entering the Ludum Dare (a.k.a. LD48). It was a bit intimidating to see some of the really impressive games that came out of previous LD48 events, however the line on the LD48 website reading something like “Historically, less than 20% of the contestants submit an entry” was a bit of an encouragement. At least if I bailed, I wouldn’t be alone. As it turns out, I was able to eek out a ‘game’ in the 48 hours, even if the only machine it likely runs on correctly is my own.

Time Management

I got my idea pretty early on, and my game design was done in under an hour. I’d say roughly 40% of my time was spent coding what could have been reusable game engine things, such as a texture loader, sound effects loader, collision detection code, etc. Another 20% was spent on logic specific to my game such as collision response, physics updates, game end conditions, and state changes. I spent another 30% on the game resources, including artwork and music. The last %10 was spent on the initial design, some game tuning, writing a quick read-me, and finally a mad rush to get everything packaged and uploaded.

Although I had devoted the entire weekend to the event, my girlfriend had some friends in town, and I spent about 7 hours (~15% of the time). I slept also, which in retrospect, was a good idea. By then end of the event, my nerves were starting to feel shot.

Development Tools

I was doing all my coding in C++ on Linux, using OpenGL and GLUT for graphics, OpenAL and libvorbis for audio. I used CMake (a build tool) to help generate makefiles which is handy because it allows one to generate build files for other systems (Visual Studio solutions, for example) using a single cross-platform compatible input file.

Editor: I used XEmacs as my editor. I’ve spent some time using it and have it customized pretty well to suit my needs. What do you think I’m typing this write-up in?

Graphics: I used Graphics Gale to create all the artwork, which I saved as 32-bit Targa files. Graphics Gale is available for free in it’s basic version with some feature restrictions. It has a few features to make drawing ‘cell style’ animation easier, such as onion skinning and animation previews.

Sound/Music: I wanted to integrate the use of my MPC1000 hardware sequencer in to my work-flow, so that’s what I used to sample a guitar riff and some beat-boxed sound effects I recorded. I have a microphone, mic pre-amp/effects processor, and dedicated guitar effects processor to tweak sounds before I edited and sequenced them in the MPC1000. I also used a couple freeware VST synthesizers from Tweakbench.

Time-lapse Video: During the competition I was continuously saving desktop screen-shots every 30 seconds which I later compiled in to a video. To save the screen-shots I used a Linux tool named scrot, and a very simple bash script like this:


#!/bin/bash
mkdir /home/win/screenshots
for (( ; ; ))
do
scrot /home/win/screenshots/%d%k%M%S.png
sleep 30
done

Note that in hindsight, I had some problems with the way the files produced by scrot were named. Some of the files had spaces in them, which might be a bug in scrot. This was a problem for me because my video encoder (ffmpeg) was unable to deal with anything other than files that were named in sequence numerically (no gaps in numbers). I was able to use the batch renaming feature of the Linux tool GQView to rename the files sequentially based on their date-stamp, and ffmpeg was happy. The ffmpeg encoding tool was able to splice in an audio file as it encoded the 1800 jpeg frames.

Game Design

I got lucky in that the chosen theme, ‘Advancing Wall of Doom’ was already my first choice, so my subconscious had some time to mull over the design. I wanted to keep the design dead simple so I wouldn’t bite off more than I could chew. Looking back, this turned out to be a good thing, as I was working right up until the end of the compo and wouldn’t have had time to add any extra features. Even though the design was simple, I feel I should have spent a bit more time considering the playability and fun factor of the game. During testing it was very apparent that my game lacked a lot of variability, and there wasn’t much room for any real strategy or technique. Every test-play through the game took about the same amount of time, and I hadn’t exactly intended the game to be based on any time limit.

Things Learned

Overall I’m happy with my performance during the competition, mainly in that I was able to complete my project in under 48 hours. Although my personal experience playing the game is biased, I’d say it’s good for at least a minute or two of genuine fun. I was also able to take a few things away from the experience which should make my life easier if I decide to compete again:

1. I was coding at a relatively low level, and ended up spending too much time writing and debugging code to provide functionality that others in the event were essentially getting for free (image loading, sound, collision detection, etc.). I also had to be aware of some platform-specific issues (namely timing functions) that users of other APIs could also ignore.

2. Sleep and getting up for breaks is important. I even went outside and ran around the block once during the compo. A couple minutes of jumping-jacks were helpful also. I didn’t regret spending about 15 hours during the compo asleep. I get the feeling my mind was still somehow at work debugging my code while I was sleeping anyhow.

3. I should have spent some time preparing a bit of template code that is generic for any relatively simple game (2D or 3D) that I might want to quickly create. Game loop, end conditions, state changes, main input/display/audio systems all seem like targets at first glance. I had a hard time deciding how to write my code in order to keep an architecture that wouldn’t strangle itself in the short time span of the competition. I think an overall ‘game template’ even if it was just a short checklist, would have been really helpful to me.

4. Although this wasn’t an issue during my time spent in development, I realized after the competition that my code would not be immediately available to other entrants because of the development tools I chose, and the because the corners I cut in testing meant that I produced code which had problems with timing and input on other systems I was able to test my code on afterward. This is a big problem because it makes judging by the other entrants much more inconvenient of not impossible. If I had developed for a virtual-machine environment such as Flash, I suppose I could have avoided this. problem.

Conclusion

I had a great time and am looking forward to entering in the next compo if I have time. I think as long as I can view the event less as a race and more as simply an exercise in programming and design on a very short time scale, and use the experience to become a better coder.

I also have to mention that the social aspect of the event is really great. Everyone in IRC was really friendly and helpful, and it was exciting to see what people had going on at any given time of day or night. I even found out that one entrant was a fellow student at my college, taking one of the same classes even. I’m glad that my comment about his entry on the web wasn’t too harsh!

Thanks everyone for a great event. Long live LD48!

-Windsor 04/22/09

Entry Relocated, Timelapse video on YouTube

Posted by
Wednesday, April 22nd, 2009 12:10 pm

Hi people, I had some trouble with my home server where I was hosting my LD48 #14 entry, and so I’ve moved it to my domain host’s server.  If you want to test/play/vote on my code, the download link is here (Linux source + i386 binary):

http://windsorschmidt.com/dl/winferno_LD14_youfirst.tar.gz

I’ve also got my desktop timelapse video up on YouTube here:

http://www.youtube.com/watch?v=nuUO8E62Vt4

Or, if you want to download the original 8MB video file (mpeg video + audio), you can get it here:

http://windsorschmidt.com/dl/ld48_14.mp4

Thanks everyone for a fun event. I’ll definitely be putting the next LD on my calendar!

-W

“You First” Final Entry!

Posted by
Sunday, April 19th, 2009 6:55 pm

Update (4/22/09): I was having trouble hosting my game on my home server, I had to move it to my domain host’s server here: http://windsorschmidt.com/dl/winferno_LD14_youfirst.tar.gz Thanks!

It’s ‘done’ !! Tested on Linux only. Binary and source included. OpenGL, OpenAL, libvorbis.

http://monsters.dontexist.net/winferno_LD14_youfirst.tar.gz

Intro and Instructions (that I forgot to include in the archive):

You are an islander, and must appease the nature gods (a huge tsunami and a volcano). Punch the shaking huts to release virgin sacrifices, touch them (er, move to their location) to pick them up, and hurl them in to either advancing wall of doom to stave off imminent (and I mean imminent) death.

Controls: z and x keys (jump and throw/punch), plus the left and right arrow keys (run left/right).

Annoying bug: you must be moving left or right in order for you to successfully throw a virgin.

Thanks for a fun compo!

Getting There

Posted by
Sunday, April 19th, 2009 11:17 am

Here’s a screenshot! Got my texture loader going…. I’m never going to use any of this code again, ever.

Breakfast.

Posted by
Sunday, April 19th, 2009 8:15 am

Getting down to the wire here. I am still behind schedule, so I probably shouldn’t be doing stuff like this, but I’m still officially eating breakfast so it’s cool. Thanks to my awesome girlfriend Gail, I have pankakes for said breakfast!

[cache: storing page]