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.

19 May, 2007

Engine Available!

I've updated the Unstdio website and the 2D game engine is now available for download. It's definitely in an alpha stage, so as soon as I get some time to continue work on it some of the classes may change. There are also some classes that are currently there as placeholders, and not currently used (for example, GameMenu).

If you find anything wrong, definitely email me and I'll be sure to fix it as soon as I can. If you modify the code and add any features, I would very much appreciate those being made available to myself and everyone else, but that isn't required. Definitely do not claim ownership of the engine, and if used, please give credit where it's due.

Enjoy!

15 May, 2007

Brief Update

I'd like to apologize to everyone for the lack of updates here. Things have been very busy at work (and will be for a while), and I needed a bit of time off - so I took a brief vacation.

I'm going to trim out a few features that I've been working on as I won't be able to finish them up immediately (and they aren't strictly necessary - just nice to have), and post a version of the engine along with a couple incomplete packages. Hopefully that will be done in the next day or two. I'll also try and type up some documentation on how some of the packages work with each other.

I'll post a follow-up to this once they are available for download.

05 April, 2007

DirectX 9.0 Wrapper Available!

Even though the game engine is only using DirectInput, I now have the DirectX 9.0 wrappers that I've put together (Direct3D, DirectInput, XACT, and XINPUT) available for download at www.unstdio.com.

Feel free to download them and use them in your own projects. Not all the COM methods are wrapped, and the D3D version is lacking quite a bit, but has plenty enough to get started. As I add more functionality and improve on the overall package I'll be sure to post it here.

I'm in the process of adding a little more functionality to the BASS and DevIL packages now before putting them up for download, and OpenGL is just about done.

Stay tuned...!