Pages

Showing posts with label Announcement. Show all posts
Showing posts with label Announcement. Show all posts

Saturday, April 13, 2013

Update Omnibus

Wow - Lots of things have happened in the past three months but I hadn't taken the time to update my blog. So here is a summary of all things big and small from the past few months.

1. Quit my day job 
I finally quit my day job in order to pursue independent game development full time! I had the following projects which I thought were good enough reason for me to quit. And also thanks to the financial support of my wife I can take some time off to figure out what I wanted to do with games (and also my US green card came in last year). So this has really just been all the right things coming together finally.

2. Babycastles
I  have been helping the Babycastles folks with a few things. First I made them a new website - http://babycastles.com/. This is a project which is important to me personally because I know I missed out knowing about Babycastles earlier because I couldn't find enough information about what they really were!

I have also been helping them with smaller things like arranging a Global Game Jam venue at Silent Barn - Silent Jam! We put together a toolbox of game making tools which some people outside the Silent Barn venue found useful - https://docs.google.com/document/d/10doDd27Shk4I7dX8OSbUK5croQZLeQsOXufrECqP4LI

I have been attending the Babycastles meetings more regularly. It's all coming together as Babycastles moves to it's next phase of finding a more permanent space from where it can continue it's awesomeness. This is going to be an exciting year!

3. OUYA Game Jam - Tossers with Ben Johnson
Ben Johnson of Babycastles and I collaborated on creating a game for the OUYA game jam - Tossers. It's a 2v2 local multiplayer game that is a cross between Curling and Marbles where instead of a rock/marble you throw your teammate into a ring of marbles. So far it's been fun working on the game and playing it. So I think we will take it to completion some time in the next few months.

The game didn't win anything in the OUYA contest but we showed it at the NY Gaming Meetup - The first OUYA game to be demo-ed there. By this time we added a powerup feature to add to the mayhem in the game and also added a puppy AI so that the game can be played 1v1 also with an AI teammate. People seemed to like the game play and we got some good feedback.

The meetup and our demo were covered in Alley Watch :P - http://www.alleywatch.com/2013/03/new-york-february-gaming-meetup/

4. Ejecta WebGL talk at onGameStart NY
WebGL bindings on Ejecta allows you to port your WebGL apps/games to iOS. This has been a pure technology project as I want to keep a good mix of games and tech projects.

The work I did has been merged into Ejecta main branch! - https://github.com/phoboslab/Ejecta. A lot more interesting WebGL/three.js demos are now functional on iOS devices (Maybe a different post for this).

I presented the work I did with adding WebGL bindings to Ejecta in the first edition of onGameStart happening in the US. Here are the slides. I hope the videos never come out because I wasn't too happy with my presentation :) I really needed to cut it short in few places and maybe just gone to the demos earlier.

I met many of the HTML5 folks whom I had known only on Twitter. It was nice to meet them in person finally! 

5. GDC
I attended my first ever GDC! More than the talks I spent most of the time hanging out with really interesting people and helping out Babycastles curate/setup what was a really great installation of relaxing games at SFMOMA. Here is a cool review of it - http://www.youtube.com/watch?v=wWLuEp4u5PE

My highlight from the few sessions I attended was the Experimental Game Workshop. All the games in the lineup were amazing but the one game that blew me away in it's elegance was the Katamari-esque Kachina.

Of the parties the Wild Rumpus was by far the most enjoyable. It featured the amazingly fun party game by Keita Takahashi called Tenya Wanya Teens with it's own controller. We also arranged our own Babycastles party at the end of GDC and invited all our friends to it - It was a great way to end GDC.



There are more exciting things afoot - I can hopefully start talking about it in the next few months! This has been a very interesting journey and I really owe it to the amazing folks at Babycastles!! 

Games are only getting more interesting as different kinds of people are getting into it and Babycastles has been an amazing force in progressing the scene in this regard. Hopefully I can help them keep doing their awesome work in the coming years and we can spread this mission to many more places in the world!

Monday, November 26, 2012

EjectaGL - WebGL on iOS with Ejecta!

Summary: 
I am starting a project EjectaGL which adds WebGL binding to the awesome Ejecta project by Dominic Szablewski. EjectaGL extends the Ejecta framework to provide a WebGL implementation on vanilla JavascriptCore without any of the DOM overhead. EjectaGL provides a way to develop WebGL apps that can be shipped to the iOS app store(Not tested, but very possibly). It is far from being complete - So please contribute if you are interested! 


EjectaGL is distributed in the same MIT license as Ejecta.

Longer story:
I had worked on Voxel Flyer for js13kgames - A WebGL based game in less than 13K compressed Javascript. I wanted to keep developing it but I sort of wished it would work on iOS too. A search for WebGL on iOS usually yields the jailbreak method for enabling WebGL on iOS which is not very useful if you want to ship your WebGL app on the App Store. It feels like Apple might open up WebGL at any time but that never seems to happen. I always wanted to look into adding WebGL binding to AppMobi's directCanvas - but that never happened due to the complexity of the directCanvas code(and not to mention that the open source version has hardly seen the updates of their recent XDK).

