Tuesday, May 19, 2009

Love, Time Travel, and a Lost Garden

I've been tinkering around with LÖVE some more and I'm impressed by how easy it is to get a simple 2D game running. My problem now is that I don't know what game to make. As a kid I was always coming up with ideas for the latest and greatest game. Now that I can actually make them, I can't seem to recall any of these ideas. I think I'm going to make some sort of game where you manage planets and go out into space exploring new ones. Since this is mostly just for test purposes anyway I'm not to worried if the game play is sub par. In the meantime I'll be trying to think of game ideas (feel free to comment on this post if you have recommendations!). I'll try to post the completed game here when I'm finished.

On a similar note I just got Buried in Time running on my Ubunutu laptop using SheepShaver. For those who never played any of the games in the Journeyman Project trilogy, Buried in Time was the second instalment in the series. It's probably one of the best games I've ever played despite being over 10 years old. The focus is on solving puzzles and exploring new worlds (via time travel). If I ever make a major video game I think I'd like to make something in the same genre. Also, if I were reading this blog right now I'd probably go over to ebay and buy a copy. I've seen Buried in Time on there for as little as $0.99.

One last thing. I'm pretty sure I discovered the greatest blog ever last night: Lost Garden. It contains free graphics and tons of articles about making computer games. I highly recommend that you go check it out!

Monday, April 27, 2009

Upgrading Ubuntu

The newest version of Ubuntu, 9.04 or Jaunty Jackalope, was released last Friday. Since I was still running 8.04 I decided it was time to update my system. Not a ton of new features in Jaunty, but I'm looking forward to the better support for multiple monitors and I've recently started noticing that some developers are no longer making their software for Hardy. I didn't want to do clean install if I didn't have to so I just did an upgrade. Here's how:

1. Backup important files. I use SpiderOak for 2GB of free, automatic backup.
2. Goto System -> Administration -> Software Sources. Click the "Updates" tab. Change the "Show new distribution releases:" from "Long term support releases only" to "Normal releases".
3. Run System -> Administration -> Update Manager. Click "Updgrade". Follow the instructions from here on in.

Note that if you want to upgrade from a version older than 8.10 to 9.04 you wont be able to do it all at once. You have to updgrade in steps. So I had to updgrade from 8.04 to 8.10 and then from 8.10 to 9.04. Everything worked fine and I'm very happy with Jaunty so far. The only issue I encountered is that my wireless internet had problems under 8.10. These problems dissapeared once I upgraded to 9.04.

Thursday, April 23, 2009

In Love?

I finished my last exam for the year yesterday and so today I was ready to get programming again. I had thought I would probably play around with pyglet for a while, but as I was exploring the various options I ran into something called LÖVE. From the LÖVE website:

What is LÖVE?
LÖVE is a 2D game engine in which games can be made by using Lua scripts. Actually, it's more like a framework or library, but "engine" sells much better. So we lie.

What makes LÖVE different?
LÖVE aims to be as easy to use as possible, but without the use of any graphical "game maker". It has been compared with PyGame, but for Lua, and (hopefully) with a better distribution scheme.

So I've spent the better part of the day in LÖVE and I must say its been a rather enjoyable experience. It seems to have some very nice libraries to get game development done very quickly and the tutorials on the website have been very useful. Go to http://love2d.org/ for more info and to download. While you're at it check out Geany as a great option for a Lua IDE.

Monday, March 2, 2009

Web Fonts

One of the sites that I am editing right now is very heavily based on fonts. I need to have the right fonts in the right places or my client wont be happy. But I find fonts to be such a pain. Which fonts are 'web safe'? What happens if a user doesn't have the right font installed? As I was coding the site I ran across a great article entitled "The Myth Of ‘Web-Safe’ Fonts". It's worth a read for anyone interested in making sure that fonts display properly on their pages. Most interesting was the discussion of the five 'font family stacks' and the three types of fonts that a browser can fall back to if the proper font isn't installed.

