Grey Alien SUPERSTRICT Game Framework V1.09

Community Forums/Showcase/Grey Alien SUPERSTRICT Game Framework V1.09

Grey Alien(Posted 2008) [#1]
Hi everyone, OK so I've just released a SuperStrict compatible version of my awesome BlitzMax Game Framework on my forum due to popular demand. You can find it here in the Framework Downloads forum if you are a registered customer:

http://www.greyaliengames.com/forum/

You can find out more details about my framework and download a demo in this thread: http://www.blitzbasic.com/Community/posts.php?topic=75097

There are loads of changes in this release but I don't have time to list them all right now, so here are the main ones:

- It's now SuperStrict compatible!
- TButton now supports a TImageFont or TBitmapFont caption! Very useful for localising button captions instead of having to generate graphics for each one.
- TSprite and TParticle enhancements.
- TKeyRepeat and TMouseRepeat added and TListBox uses them.
- TImageBank, TSoundBank and TGameText now use TMap instead of TList for speed.
- Lots of tweaks and some bugs fixes to CommonTypes.
- Slow motion/speed up ability added to TFixedRateLogic.
- TBitmapFont data files now no longer need to be edited before use.
- Few CommonCode tweaks and new functions.
- Moved examples from AOTMG into a special Examples folder.
- Updated BasicSetup.bmx to use AOTMG graphics so that it can be compiled straight away.
- Bug fix in AOTMG TPlayer.Die().
- Possible Fix to "No Sound on Mac" issue.
- Mac Shared Data path fix.

Enjoy!

btw, my new game is due out in November and will be using this framework, so keep an eye out for it. It will hopefully be another top 10 hit.


Beaker(Posted 2008) [#2]
Yay for SuperStrict!

Has anyone had any success combining the framework with miniB3D?


MGE(Posted 2008) [#3]
Nice!


InvisibleKid(Posted 2008) [#4]
hey nice looking update thanks Jake.

@ Beaker i haven't personally tried minib3d let alone with the framework yet, but atleast one person has had some success with the two.
http://www.greyaliengames.com/forum/viewtopic.php?t=153


Warpy(Posted 2008) [#5]
I will never understand SuperStrict. I much prefer a compiler that just gets the gist of what I'm trying to get it do. Is SuperStrict faster because it's more explicit?


Grey Alien(Posted 2008) [#6]
Yes, apparently the compiler is able to make a few more optimisations because of SuperStrict.


markcw(Posted 2008) [#7]
Cool!

> I will never understand SuperStrict.

Yes, yes, you will. :)


Grey Alien(Posted 2008) [#8]
Now I use superstrict I feel like a casual drug users who's moved onto the hard stuff, or a hard rock fan who's moved into death metal ;-)


TartanTangerine (was Indiepath)(Posted 2008) [#9]
I Guess We Are takling full ON capitalis(z)ation an' all:)

Actually I can't wait to get using this stuff !!!!!


tonyg(Posted 2008) [#10]
I Guess We Are takling full ON capitalis(z)ation an' all:)

Nope, just have to declare every variable and it's scope plus function returns.
<edit> ... but you knew that. Didn't you?


Grey Alien(Posted 2008) [#11]
Yeah I've only done what Tonyg says, but that took hours of mindless editing. I just stuck on some Slayer and got on with it - converted my current game too.


markcw(Posted 2008) [#12]
Slayer??


Grey Alien(Posted 2008) [#13]
Yeah it's fast-paced so good to do something mindless to. Specifically Reign in Blood and Christ Illusion.


Blitzplotter(Posted 2008) [#14]
Another update, cool. Keep up the good work Grey, I'm moving positions at work Monday so should be less coded out by the evening - which'll be nice. Might get my hobby coding MOJO back.


Grisu(Posted 2008) [#15]
Is superstrict code also faster at runtime?


ziggy(Posted 2008) [#16]
Grisu. Yes, a lot specially if you're using object to integer casting like:

MyList = New Tlist

You're assigning a TList to an integer. This is just terrible performance-wise, as the compiler has to add re-casting operations. And this is jsut a small example of some of the things that work better on SuperStrict or Strict modes.
Additionally, code is easier to mantain as it is less ambigous.
Local MyList:Tlist = New Tlist
Looks much better, you know the scope of the variable and the kind of variable, as instance.


ziggy(Posted 2008) [#17]
Just a fast example:
Strict
Local m:Int = MilliSecs()
For Local x:Int = 0 To 100000
	Local list:TList = New TList
	list.AddFirst("Hello")
	list = Null
Next
Print "Time: " + (MilliSecs() - m)

this prints 63 on my computer
Local m = MilliSecs()
For x = 0 To 100000
	list = New TList
	ListAddFirst(list, "Hello")
	list = null
Next
Print "Time: " + (MilliSecs() - m)

This prints 1544 as time, so it is about 24 times slower on non super strict.


Grisu(Posted 2008) [#18]
Thanks Ziggy!


Grey Alien(Posted 2008) [#19]
ziggy: Your top example is not using superstrict, just strict and the framework was always strict, I just made it superstrict...


ziggy(Posted 2008) [#20]
i'm not saying that it was not strict, I was just answering a Grisu question!


therevills(Posted 2008) [#21]
Wow... just tried Ziggy's example... didn't know it made such a difference, although I alway declare the variable and type before using them.

On my machine, when you declare the variable type I get 35 and without it I get 531. (15x slower)

If you remove the Strict (or Superstrict it doesn't matter in this example) the timing is the same, as we are still declaring the variable and it's type.

Superstrict just forces that you declare your variables and their type before you use them... so GA now your framework is Superstrict and you have declared all your variable types it should be quicker ;-)


plash(Posted 2008) [#22]
i'm not saying that it was not strict, I was just answering a Grisu question!
Not exactly.. he asked if SuperStrict was faster at runtime, your code did not properly test this theory - Strict <> SuperStrict!

EDIT:
Yeah it's fast-paced so good to do something mindless to. Specifically Reign in Blood and Christ Illusion.
Huh.. I would have thought something like Bach, something that calms for those occasions that cause you to go insane. Different types of people, I suppose :)


therevills(Posted 2008) [#23]
Just noticed... GA you might want to update your signature...

*** Want to make games that rock in 2008? Get the BlitzMax Game Framework (V1.06 out now!)***


Grey Alien(Posted 2008) [#24]
@Ziggy: Anyway it was a great example with an AMAZING speed different, thx.

Huh.. I would have thought something like Bach
Funny you should say that as I listened to the Brandenburg concertos right afterwards and then some Mozart too :-) I have a wide taste and pick what I feel like at the time.

@therevills: Thanks, although V1.09 is not an official "full" release, but I'll change it anyway.


boomboom(Posted 2008) [#25]
Grey, I just purchased your framework, but I am a little confused as to the best way to work with it, what is a 'screen' and when should it be used etc...

Was there some kind of guide or tutorial that I should have read in the package?


Grey Alien(Posted 2008) [#26]
Hi Boomboom, thanks for the purchase! OK some things you need to check out: Did you download V1.09 and install it over 1.06 yet? In 1.09 there is an examples folder which has a project called ExampleTitleScreen. That is a good place to get started. Also in Docs there is a doc called Creating a Basic Setup which has two screens. And you should check out gettingstarted.html which explains how TGame changes screens and also how to make your own TScreen with a menu. If you have any more questions, post them on the framework forum as there are loads of helpful people on it, and also when I answer, then everyone can benefit from the answer. Hope this helps!


boomboom(Posted 2008) [#27]
Thanks Grey. I look forward to using the framework and suggesting some improvements :)


Blitzplotter(Posted 2008) [#28]
Example Title Screen sounds like an interesting new addition, I've almost got my hobby coding MOJO back ....... a change of employ is doing me the power of good!


Grey Alien(Posted 2008) [#29]
Example Title Screen sounds like an interesting new addition
Actually that's been around for ages but I moved it from the AOTMG folder into the new Examples folder.


Grey Alien(Posted 2008) [#30]
I'm away for 3 days in Seattle from Tues 7th Oct to Thurs 9th Oct so won't be able to process any orders of offer support until I return.


InvisibleKid(Posted 2008) [#31]
hmmm
from Tues 7th Oct to Thurs 7th Oct



GfK(Posted 2008) [#32]
hmmm
from Tues 7th Oct to Thurs 7th Oct
He's off fighting daleks. Or he's away until 2010.

Or he typed it wrong.


InvisibleKid(Posted 2008) [#33]
lol

the "I'm away for 3 days" part makes it pretty obvious what he means, i just thought it was funny how 'WE ALL' make silly mistakes like that. i know i've done that before.


Taron(Posted 2008) [#34]
He's off fighting daleks...

This is why I love being amongst fellow programmers. Delightful smartasses, hahaha!

His hasty note felt rather like he was on a plane back to his amish village and had to shut down and leave behind all electronic devices.

...but seriously, I'm impressed and happy for him, that he gets so many orders that he's afraid to be away for 3 days. Or I'm sad to hear that he's not getting enough orders to see to an automatic solution for that part of the business. Either way, it makes me all emotional! ;)

Thanx for the laugh, GfK!


Grey Alien(Posted 2008) [#35]
Ahem, fixed, thanks all! :-) I do get quite a lot of orders and don't want to let people down who may be sitting there twiddling thumbs for 3 days. I never got round to automating framework sales, sorta wished I had.


GfK(Posted 2008) [#36]
...and stop buying your annual calendars in Poundland bargain bins. :)