OpenGL has changed a lot through the years but it seems that many of the tutorials you’ll find on the internet are dated and only cover the fixed function pipeline. I wanted to find more information about programable shaders (glsl), framebuffers, vertex buffers, and many of the other newer features found in later versions of OpenGL. So I’ve compiled a list of good tutorials and sites I’ve found that cover these topics.

Open.GL

http://open.gl/
Start here first. These tutorials are well written and clearly explain some of the details of OpenGL that seemed mystic to me before. I actually understand the difference between a framebuffer and renderbuffer now!

OpenGL Tutorial

http://www.opengl-tutorial.org/
These tutorials include the full source code which is very useful for tinkering.

Anton’s OpenGL 4 Tutorials

http://antongerdelan.net/opengl/
He has a large number of tutorials from getting started to some very advanced techniques.

Heroku’s GLSL

http://glsl.heroku.com/
This site is full of mind blowing fullscreen glsl effects. Everything runs in the browser and the source code live reloads. It even lets you save your own changes too.

OpenGL 4 Reference Pages

http://www.opengl.org/sdk/docs/man/
When you’ve exhausted the above sites this is the official reference for OpenGL. It has complete descriptions on all of the gl functions.

There are probably many others but these gems have helped me immensely. Let me know in the comments if there are other useful sites I missed.

Posted in Programming

Tags: , ,

gegenwaerts

Image by gegenwaerts

I’ve been working on a party game for the last few months that requires local networking between iOS and Android. The only problem is that I didn’t want users to have to type in ip addresses. Enter the world of zero configuration networking…

Bonjour has been around for quite a while and primarily works on iOS and OSX, although Apple has provided a Windows library as well. Essentially a program publishes a services over the network that is available to find from any computer on that network. Another running program can then broadcast out a request to find certain types of services and resolve them. If none are found, the program can choose to stop looking or send out another request.

This is all well and good but Android doesn’t have support for Bonjour. Instead someone created jmDNS which is a Java implementation that can talk with Bonjour services, with some minor differences. So now I knew which libraries to use but neither one of them works with Haxe which is the programming language I prefer.

With some help from hxcpp I was able to glue the two libraries together into a single class that can be used on multiple platforms. This solved my problem of finding devices over the network but what about connecting them together?

Haxe has basic socket connection classes, UDP will be in 3.1.0, but no major networking library (that I’m aware of). Using Python’s twisted framework as inspiration I decided to create hxnet. It has simple Client/Server code for both TCP and UDP as well as basic protocol classes for RPCs and Telnet.

The Bonjour class is included in hxnet and it should be flexible enough to add protocols like HTTP, FTP, etc… I’m not sure I’d consider it production level code yet but it’s solid enough for me to build my game with it. If you want to give it a shot the code is on GitHub and feel free to create pull requests if you find bugs or code up a crazy new feature.

Posted in General

Tags: , , , , ,

When setting up a deployment script from git I needed to know what files were recently changed. Here is a useful script that does exactly that. Just change HEAD~4 to whatever commit you want to go back to.

git log --pretty=oneline --name-only HEAD~4..HEAD | sed -E -e '/[0-9a-zA-Z]{40} /d' | sort | uniq

Posted in General

Tags: , ,

Do you…

  • develop indie games?
  • get tired of playing (insert title) (insert version) games?
  • enjoy tinkering with consoles?
  • wish you could actually punch your friend while playing a multiplayer game?
  • like playing flash games but wish they were more complex?
  • have a need to be a hipster?
  • feel jaded about the upcoming next-get consoles?
  • hate everything that is bad and love everything that is good?
  • want to play your Android games with a controller?
  • currently have a pulse?

If any of these are true you need to stop reading now and purchase an Ouya.

Seriously… now.

What are you waiting for? It’s $99 well spent.

Posted in General

Tags:

My Ouya arrived a few weeks ago and I thought I’d post a review of it. My experience so far has been generally positive and the system gets better with every update. For $99 it’s worth the price of admission.

little-crane

There are already a good variety of games for it, around 200, and so far one of my favorite games is The Little Crane That Could. The graphics aren’t amazing and while the controls can be frustratingly hard the sense of accomplishment from completing each of the puzzles is exhilarating. I hesitated to download it at first due to the less than stellar promo art but it is a game you absolutely should try out. My other favorites (in no order) are Polarity, Towerfall, Knightmare Tower, A Bit Of A Fist Of Awesome, Beast Boxing Turbo, and Stalagflight.

