Game of Life Update!

By | Thing a week | No Comments

Every time I get to a significant milestone on a project I feel like Victor Frankenstein giving birth to my monster. I’m happy to report I have a working version of Conway’s game of life. The rules are super simple.

3 of my neighbors are alive – I’m alive

< 2 of my neighbors are alive – I’m dead

3 of my neighbors are alive – I’m dead

I created a simple javascript implementation using the html5 canvas element. I know what I have right now isn’t the most elegant solution and there are many improvements I can make. I plan on doing a little more optimization and cleanup after I research how other implementations work.

I think I want to rip out all of the drawing logic and put it in it’s own class. I’m not sure though….sometimes it is difficult to decide if you want to reinvent the wheel or not. I’ve been reading the source code for Kineticjs and I’m liking it’s approach to drawing and managing objects on the canvas. More to come later! If you’re interested in checking out my humble little project here’s a link to my github repo: https://github.com/Bumbletoes/gameoflife

Game of Life Update

By | Thing a week | No Comments

I’ve been plugging away on this little game of life project. So far there are a few problems I’ve run into that have been fairly interesting to solve:

  • Detecting mouse clicks on an element. Currently I’ve got a decent solution for this but I think that I want to explore making it a little more robust in the future
  • Drawing lots of objects at once is really slow, I still haven’t fully addressed this problem. I still have a few things I want to try. I think pre-rendering may help the initial load. I also need to break out my old rendering techniques book to get some ideas. I need to experiment with the concept of buffers if I want to go forward with rolling my own api for drawing stuff. I’m also considering digging into a library like kineticjs for drawing.

Up next is getting the actual game of life rules functioning and making the animation

of it all work. Currently what I have is simple but I think it demonstrates the power of the canvas and it’s totally fun!

Tonight I also updated my Gruntfile to watch my js files so I don’t have to bother running a grunt task to compile every time I want to test something. I’ve gotta say Grunt is a pretty awesome tool for automating your workflow. Stay tuned for more later!!

Well now that I know this works….

By | Thing a week, Uncategorized | No Comments

So I recently started using evernote. And now I’ve found an awesome way to publish blog entries. Hopefully this will encourage a lot more activity on my site!

Again I’ve stayed up way too late. I got to working on my personal project implementing Conway’s Game of Life using the canvas element and javascript. I’m really excited to get this thing wrapped up. And obviously I’m pretty far off from my lofty goal of doing a thing a week. It turns out that’s really hard!!!

The state of things so far is that I have my tiles and my game board all set up. I ran into some fun optimization problems with drawing large sets of tiles… I still think there’s some work I could do here to get things loading even faster but I’ll leave that for later. Next up will be making this thing light up tiles and following Conway’s rules.

Anywho, that’s all for now. If anyone cares to check out my progress I’m making commits to my github repo that’s available by clicking on the link in the footer of this page!

~ Levi

The falling of Hawking’s Coulton Conway domino of life

By | Games, Random Thoughts, Thing a week, Uncategorized | No Comments

So I had an idea. It’s not an original idea and by the title you can extrapolate where I get my inspiration.

I often feel like I’m the opposite of Jonathan Coulton (if you click this link sign up for his
newsletter he’s an awesome guy!). In his song Code Monkey he talks about a programmer that’s fed up with his career but he can’t leave because he’s in love with a pretty girl. This song is a reflection of his life as a coder that decides to drop everything and go become a musician. My situation is exactly the opposite. I was a professional musician for 10 years and shifted gears to my other love: programming. Ok, that may be an over simplification but at it’s core that’s kinda how things went. While I didn’t completely drop being a musician, coding did take over as how I spend a predominant amount of my time.

To my point! Coulton went through a period where he had something he called “A thing a week” where he wrote a song a week. It was somewhat of an experiment to try and coax some musical creativity out of himself.  Which brings me to my own personal experiment. I’m going to be taking on a small personal project every week. With the goal of exploring different programming paradigms and ideas. At the start I want to set some rules.

#1 The project must be simple enough that it can be completed in one week
#2  If that project is not completed I’ll drop it and move on to the next thing
#3 Each Project will be defined on Monday
#4 All source code will be available on Github and regular updates/thoughts will be posted here

Onward to project 1’s definition and the genesis of that idea.

A week or two ago I was fumbling through my Netflix queue. Coupled with a recent binge on The Big Bang Theory and a general interest in all things science I discovered a show that Stephen Hawking narrates. I think it’s called Into The Universe or something. In the first episode they explore what the meaning of life is. Really fascinating stuff! In the show they talk about a “game” it’s called Conway’s Game of Life. This isn’t new to the world of computer science but it is something I’ve become really interesting in building.

