15 May, 2010

What's new?

For those who have been very patiently following this blow (I stress that because I haven't been here updating it), I should let you know a few things:

1. I'm moving my blogging over to Tumblr.
2. Apple's new TOS has killed my iPhone game engine project (see below).
3. I've been working (non-game) projects that I'll be posting about soon.
4. I'm having a blast rediscovering Hypercard, now Revolution.

Head on over to the new blog and see a picture of my daughter (coming up on her first birthday), and I'll be updating that space with a lot more information soon... I promise. ;-)

Apple's new iPhone SDK TOS:
3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

16 August, 2009

Isabel Massung born 7/23/09

Just wanted to drop a line to those who follow the blog and let them know that my daughter, Isabel (pictured right) was born 7/23/09. She was 4 lbs. 12 oz, and 18+3/4" long. She's absolutely perfect, and I love her more than anything in the universe. :-)

10 March, 2009

Watch This Space!

Wow, it's hard to believe that it's been over a year since my last post here!

A lot has changed in the past year, too. I've changed jobs (now work for Disney Interactive), moved to Texas, and found out I'm about to be a daddy. And I've been fortunate to be easily weathering the global financial storm that's currently upon us.

In my spare time I've been working on a new project that is getting ready to start posting about. Anyone who followed Unstdio in the past will be very interested in following this one as well once I announce it.

Stay tuned!

08 January, 2008

Update from Object Arts

This was posted by Andy Bower on comp.lang.smalltalk.dolphin:

Yes you can expect maintenance releases for Dolphin. As you know Dolphin is currently an excellent tool for building Win32 based applications and one wouldn't expect that support for Win32 is going away anytime soon in the Windows OS. So, it shouldn't be too difficult for us to keep Dolphin running under future versions of Windows providing the Win32 base remains supported. Indeed, we have to do this for applications that we have running in house.

The announcement back in August was intended to convey the fact that, given the poor commercial performance of Dolphin, we just do not have the resources to commit to a major development programme; the sort that would be required to port Dolphin to .NET.

So, I guess nothing has changed but perhaps I didn't explain the situation clearly enough back in August.

Best regards

Andy Bower

This is great news!

Jeff M.

06 December, 2007

Sorry for the Lack of Posts

I've been quite busy of late. I've been trying to modify the GameEngine package (in the very little time I've had lately) so that it will "just work" with the Community Edition of Dolphin, but I've been unsuccessful so far. I'll be putting up a new version as soon as I get that working.

As far as future updates go, I must admit that my motivation has dropped significantly since Object Arts' announcement to discontinue development of Dolphin. I've been looking into porting it to VisualWorks, but I've grown to love Dolphin. While there are a couple things I'd like to add/change (a GUI layer primarily and then adding physics support), I feel that the engine is fairly complete for someone to make something simple with.

I've been toying with the idea of implementing my own [tiny] Smalltalk just for games, and even slapped together a simple image and interpreter. But, that's still a ways off (and a bit pie-in-the-sky) considering the time I have to "play" with.

12 August, 2007

Sad News

Looks like the future of Dolphin Smalltalk is rather uncertain. After a 10 year run, Andy and Blair are calling it quits. They did an amazing job with Dolphin, and their work was definitely appreciated by many. Here's hoping they do great in their next pursuit...

comp.lang.smalltalk.dolphin

22 June, 2007

Testing New Waters

It's been a while since my last post. I've been quite busy with life and work, and haven't had much of a chance to do anything with the game engine. I also purchased a new MacBook Pro (15"), which I absolutely love, and do miss my time with Dolphin (but not Windows!).

I've gotten the latest Parellels Desktop application running with Windows Vista, Dolphin is installed on it, but something isn't working with OpenGL in it. I'm not sure if it's Parallels that's having problems or Vista. Needless to say, this is the biggest hold-up for continued work on the engine. Hopefully there isn't a lynch mob forming because of my switch to Mac.

In the mean time, since it's based on Smalltalk, I downloaded Xcode from Apple and have started programming in Objective-C. I thought I'd give porting the basics of the game engine to it and see how that went. There have definitely been ups and downs. Objective-C is a very nice language, and Cocoa is a wonderful set of classes to help ease development. But I seriously miss the class browsers of Smalltalk.

Continuing my lust for more things Smalltalk, enter F-Script... Since Objective-C is derived from Smalltalk, it has reflection. F-Script is a Smalltalk scripting language intended to leverage that.

I've taken the Objective-C version of the engine (in its rudimentary form) and instead of subclassing GameActors and GameScenes (and overriding methods like #advance:) to create gameplay, each one is just an instance with a script, and calls out to the script methods that make it unique. Consider this example of an actor:
sprite := nil.

"Called when the actor is initially added to the scene."
create := [
GameSprite fromTexture: 'media/ship.bmp'.
self transform setPosition: 10 <> 10.
].

"Called once per frame to advance gameplay."
advance := [
self transform rotate: 10 * engine deltaTime.
].

"Called once per frame to render the actor."
render := [
sprite renderAt: self transform.
].

The above script shows off many cool features of Objective-C and F-Script....
  • F-Script instantly has access to all of the game code (as witnessed by the use of GameSprite).
  • Before the script was compiled, the game can assign identifiers in the script to objects (as seen through the use of "engine" and "self").
  • Objective-C code can query identifiers in the script and call them (as seen by the assignments of create, advance, and render, which are then called at runtime from Objective-C).
What makes this all-the-better is that none of this required any fancy function hooks, as would be required with other scripting languages like Lua. With a little more effort, it will be extremely trivial for actors and the scenes to even make direct calls to OpenGL.

Now, with anything "new and cool" there will always be pros and cons.

The biggest pros in this case are that the game doesn't need recompiling, and that scripts drive most of the gameplay. That's great, especially for teams that separate programmer and designer. Smalltalk still has it beat since I can recompile functions at runtime to update gameplay, but separating gameplay scripts from actual game code is a very good thing.

As for cons, the biggest one is that using any scripting language can make all but trivial games very difficult to program. For example, try and use a scripting language to program Othello. The interaction with the game and objects may be simple, but rules, and even simple min/max AI aren't so obvious in their solutions (and performance will suffer tremendously). In the end, I'm sure this code would just be done in Objective-C, though, and F-Script would just access to it (board isMoveValid: 2 <> 2).

F-Script isn't an actual Smalltalk. It does have a wonderful class browser, though. And while I take some time off from Dolphin (and Windows), I must say that programming in Objective-C with F-Script at the helm is a delight, and I'm hoping to leverage both significantly on the Mac.

If any of you have a Mac, be sure to download F-Script, and send me an email so I can share some of the work I've done.