Meanwhile I saw that Dominic from Phobos Labs(on whose work directCanvas is actually based upon) released Ejecta, a newer version of his iOS library to provide a barebones fast implementation of Canvas and Audio without all the DOM overhead. This time I felt the code was much more friendlier and  I could actually have a real shot at implementing WebGL on top of Ejecta. 

So couple of days back I started reading my fist tutorial on Objective-C and started hacking Ejecta! The result is EjectaGL. EjectaGL replaces the onscreen 2D canvas with a WebGL enabled canvas. At the current stage it's just a proof of concept and I am discovering and fixing issues as I am porting each lesson from  http://learningwebgl.com/. I tried porting Voxel Flyer to it and discovered that there is something wrong with the way uniforms are being passed in which I'm yet to finish debugging.

So basically it's in a very nacent stage but things are looking mostly doable. I can definitely use some help from people to add more bindings, port more examples and review my code for memory leaks(I'm sure there are few there given my newness to Obejctive-C) and other issues.

Check out the screenshot of Voxel Flyer running in the emulator with buggy lighting turned off at an astounding 9 frames/second. (You can run this demo by downloading the github source, creating an App/ folder and copying the contents of examples/VoxelFlyer to it)





As for some implementation details the one major caveat is the absence of Typed arrays in the current JavascriptCore that Ejecta uses(It might be coming some time later though). I have tried to work around it by implementing a very primitive pseudo typed array in Objective-C. Basically you can instantiate a typed array but that's about it. I found that most WebGL code just create the typed Float32Array, Uint16Array just before binding to the buffer anyway and don' do much with the contents anyway. There could be issues with libraries like glMatrix that use typed arrays for fast matrix calculations. Currently I just replace the typed array with a regular array in my stripped down version of glMatrix. I see a workaround here of implementing glMatrix itself in Objective-C that doesn't have typed array in it's method interface but can use the internal representation of EjectaGL's typed array which can then be passed on to EjectaGL. A similar strategy can be adopted if we want to get libraries like three.js also running on EjectaGL(though that would be a big undertaking of it's own).

There are not lot of WebGL APIs implemented currently but I don't see any other major issues in doing that (other than the typed arrays). Also I am thinking of adding stuff like rendering offline to a 2D Canvas and using that a texture in WebGL (My Voxel Flyer originally had a mini map that was a 2D canvas on top of the WebGL canvas).

So for now I just wanted to quickly mention the project and get the ball rolling so that I can ask for help and also make sure there is no duplication of effort (I am pretty sure 100 different people were also thinking of a similar project).

I think there are lot of applications for this project - It would be nice to get all those nice shader/demos working on the mobile device, possibly even the three.js ones. I also see a possibility of using all the cool WebGL shader effects available on Construct2 to be now fully exportable to the iOS target. 

Drop me a line here or on twitter - @vikerman

Update : EjectaGL is now merged into Ejecta main! You can get it at https://github.com/phoboslab/Ejecta

Friday, August 7, 2009

Please Save the Great Flea Circus!

After two weeks in development I am happy to announce the release of my first game - "The Great Flea Circus". You can play it in a few nice places that host Silverlight games.




What's with the name "The Great Flea Circus"? Well, the game is a clone of Circus Atari and hence the circus part. The flea part came because the characters I initially drew looked like fleas. Hence I made the theme a Flea circus instead of a regular circus!

The main purpose of this game was to test the feasibility of using Silverlight for game development - And I have concluded it is not only feasible it is absolutely the most productive way to develop a game given my .NET background.

Also after my previous post I have decided to switch to using Microsoft Expression Blend for the game development. Particularly I have been using the Behaviors feature in Silverlight to separate game logic(code) and game design(in Blend). For example in the Blend design window I just attach the behavior Paddle to the paddle in the designer and Jumper to the two jumpers.

An interesting thing happened where behaviors were really useful - When I showed the game to my wife (A great play tester and critic !) she asked me why there is ball in the middle of the screen which doesn't interact with the Jumpers. So I added the Bounce behavior(which the two black blocks on the sides have) to the ball and viola!, the Jumpers now bounce off the ball in the middle. It turned out to be a nice twist to the gameplay and so I left it in. Also check out the cheesy animation I put on the Ferris wheel in the background through Blend.

More on Silverlight, Blend and Behaviors in a later post. Now go and "Please Save the Great Flea Circus!! "

Sunday, July 5, 2009

Why this blog

I am setting up this blog so that I can chronicle and share out my experiences in trying to become an independent game developer.

Right here is step 1.

The other purpose of this blog is to share out information on specific technologies/ideas that I have been playing with in creating my games - Aggregation of information I found on the web or things about which I haven't found enough information on the web where I would like to fill the gaps in.

Also my hope is that this blog would be a place where I would announce progress and completion of my games and the lessons I learnt on the way.

And finally the name of my blog "indie-indian" - Is to probably just identify myself with the sub-minority group that I am in - The Indian independent game developer. Maybe there will be some posts on this, trying to reach out and connect with others in this group. Maybe if I become successful I can get more people into this group...