Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

26. January 2012

 

 

You may remember me discussing PlayN in previous posts, it’s a Google run cross-platform, open source game library.  Previously the most missing feature was iOS support and frankly that feature is still missing, but there is light at the end of the tunnel!

 

 

PlayN developer Michael Bayne recently made a post announcing he had successfully got the Peas demo running on an iPhone4. IMG_0935Without a doubt this progress is a “very good thing”, as iOS support is easily the most important missing feature of PlayN today.

 

 

Michael’s progress:

 

I got side tracked by trying to get things working on a real device.
The simulator runs the Mono VM in JIT mode (though with various
restrictions in place to ensure that you don't do anything that's
incompatible with AOT compilation), but actually doing AOT compilation
enforces substantially more restrictions. I had to "refactor" IKVM to
contain no references whatsoever to System.Reflection.Emit even if
they were never called. I also bumped into a Mono compiler bug and
spent some time digging into the internals of IKVM and mcs (the Mono
compiler) so that I could come up with a work-around and file a
sensible bug report. It turned out to have already been fixed in trunk
(which made my investigations that much more perplexing), but since
MonoTouch is commercial software, I was necessarily working with the
latest beta release, not trunk; annoying!

Performance of the Pea Physics demo is not stellar on an iPhone 4
(it's quite reasonable, it's just not silky smooth 60 FPS with twenty
or thirty peas moving on screen). It's pretty comparable to what I've
see on actual Android devices. Depending on what Box2D's interfaces
are like, there's a possibility that it could be improved by writing
an interface-compatible implementation of Box2D directly in C#. C#
supports value types, and in a physics simulator, being able to store
your Vec2s and Matrix3s directly inline, rather than separately on the
heap, can substantially improve cache performance. That said, the
Box2D implementation, as is, is not very data-oriented. Rewriting it
to store all of the entity geometry in big flat arrays and to perform
its calculations by iterating over those arrays, rather than following
a zillion pointers through the heap, would probably help a lot on
every platform.

Now that I've got things running on an actual device, I'll go back to
finishing up the platform implementation. IOSCanvas is substantially
done. IOSStorage is done (built on Sqlite). IOSTouch (and IOSPointer)
are done. I need to implement the font and text rendering bits of
IOSGraphics/IOSCanvas. Then IOSSound, IOSNet and other niggling bits.
I'm not sure what I'll do about IOSKeyboard. I'd kind of like an
additional interface for requesting a string of text from the user,
which would allow the keyboard to pop up in "edit a line of text" mode
so that the user can use the standard copy/paste and click with
magnification text navigation. Having the app respond to key events
and attempt to implement text entry directly is a massively bad idea
(on any mobile device), IMO.

 

 

Excellent news and great work Michael! 

 

So for the people looking to see if PlayN works with iOS, the answer is no, but it’s damned close!

Programming

26. January 2012

 

 

OK, so I may just be late to the party on this CtotW, as this product is currently one of the darlings of the programming world but I ignored it completely until now.  What is it I ignored so completely and now am rather enamored of?

 

Node.js

 

 

What exactly is Node?  Well basically they ripped the V8 Engine ( yeah, it’s actually called that ) that powers the Javascript engine in Google Chrome and instead used it for creatinglogo-light server side applications, like you would traditionally make using ASP.Net or JSP.  In addition to providing a server side Javascript implementation, they have implemented a number of modules ( in C++ ) to handle many common tasks, from creating an HTTP server to cryptography.  You can of course create your own add-ons in C++.  Of course, as with all things Google, the build process is a bit convoluted and poorly documented, especially for Windows based developers.

 

 

So, why exactly have I ignored Node until now?  Frankly, I hate developing in Javascript, or at least I thought I did.  Reality is, I hate developing in Javascript for browsers!  Once you move yourself out of the browser, it becomes a much more pleasant experience!

 

 

 

What exactly makes Node so enticing?  You can make light weight, simple, scalable and asynchronous servers with absolutely no other software required.  Simple run node.exe “yourAppName” and you have a running server, no need to install Java or configure a web server.  Consider the following Hello World, a completely functional web server in just a few lines of code:

 

var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(8124, "127.0.0.1");

 

Pretty simple eh?

 

 

