Monday, January 02, 2012

Happy New Year!

I think you can very easily guess what my goal is for this new year :). This is it. I will finish a game (at least) and put it out there in the world, whatever the outcome may be.  This last month has been frustrating: Jose Luis had no internet access for weeks and some problems that prevented us from coordinating and making enough progress.  But it is looking better now.  Meanwhile, I have learned a thing or two about writing games for the iThings with Unity.  For example, explosions and such, which are created with what is called "particle systems" are problematic on apple devices.  Following some advice and some example scripts I found, I was able to create a tool to play these particle systems on my machine and record them in an animated image that can be used on an iThing without slowing it down too much.  Also, after playing quite a few space shooter games on my iPhone, I think I've found my favorite way to control the space ship on a horizontal shooter.  Basically you just place your finger on the screen and move it around and the spaceship mimics your movement.  You can try these two little improvements on the very minimalistic game page on http://engelsanchez.net/shooter.  We have also successfully created test builds for iPhone, which my friend Kieran and Jose Luis have installed and tried. If anybody else out there has an iPhone or iPad and feels like helping a brother out, please send me your device ID! If you don't know how to get it, here are some instructions.

The next steps will be to create a few background props and a couple of simple enemies to make the prototype feel more like a proper game.  Also, this will help us build our pipeline. That is, figure out the programs and techniques we need to use to create game objects and add them to the game in the easiest way possible.  Besides the technical aspects of the whole operation, the most important thing still is and will always be communication.  We need to learn to work together, pass ideas back and forth and make sure each we are understanding each other.  Luckily, Jose Luis and I have plenty of motivation to keep us going. 2012, here we come!

Friday, December 02, 2011

iPhone Game

A lot has been going lately, but it has been hard to find time to blog about it.  I continued toying with multiplayer turn-based games and Unity during August and September.  The 4inline game I put online was rewritten using Erlang, an excellent language for massively parallel and distributed applications.  If you want to check out what Erlang looks like, you can browse the source code on my github page. But the game is not up right now.  Although I was expecting to work on multiplayer games with Jose Luis, things took another turn and he got involved with a group of people from his video game school and they had decided to work on a space shooter game.  So, I tagged along, putting my multiplayer plans and the Alien Party project on hold to join the group.  After finishing this simple prototype of an isometric level while trying to coordinate with the guys in the group, things took another turn.  

Isometric Prototype


The group thing did not work out.  There was no communication really, and it felt like it was just me working by myself on someone else's project without feedback.  And in the end Jose Luis and I decided to just go it alone.  That is, just the two of us. So in the last couple of weeks we have been trying to restart the project and find a new direction.

During that time, I bit the bullet and finally got an iPhone and started learning iPhone game development with Unity.  I got a prototype working on the iPhone and even though it is just a first step it is absolutely exciting! You can play the web, PC and Mac version of this simple side scrolling prototype here.  Hey, if you have an iPhone and do not mind doing some testing for me while I am learning, you can send me your device id and I can send you a link to download it for your phone.

But of course, nothing is easy on the path to finishing a video game.  Jose Luis is struggling a bit, things are not all peachy in his life.  I hope he pulls through.  I have wanted to finish a game with him for so long now. We have got to make this work... Meanwhile, I keep toiling away at night and trying to make progress.  Luckily my new job is truly great.  I am very, very busy, but the people I am working with are all so nice, all the way to the company CEO, that I feel very stress free.  My last year working with the scientists was not that great.  I did not enjoy it, although I made a few very good friends.  But I have moved on and things are good.  Now I just HAVE TO FINISH A GAME!!! 

Monday, August 08, 2011

Multiplayer Games


Although the blog looks a bit abandoned, these have been very busy times in my ongoing search for game development Nirvana.  It is just hard to find the time to blog.  Time is a luxury.  My latest experiment involves taking baby steps into the world of multi-player games with Unity.  After finding out that you can have a free server in the Amazon cloud for a whole year and being motivated by my friend Luis to start hacking away together some small Unity game experiments together, I got it into my head that we should have our own multi-player game server.   I just finished putting together a game of 4 in line running on my home server.  It is not much to look at, but I have learned a lot in the process and hopefully that is just the beginning.  You can see the code running behind it in Github.  I have not published the code or assets for the Unity client yet.  Unity makes it particularly hard to do this unless you buy a very expensive license.  Oh well, that is the only real problem I have had with that otherwise wonderful game engine, so I will try not to complain.  Anyway, checkers are next!


In the last few months, while trying to resurrect my Alien Party game idea in Unity, I have practiced 3D modeling in Blender quite a lot.  And also got really involved in a newly formed local user group.  It has been great so far.  We have met a few times already and will try to keep getting together once a month.  If you are interested in 3D modeling and animation in Blender, stop by! I am teaching the newbie workshop.  I will take good care of you :)  