Tuesday, February 17, 2009

Promoting A Blog

Interested in promoting your blog? Submit it to condron.us which is a site that scrolls through a list of recently updated blogs. I just added my site to see what kind of traffic it will actually bring.

Friday, December 12, 2008

Connecting to OS X from Linux

I'm done school for the semester, so hopefully that means I'll have some more time to work on programming and the like. Yesterday I was trying to get my Ubuntu laptop to connect to my Mac OS X desktop. Accessing a networked OS X computer as a windows share is pretty easy under Ubuntu. But you can only see a few files. When networking OS X to OS X you can access pretty much the whole computer. I found a package called afpfs-ng that allows you to do essentially the same thing from Ubuntu. Unfortunately this program requires you to use the command line to connect. Once I figured it out I started making my own GUI interface for afpfs-ng. I used python and am just about finished. Here's the source code so far:

#!/usr/bin/python

import Tkinter
import subprocess
import os.path



# Define input retrieve function for application input
def retrieve_text():
global volume
global mounted
if mounted is 0:
afp_ip = afp_host.get()
username = user_name.get()
volume = volume_in.get()
password = pass_word.get()
if os.path.exists('\"/tmp/'+volume+"\"") != 1:
output_string = "mkdir \"/tmp/" + volume + "\""
retcode = subprocess.Popen(output_string, shell=True)
output_string = "mount_afp \"afp://" + username + ":" + password + "@" + afp_ip + "/" + volume + "\" \"/tmp/" + volume + "\"\n nautilus \"/tmp/" + volume + "\""
retcode = subprocess.Popen(output_string, shell=True)
mounted = 1

def unmount():
global mounted
if mounted is 1:
retcode = subprocess.Popen("afp_client unmount \"/tmp/" + volume + "\"", shell=True)
mounted = 0

if __name__ == "__main__":

volume = 0
mounted = 0

# Create Window Object or Window Form
app_win = Tkinter.Tk()

# Create label object
labeltitle = Tkinter.Label(app_win,text="Connect to AFP Server\n")
labeltitle.pack()

# Create label object
label1 = Tkinter.Label(app_win,text="Host IP")
label1.pack()

# Create User Input Object
afp_host = Tkinter.Entry(app_win)
afp_host.pack()

# Create label object
label2 = Tkinter.Label(app_win,text="Username")
label2.pack()

# Create User Input Object
user_name = Tkinter.Entry(app_win)
user_name.pack()

# Create label object
label2a = Tkinter.Label(app_win,text="Password")
label2a.pack()

# Create User Input Object
pass_word = Tkinter.Entry(app_win)
pass_word.pack()

# Create label object
label3 = Tkinter.Label(app_win,text="Volume")
label3.pack()

# Create User Input Object
volume_in = Tkinter.Entry(app_win)
volume_in.pack()

# Create Button Object
app_button = Tkinter.Button(app_win,text="Connect",command=retrieve_text)
app_button.pack()

# Create Button Object
unmount_button = Tkinter.Button(app_win,text="Unmount",command=unmount)
unmount_button.pack()

# Initialize Graphical Loop
app_win.mainloop()


If you copy that into an empty text document, save it as "afp.py", open a terminal, type "python " and then drag the "afp.py" file into the terminal, you can run it. Of course, you'll have to download afpfs-ng first. Your command line should look something like this:
dustin@dustin:~$ python '/home/dustin/afp.py'

I'm still working on adding some more features and packaging this in an easier to use manner.

Friday, October 17, 2008

Pythons

I just wanted to mention two interesting python libraries I have recently discovered:
1. Pyglet
This seems to be replacing pygame as the best choice for making games in python. It uses OpenGL instead of SDL, which means faster games!

2. Pymunk
A port of the Chipmunk 2d physics engine to python. A recent PyWeek contest was based on the use of Chipmunk in python games.

I haven't yet tried either of these myself, but they look very useful. I'll keep you posted.