There are a few downsides though.  Since Node.exe runs as a single process, so will your application.  This means you are tied to a single core per instance of node.  Also, tooling support is a bit lacking.  I tried out the excellent (in concept ) Cloud9 online IDE but simply put, it didn’t work.  I really hope this changes soon, as a web based IDE sounds about perfect.  I am currently trying out WebStorm, but have formed no opinion yet.  Book support is quite limited as well, with Node Web Development and Node: Up and Running: Scalable Server-Side Code with JavaScript  being the only two published books at the moment, although a number of others are in the works.  No doubt as Node matures, so will the educational and tooling support available for it.

 

 

I am going to do a quick test of using Node.js as a simple game server for an SFML based game.  I will update here accordingly when (if) that is complete.

Cool Thing of the Week

19. January 2012

 

 

 

Our first Blender reference guide chapter has just been put online.  Think of it as a mash-up between a quick reference guide and a video tutorial.  We will cover off the most commonly performed actions in Blender with instructions on how to perform them via hotkey or using the mouse, as well as an accompanying image showing the action in, um… action.  We hope to bridge the gap between regular written instruction and video tutorial.  So for those that like moving at their own pace like you would with a written page, but with the clarity of video, hopefully this guide is perfect for you.

 

 

Obviously if you’ve been using Blender for a while, this will be of very little use to you, but if BorderSelectyou are just starting out, I hope you find it helpful.  If you have not, hopefully these will be of use.  Here for example, is the graphic illustrating the (B)order selection tool.  Click any image for a more detailed version.

 

 

We have many other pages in the work, the next one specifically covers the editing process, but any and all suggestions are welcome!  Feel we’ve glossed over an important command in a certain category, let us know!

 

 

Here is the first release though, covering selection and camera manipulation.  Consider everything to be a WIP, subject to multiple changes.  There are also some tutorials in the works, and they are going to assume you are familiar with everything in the guide.  As we bring more sections online, we will be improving the navigation of course.

Art

15. January 2012

 

 

I work on a multi-monitor setup and until now I have been using Blender on a single monitor.  Sometimes though, like when texturing, having a multi monitor setup is ideal.  I had always thought Blender offered no support for working across multiple monitors, how wrong I was!  Not only can any window be duplicated to its own window, it is laughably simple to do!

 

 

image

You know that little tab thing in the top corner of each Blender window you use for splitting and merging Blender windows?  ( If not, check this out. )

 

Well, all you need to do is left click and drag while holding down shift and it will duplicate that viewport into it’s own window.

 

 

 

 

As you can see ( after doing this a couple times ), each looks like a completely different instance of Blender to Windows:

image

 

 

However, if you look in Task Manager, Blender is still a single process:

 

image

 

 

You can now split blender into as many windows, across as many monitors as you want.  Here is Blender split out into 4 separate windows, while the original window is on the bottom left.

 

image

 

 

Changes in one window will immediately be reflected in all the other Windows.  NOTE! Closing the original window will close all the torn off windows, but closing a torn off window will do nothing ( more than close that window ).

 

It’s simple, as simple as a Left Click-Shift-Drag, but it will completely change the way I work!

 

Know doubt the majority of you knew this little feature, I certainly didn’t.  Hopefully it proves as enlightening to some of you as it was for me!

Art

14. January 2012

 

Alright, first off this post has almost nothing to do with, well anything.  I just discovered this and frankly I think it’s damned cool! Although it has absolutely nothing to do with making games, who doesn’t like Lego?

 

I have a Safari online book subscription ( which I love by the way ) so when they add new books I am often exposed to things I was previously unaware of, but this one added today was unexpected!  They just added Badass Lego Guns!

 

Ok, a book about making guns in Lego, that is kinda cool.  A book about making 6 guns in Lego, that’s a bit cooler.  A book about making 6 guns that work in Lego, that’s just epic.  ( Actually, it’s 4 guns, a crossbow and a switchblade )

 

 

The book goes step by step in creating each of the guns, starts with an over view of each gun, then a bill of materials of LEGO pieces you will need.  The rest of each chapter is then basically IKEA style directions on how to assemble the gun ( or crossbow).

 

Obviously, the don’t fire bullets, but instead use ( what else! ) LEGO as projectiles and elastics as the propellant.  Some of these guns though have the look like even being LEGO and elastic powered, they could cause some serious carnage…  Consider the gun featured on the cover, the Warbeast… Yeah, it’s fully automatic and capable of a theoretical 1200 rounds per second!

 

imageimage

 

 

Amazon’s got it for 20$ or of course, as I mentioned earlier, it was recently released on Safari Books Online if you happen to be a subscriber.  Now I just need to come up with a few hundred dollars worth of LEGO!  Wonder how to buy technic LEGO is these days?

Totally Off Topic

Month List

Popular Comments