I will try to post more about the little multi-player games and my progress with Alien Party later.  Things are happening slowly, but they are happening.  It is tough going working on games at night, and there is so much to learn when you are doing it alone.  But it is all worth it.  My goal for the rest of the year is to put my work out there and start a proper collaboration with my friend Luis.  Just like me, he has a lot going on and not that much free time.  But we both look forward to working together.  It is something we have toyed with for too long. It is time to make it happen!

Thursday, October 21, 2010

Audio Adventures and Lost Kittens

While putting the finishing touches on the little Memory War Cubes prototype I had to face, again, one of my biggest handicaps in this game hobby business: Audio.  It took me a while to find a suitable sound sample to play when you move the pieces or the cursor. What you hear in the prototype is an edited version of a free sound sample I found in the wonderful Open Game Art website.  For that simple modification, I used the free and open source Audacity audio editor, which I had used in the past to slow down guitar songs I wanted to transcribe.  The sample's description said that it was created using nothing but Audacity's generators: it was not recorded nor derived from a recorded sample.  When I read that, this terrible itch started and would not go away: how do you create sounds from nothing?  I have taught myself a lot of game programming skills, how to create 3D models in Blender or manipulate graphics in Photoshop.  I can create most of the things I need for a simple game myself, which is great.  Being able to do the same with sounds would be extremely valuable, I thought.

Audacity is a great free audio tool, and it comes bundled with Nyquist, a sound synthesis and composition language with Lisp syntax.  Lisp is an old and venerable programming language that is popular and powerful, but is mostly known, loved and hated by its pervasive use of parentheses.  Look at this sample plugin from the Audacity website:


(defun delays (s decay delay count)
    (if (= count 0) (cue s)
    (sim (cue s)
        (loud decay (at delay (delays s decay delay (- count 1)))))))
  (stretch-abs 1 (delays s (- 0 decay) delay count)) 
 
After learning quite a bit more about Audacity and Nyquist, I kept trolling the Internet looking for resources on creating sounds until I came across the book Designing Sound by Andy Farnell.  That is when trouble really started.  I got it from Amazon and have been absolutely under its spell ever since.  This book is exactly what I was looking for. It has a detailed overview of the background, theory and tools you need to create sounds from nothing for music composition, interactive shows, film, animation and game development.  The tool used in the book is the amazing free and open source Pure Data audio package.  Pure Data has a visual language of boxes and connections you can use to create any kind of sound processing or sound generating machine you can imagine. Here is an example visual program from Wikipedia:

It looks deceptively simple, but it is incredibly powerful and is as addictive as crack cocaine.  I have abandoned all other pursuits in life and neglected my family while learning this stuff.  Audio programming is fascinating!!  Quite some time will pass before my audio skills get to the point where I can create decent sound samples and effects for my games, but I think it will be worth it.  Here is a little video of me messing with Pure Data trying to filter a noise signal to extract a more pleasant, harmonic sound out of it:





The only event that has been able to snap me from this current audio obsession was the disappearance of our beloved little kitty Thisbe the day of my daughter's 7th birthday.  This was much worse than the last time something similar happened to us.  I spent the afternoon and much of that evening looking around the neighborhood and Franklin Park.  Our backyard leads to the park, and many animals who would love nothing more than a kitten snack live there, so the thought of our little one spending the night there was very troubling.  I did find her at around 10:30pm that night thanks to the food we left out on our back porch (a good tip from a neighbor), a big flashlight and lots of patience.  You can not imagine how hard that day was for the family, but happy endings are always welcome.  Below is a picture of that little rascal.  The first thing she did when I caught her was scratch my hand badly. Then she stole my pillow in the middle of the night and ruined my sleep.  Oh well.  All was forgiven very quickly.

Sunday, September 26, 2010

Vector Graphics
The only predictable property of life is how unpredictable it usually is.  My newly formed partnership with my old friend Luis has gone through a bit of dry period. He just got a job after a period of unemployed, which is great, but it will take him a while to find a good balance that will allow him to spend time on our hobby.  So, while our little project is on hiatus, I have been playing with a couple of things from my long list of cool technologies to try.

The idea of creating cool graphics and animations on the web for games and interactive sites has always been very appealing to me.  But the games you play on the internet are usually developed in Adobe Flash, which is a proprietary technology.  That means that, for the most part, you are forced to buy their products to develop Flash games and such.  They do offer a free, open source alternative to develop Flash applications without their fancy tools: the free flex compiler.  I have downloaded and studied it a bit, but I am frankly more interested in what is out there for the people who want to write games for the web using nothing but free standard technologies.  The situation is not that great, to be honest, but there is hope in the horizon with the upcoming HTML 5 standard.