Which brings me to what I think is a game changer for the industry, the marketplace. On the Ouya you can try every game for free. It’s a little like shareware back in the 80s-90s when you would get a sampler disk of games and later mail in an order for the ones you liked. This was amazing for a kid growing up in a lower income family since I could try lots of different games at a low cost.

The thing about the store that is completely different from any other marketplace, that I’m aware of, is that prices are not listed anywhere. The game might be charging $1 or $20 and I won’t know until I download and play it. This removes the price barrier from trying something out and seeing what I enjoy. It also diminishes the value of discounts that are so prevalent on mobile stores and the, often loathed by developers, $1 price point.

ouya-controller

As for the hardware, I am really impressed with the controller design. The triggers feel a bit spongy but overall the controller feels comfortable and evenly weighted. I have larger hands so PlayStation controllers have always irritated me and while I still think the Xbox has a better controller overall I’d say the Ouya comes in a close second (especially given that the D-pad is better). However, if you like the other controllers there are ways to use them on an Ouya. Talk about a win/win.

The actual hardware I’ve heard compared to a turbo-charged PS2. It has more RAM than the current gen consoles which is wonderful for resource loading. The Tegra 3 graphics might not hold up to today’s standards but I’m hoping to see less “realistic” games and more creativity on the Ouya. It really feels like the NES all over again with so many unique games. Except that it’s easier to develop a game now than it was in the past.

Possibly the best “feature” of Ouya is the openness for developers. This is exactly what iOS and Android have provided for mobile and now indie developers have a chance at console development (without selling our souls). The ODK is a bit rough around the edges at the moment but it is no more difficult building a game for the Ouya than it is for Android. I was able to port several of my HaxePunk prototypes over a single weekend. Most of the work was just getting the input to function like I wanted.

Overall my outlook on the Ouya is good. I was one of the last groups to receive my Ouya but I understand how difficult it would be to manufacture that many units as well as plan for a commercial release. That being said, I feel like the Ouya team is fully committed to making this a quality product. The console is well thought out and while there are still rough spots I think that will all get sorted after they are out of the growing pains stage.

Posted in Reviews

Tags:

January 25, 2013 2 Comments

TestFlight for Haxe

testflight

TestFlight is a great testing tool for iOS apps. I’ve used it a lot at work to distribute builds to multiple devices around the company. It prompts the tester when there is a new update and tracks analytics with checkpoints and crash logs. The only issue is you need to have the SDK installed to get all those goodies.

Read More »

Posted in General

Tags: ,

Enzyme Frenzy

I participated in Ludum Dare #23 this past weekend with over 1000 others. It was a fun experience and I was able to chat with some great guys on the HaxePunk forums/IRC. Unfortunately my time was divided between LD and several other events over the weekend but I’m happy with what I ended up with. Check it out!

Read More »

Posted in Post Mortems

Tags: ,

zork

I came into possession of an Apple IIc that was in great condition this past year. It has several programs and a bunch of games with it. Having grown up with a DOS computer as a kid I wasn’t entirely familiar with the Apple II but it was simple enough to boot up. The screen flickered and gave off a green tint, no color, but I realized quickly there wasn’t an operating system… So I started sifting through the stack of 5 1/2″ floppy disks to find the game I wanted to play, Zork.

Read More »

Posted in General

Tags: , ,

A few weeks ago I decided to continue development on HaxePunk. It was spurred by some updates made to GitHub as well as interest in the forums. For those unaware of what HaxePunk is, it’s a game engine written in Haxe that can run on multiple platforms. The largest benefit is that it will compile natively for mobile devices as well as the three major PC platforms (Windows, Mac OSX, Linux).

Read More »

Posted in General

Tags: , , ,

Screen Shot 2011-12-01 at 5.44.45 PM

Last year I made a video game for my family to play on Christmas. I didn’t have much money at the time so it was part of my gift to everyone. It ended up being a simple board game where tokens moved forward on a timeline, the past year, and the goal was to reach the end. Once everyone made it to the end of the game it would tally up memory points and determine the winner.

Read More »