Grey Alien BlitzMax Game Framework V1.04 out!

Miscellaneous Forums/Blitz Showcase/Grey Alien BlitzMax Game Framework V1.04 out!

Hi everyone, I'm proud to announce the release V1.04 of the Grey Alien BlitzMax Game Framework.

In case you didn't know, the Game Framework is a collection of extremely useful source code files that you can use to produce professional quality games. For more information please see my NEW web page about the framework:

http://www.greyaliengames.com/framework.php

Please take a look because hopefully it will answer your questions. If you think that I can improve the information on the web page then please let me know. I'd love to hear from existing customers too if you think that I should add some more information to help people decide to get the framework. In fact if any of you have any testimonials that you'd let me put on the site (with your name and country) then please let me know as I know that testimonials really help. Thanks! :-)

Here's a quick link to the AOTMG V0.44 demo but you can also find links to Speed Run and Make Me Happy on the webpage:

*DEMO* www.greyaliengames.com/aotmg/aotmg044.zip (6.22Mb)





This version has many improvements and the next version should have support for "proper" Vista directories and also full Mac support (the framework already compiles on Mac but I am planning to convert some special Win32 features over to Mac).

List of major changes (there are loads of small changes, if you want me too list them then I will do):

CommonTypes:
	- *** IMPORTANT. Added TGame.Init() and moved all the code
	  from TGame.New() into it. This means that you MUST call
	  Game.Init() after your Game = New TGame line because
	  there is no longer a New() method which sets up the Game
	  type.  Why?  Because now you can extend the TGame type and
	  when you call New in your extended type it won't call the
	  default TGame init code (which used to be in TGame.New()).
	  Therefore you can write your own TGame.Init() and do stuff
	  like create your own ini files etc.
	- *** Listed all types in alphabetical order (except TGame
	  which is still at the top).
	- *** Gave each type a one line description and tidied up
	  comments.  Pasted all the descriptions into an HTML file
	  called CommonTypes.html.  Check it out.
	- *** Jitter Correction added to timing code. See Version
	  History at the bottom of commontypes.bmx for more info.
	- *** At the request of Space Ace, KeyHit and KeyDown no
	  longer share the same Keys[] array.  Keydown now logs
	  state changes in the KeyStates[] array.  This now
	  works more like BRL's PolledInput.  Please check your
	  games/apps to make sure that they still behave the same
	  (mine do).
	- *** Added fields to TSplashScreen to support a
	  scrolling/zooming background behind the logo.
	- *** The sound driver is automatically changed to OpenAL
	  for Windows Vista because it's more stable than FreeAudio.
	- *** Added TGame.ChangeSoundDriver and a SoundDriver field
	  which is also shown on the debug display.  WARNING: If you
	  have created any sound channels BEFORE TGame.New() is
	  called or you have some global variables or types which
	  use AllocChannel() you'll need to alter their code so that
	  the channels are created after TGame.New() is called OR
	  comment out the ChangeSoundDriver() call in TGame.New.
	- *** TButton now supports an expand on mouse over effect
	  via the ScaleOnMOMax field.  It looks pretty neat.  Check
	  it out!
	- *** Added Precache() to TImageBank, TMenu and TButton.
	  Very useful because it sends the images to VRAM for
	  quicker drawing of the first frame.
	- *** TFade now supports a panning, zooming background that
	  can be faded in and out quicker than the main logo.
	- *** Added TParticleGenerator and TParticleGeneratorList.
	- *** Added UserFunction(p:TParticle) to TParticlePhase.
	  You can set this to your own function and it will get
	  called when the phase ends, very useful for making stuff
	  happen when the particle hits its destination for example.
	- *** Added AnimStoppedFunction(TSprite) to TSprite. It's an
	  optional user-defined function that will be called when
	  the animation finishes.  Useful for triggering something
	  else.
	- *** Added TButton.MouseOverUserFunction%() field.  This is
	  an optional user-defined function that is called when the
	  player moves the mouse over the button.  You can put any
	  special code you want in here (perhaps to activate some
	  special effects) and if you return a non-zero value the
	  Mouse Over state will not be set and nor will button
	  clicks be accepted.
	- *** Added TGame.TerminatedUserFunction%() field.  This is
	  an optional user-defined function that is called when the
	  player clicks X in the top right of the window.  You can
	  put any special exit code in here and if you return a
	  value of 1 the termination will be aborted!

	CommonCode:
	- *** Listed all CommonCode functions in alphabetical order.
	- *** Gave each CommonCode function a one line description
	  and tidied up comments.   Pasted all the descriptions into
	  an HTML file called CommonCode.html.
	- *** IMPORTANT: cctg_DrawImageRect() renamed to
	  ccDrawImageRect().  Check your code.
	- *** Added ccBezier()
	- *** Added ccSplitStringIntoLines() for spliting text read
	  with LoadText into an array of strings.
	- *** Added ccFastRand by by Manel Ibáñez (big speed
	  improvement), and also ccFastRandSeed().
	- *** Added ccGetVersionString() by Dave Kirk.  Returns a
	  string containing the OS version.
	- *** Added ccGetMemoryStatus()



If you haven't received V1.04 yet then please let me know!

Once again thanks to my loyal customers for your continued support.

So what are the new features?

ahem good point. It's quite a big list, but I'll post the major ones only.

gray I just got the new framework and I noticed that the jitter correction timming demo is not working because you forgot to create it before you init it. I got it to work. Just thought I mention it.

great work by the way. And Thanks for the update.
I finally got some time to study it and I started to write my first game in it. I am trying to duplicate the original vector asteroids game. and is working out pretty good.