Although not quite fit for games, there is a very cool library called RaphaĆ«l.js (Thank you Daiji for telling me about it!) that can be used to pimp your web site with interactive vector graphics. That is, graphics consisting of lines, circles and other shapes filled with solid colors, color gradients and the like.  Google maps, for example, makes use of vector graphics to display lines on their maps and make it work on most browsers.  Here is a little bouncing lines demo I just created.  Since I am currently rebuilding my home page, I will probably be spicing it up with it.  It does make your computer work hard just to display a few colored lines, so I better use it with care.

To create the vector graphics, I have been playing with Inkscape, a vector graphics creation program.  It is not high art, but I recently created a little reward chart for my little girls with it. Here is a sample image from that chart. Enjoy! :)

Monday, September 13, 2010

Goodbyes
Last Friday I saw my buddy Stephen Graham laying in a coffin.  He was to be put to rest the next day.  You could hear loud conversations and lots of laughter coming from his friends just a couple of rooms away.  Life stops for nobody.  He was an all around good guy and a very positive person.  All I can think of now is of how much I will never get to learn about him, about the person he was.  Farewell, Stephen.  And yesterday, the beautiful young daughter of an ex-colleague passed away.  Life is really full of pain, and yet it is so easy to forget it until you see it right in front of you again.  We all do our best to survive it and keep moving until our time comes.  I hope I stop forgetting to enjoy all those wonderful people in my life while I can.

Thursday, September 02, 2010

Still Here
It may seem that I am dead and gone from looking at this blog, but that is not the case.  In fact I am more active in this game development business than I have been in a long time.  Time... That is what I do not have much of.  I am finding it difficult to spend any of the little time I have on the blog.  There is so much to learn and do! But I will try to update more frequently from now on.


The problem I have had this year has been one of lack of focus.  For example, I spent quite a bit of time studying and playing with the UDK, that beast of a game engine.  But games made with that can really only run on newish computers with beefy video cards.  Not a problem if I'm only doing this as a fun hobby, or if I want to put that in my resume to try to get into a game company in the future but, is that what I want to do with it?  Where am I going with this?  Do I want to work for a game company? Do I want to do it as a hobby only? Do I want to try to live off of making games?  What is it that would bring me the most satisfaction.  When your head is full of questions like this, you tend to meander and drift: You can not get anywhere like this.


Working for a game company is out of the question.  If you read my blog entries back in October you know I chose a job I believed was the most interesting and funky among the offers I got while job hunting.  The difference in salary between my lowest offer (the one I took) and the highest would make you cry or make you yell horrible words at me.  I have no regret.  Even if the salary was low, it was still pretty high compared to the game jobs I interviewed for. By a lot.  And yet I am still struggling financially.  It just would not have worked in the end. 


The life of an independent game developer is not much better.  Making a living as one is similar to becoming a rock star: it works out for only a selected few.  It is a very long shot.  Still, not trying it would bring me great grief.  Life is too short.


I like what I do for a living.  I let myself get stuck working in the wrong place once, and I will not let that happen to me again. But I like it. I was born to write software, tinker with databases, computer graphics, cryptic computer languages, obsess day and night about how to optimize programs and solve difficult problems with computers.  What I like about games, especially large massively multiplayer games, is that they comprise all of the factors that make software development fun and quite an extra bit of art and creativity.  When it comes to software, I want to do it all, learn it all. It would not be acceptable to ONLY work on games.



I had the fortune to recently reconnect with an old friend of mine who lives in Puerto Rico, where I went to college.  We used to mess around with computer graphics back in the day dreaming of making cool games.  Then I moved to a more work, less play university and slowly began taking a different path.  So now we are trying to do what we never accomplished as young whippersnappers: finish a game.  Right now, the focus is clear.  We are working on a simple game to get our rusty skills up to par.  The game will be free, but we are looking to get good at this and will try to sell games if we get there.  We will think about the rest of the way when we finish our current project. 


So I scrapped the UDK (for the moment) and learned to use a completely different game engine called Unity.  This one is more appropriate for independent development.  It runs on PCs and Macs, even on very old ones.  The entry version is free and is widely used.  It has a cheap version to write games for iThings, which is still the IN thing, and will be adding support for Android based phones too.  I will be doing the coding, my friend Luis is the designer and we'll both probably do a it of the 3D art and modeling.  We put together a little prototype and will be working on a basic but complete level soon.  The prototype is here and included below. I would be interested to know how it works for you.  It requires the Unity plugin to run, but it's a very easy install, so try it out!