The rules are simple: (From Wikipedia)

Any live cell with fewer than two live neighbours dies, as if caused by under-population.
Any live cell with two or three live neighbours lives on to the next generation.
Any live cell with more than three live neighbours dies, as if by overcrowding.
Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.

I’ve recently gotten really into build automation and testing. For this project I’ll be using Javascript.  I plan to use Grunt for build and test automation. And Jasmine as my testing framework. I want to give the user the ability to set up starting patterns and a start, stop, and reset button to control the game.

A I said before this isn’t new ground I’m breaking. I’m sure there are plenty of other implementations of the game of life floating around out there but as a start to a personal journey I think it’s a fun place to begin!

I’ll post updates as the week progresses. It’s going to be a busy week on the road for me and I’ve got a lot of other things going on with work and other personal projects to this will be a real challenge!

RagNoK: Post-mortem

By | Games | No Comments

About:

     RagNoK was a game I worked on in a prototyping class last quarter. I knew from the start I wanted to work on a game using Unity as our primary engine. After using UDK for several projects in the past and seeing the challenges it offered I wanted to try something new and having studied Unity on my own for a few weeks I had an idea of the benefits Unity could bring to our student project.

What went right:

Assets:

Bringing assets into Unity was incredibly easy and it made prototyping things quickly a piece of cake. The modular way in which game objects are put together made it really easy to swap placeholder art in and update existing models with textures or fixes as they were available.

Scripting:

The scripting environment in Unity made it possible to create almost anything we could dream up in a short amount of time. I also appreciate the ability to rapidly test code as opposed to something like UDK where it feels like you have to jump through a ton of hoops to get the engine to recognize your scripts and then you have to wait for everything to compile to see if it works. The drag-and-drop plug-and-play nature of Unity makes coding what it should be: a joy.

Completion:

In the end my team ended up with a complete project that can be built out to play on the web. This is an awesome thing for a student project becasue it allows us to show our game to anyone with a web browser.

What went wrong:

Unfamiliar technology:

One of the hurdles we slowly overcame was everyone on the team being unfamiliar with Unity. Luckily the way the project ran the artists were able to simply work in their prefered 3d package but a lot of models needed to be rotated or resized due to the teams inexpereience with Unity. This ended up creating a bottleneck in the amount of time it would take to get assets into the engine.

Another issue we ran into was in the optimization department. By the end of this project I learned a lot about how things worked in Unity but didn’t realize how many places our game could have been better optimized. As with any new technology I feel like these are the kinds of lessons you get from the experience of seeing a project to it’s completion.

Time Constraints:

I’m sure this happens all the time but due to the amount of time we had to work on the game we had to cut a lot of our ideas. A big example of something that ended up on the cutting room floor was multiplayer. We also could have done more with our GUI and sound.

In the end the learning experience and the creation of a working game makes me proud to have been a part of this project.

UDK Side Scrolling Levels

By | Gaming | No Comments

Here’s a couple levels I built in UDK. The camera and player controller is done with unreal script but pretty much everything else I did inside the editor with kismet.

The first one was done in my spare time for fun and uses pretty much assets that come with UDK. The second one has quite a bit more complexity and was done for a level design class I was taking at the time. Pretty much all of its assets were built by me.

You can download these two levels and play them for yourself by right clicking and selecting save as

on the links below.

UDK_Level1_1 (Updated Links to come)

UDK_CogworkClockwork (Updated Links to come)

For those that are interested here’s a link to download the diagrams/maps/asset lists I drew up for these two levels

2DPlatformer_Diagrams (Updated Links to come)

Interface Design – The Guitar Samurai

By | Uncategorized | No Comments

For my interface design class I decided to iterate on an idea I’ve had for a 2D style game.

In this game you play as Des the guitar samurai who is out for revenge.

Mechanics:

The core of the idea centers around a 2D beat em up style game with an element puzzle platforming involved. One of Des’s key abilities is to weild the deadly sonic arts using his guitar. So the player can bring up a radial style menu and “scrub” a slider across it to combine different guitar licks to create attacks and puzzle solving ablities.

I’m pretty happy with the way these composited mock ups came out so here’s a few!

Getting this thing started

By | Uncategorized | No Comments

I’m just getting my new portfolio site/home of all things Levi programming set up. So far I’m pretty happy with the start I’ve got going on. Going through and adding all the projects I’ve worked on over the past few years is turning out to be quite a project. I’m still on the fence of what I want to do with a site that’s all things I’m interested in or if I want to add them here.  More to come soon!