I'm having trouble finding descriptions of what every command does.

Jesse. Weird. Do you mean ExampleTimingWithJitterCorrection.bmx ? Because in that code I call FixedRateLogic.Init() just before the main loop. Or do you mean something else? Perhaps you could email me about it in mode detail? Thanks.

Azathoth: Have you look at these:

http://www.greyaliengames.com/framework/commontypes.html
http://www.greyaliengames.com/framework/commoncode.html

Or do you mean longer descriptions?

Yea, I mean indepth. Kind of how the BRL docs list the methods and functions (even if some of the descriptions are next to useless).

Hi Paul. I'm afraid I don't have that in documentation form yet. At the moment if a function or method needs more explanation I often have a comment at the beginning describing what you need to consider about the input params and what output it gives along with any warnings or whatever. Also most functions/methods are commented in the middle to explain odd bits if need be. However, I would like to make some better docs as you suggest. It's on the to do list, so keep an eye out for it. Are you a customer? Paul Bray or Sagor from Australia?

try running the Example TimingWithJitterCorrection.bmx from the frame work you mailed out and you'll know what I mean.
In Bmax debug mode:
I used to get this error "Unhandled Exception:Attempt to Index Array element beyound array length" that is because you are not calling "FixedRateLogic.Create()" before calling FixedRateLogic.Init()
I had to add that line in orted to get it to work. I think everyone should get that error if run in debug mode. I don't know why nondebug mode does not give an exception error. but I think it may cause it to crash sooner or later.
Everyone's shoud crash under debug mode unless you send me a version different from what you send everyone else.

Yea, I'm Paul Bray

Jesse, thanks! yep that was indeed a bug, fixed it now thanks to you.

Azahoth: OK then :-)

Hi Grey, I have a request to produce a full version of my game, produced with your framework. I'd a trial version doing the rounds.... bit more work at the weekend producing the final product, good news - but more work.

Shame you haven't sorted that TTediousButNecessaryWork type. {;-)

Hey great news! :-) Well you just gotta stick this last part out, it's what "finishers" do. I'm on the last leg of my game now, gonna take several weeks yet. The game screen is totally done and polished, just gotta do all the sub-screens (and there's a lot) then Vista support (ack) and a Mac version oh and level design and beta testing...

I spend most of today making a TGameText type which reads in Unicode files (suitable for special characters e.g. Russian) and then applying it to various places in the game.

TGameText type sounds very useful, I've a letter/graphical image mixer that I use at the moment outside of the framework. I use the framework to produce the text for an external app, works well.

TBitmapFont added!

[edit] It also supports Unicode characters!

Cool Grey, the TBitmapFont is a great addition to the frameworks functionality. Sort of completed the full version of my app - I just need to set aside the time to alpha test it. Now where'd I put that time travel device...

I just checked out your trial app. Looks familiar ;-) Good luck with it! The installer auto launched the VB inferface and later when I closed it the installer was still there with the bar saying finishing and I had to Ctrl+Alt+Del it. I first when into the game without selecting a word list and play game bombed out - it was OK once I selected a word list. Perhaps a default word list? Or a warning? Also the high scores screen crashes. But I guess you've got more work to do on it yet.

Cheers Grey, I thought I'd invoked a default path - my version control isn't what it should be! I'll have to look into the high scores screen. And as for the installer, yep work to do. Thanks for helping to alfa it.

I've just checked my code and I missed resetting an ini file before compiling my installer exe. I've thought of a sweeter way to implement this functionality now.

Of to check out the other gremlins, as I said alfa's are prone to them (;-)

Just checked out your new website for your framework, the in-game pause menu looks pretty swish. I can see some more possibilities now... code is forming in my swede... But it's Saturday night and I've a movie to see.

Yes it's pretty normal to have an in-game menu that pauses the game. Also good if Escape calls it up. It always disturbs me when escape just quits of of the game with no warning!

***PLEASE NOTE*** I'm away from 28th July to 10th August in the Ukraine doing Aikido so I will be unable to offer customer support during that time period. I hope that this does not inconvenience anyone.

OK I'm back! Thanks to everyone who placed orders when I was away for your patience. You should all have your copies of the framework by now. If not, please let me know.

I'd 3 more requests for my final product whilst on holiday, have put another 4 hours or so into it. Haven't put any of the improvements into the trial version yet, came across TortoiseSVN which'll help with the merge's with your updates (it's got a great diff / merge tool!)

As for the InnoSetup bugette (I use InnoSetup for my installer scripts), she's elusive as I haven't managed to replicate it.

The High score crash was concerning me, but I just realised it was related to the 'not picking a word list initially' issue. With TortoiseSVN I'm keen to merge in v104.... might manage it this weekend.

That's great that your are generating this interest. Anyway good luck with it - just get it done and polished now.

Do you have a list of which features currently do not work properly on the Mac? I'm thinking about buying this, but I develop primarily for OS X. I apologize if you already posted this elsewhere, but I cannot seem to find it.

FAO: "Ringo Münchow"

Hi Ringo, I've received your email and just in case you are not receiving mine I've posted here too. I sent the framework to you
on 09/09/07 at 19:15 along with two plain text emails for you to confirm receipt in case the zip files didn't get through. If you receive my email OK this time then I can try again. Please respond soon.

jhanson: I sent the details by email, as you know, but you got me thinking that I should probably add that detail to my FAQ.

Looks useful!

"Introduction

CommonType.bmx contains a large library of very useful types including the main TGame type. It also contains several keyboard and mouse functions which override the BRL ones because the framework uses it's own event-based input."

You shouldn't put an apostrophe in its if it is being used as a possessive. It's only ever means it is or it has.