November 19, 2009
Do you want to program games in 3D? There is no better (and easier!) program than Unity. The problem until now has been the $100 price tag. That has changed now, however, as the indie version of Unity is now free! There is still a more expensive “Pro” version, but the indie version is a great tool in its own right. You can read the press release here, or just go download Unity!
October 15, 2009
Every month a website called the Experimental Gameplay Project issues a challenge to create a game based on a theme in seven days or less. This month’s theme is “numbers” and I decided that I would submit an entry. Here is some more information about the game as I posted on the Experimental Gameplay website:
Okay, I have an entry. As much as anything this was an opportunity to learn how to do Object Oriented Programming in Lua and also to actually finish a game for once (yes, I do have that awful habit of starting something and not completing it).
*Gameplay*
Computers, at the most basic level, run on a code of 1s and 0s, known as binary code. Several virii (aka viruses) have attacked your computer by changing some of these 1s and 0s into… 2s! Use the + and – keys to add or subtract from any number on your screen, but be warned: every time you change a number the virus will attempt to spread. Surround a virus with either all 1s or all 0s and it will be neutralized. Press ‘r’ on your keyboard to reset the puzzle.
*Download*
http://www.mediafire.com/file/fiw02gtml4n/virii.love
The game is made available as a love file and requires the LOVE “game engine” to run. You can download it at:
http://love2d.org/download
May 19, 2009
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!
April 23, 2009
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.
December 12, 2008
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 Tkinterimport subprocessimport os.path
# Define input retrieve function for application inputdef 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.
October 17, 2008
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.
September 15, 2008
My favourite game development community, http://www.idevgames.com/, is going to be running a contest. In the past they ran a competition known as uDevGames which was probably the biggest contest in the OS X development community. It’s been a few years since it has run, but it’s looking to make a strong return in the near future! Check out this thread for more info.
July 17, 2008
If you’re looking to make 3D games on a Mac there is no better tool than Unity. It’s easy to use, with a great GUI and all the scripting done in the familiar javascript. You can use it to build games for OS X and Windows. There are also plans to make Wii and iPhone builds possible. It costs $200 to buy the indie licence, but even if you can’t afford that it is worth checking out the free 30-day trial. If you need a free alternative Dim3 is a popular open-source 3D engine. My own experience with it is fairly limited but, while it is certainly not as easy or powerful as Unity, it looks to have some potential and is certainly worth looking in to.
June 7, 2008
At some point you will run into the limits of web technologies and GameMaker and you will need to learn another language. Python is an excellent next step. Pygame is a module for python that will allow you to easily import and use sprites in your games. Check it out at http://www.pygame.org/. Once you’ve downloaded and installed Python and Pygame I recommend that you get started by looking at the Chimp Tutorial. You will also want a good code editor to work in. I’m on a Mac and I highly recommend Aquamacs Emacs. Please note that programming with something like Python is a little more complicated since there is no GUI, but if you’re used to using something like PHP or GameMaker code, you should be able to figure it out without too much difficulty.
April 26, 2008
In my last post I suggested that web design is the ideal way to get your feet wet in the ocean of computer programming. Some of you have been there and done that. Others just want to dive right into the world of game making. One of my favourite game creation tools is Game Maker. I love it because it is fairly simple to use if you are new to this type of thing. It has a drag and drop interface that doesn’t require you to type a single line of code. Once you master that you can begin to use the advanced features including coding with the well documented GML (Game Maker Language).