2013-04-24 19:17:48

Hi all!

After several months, I feel it is high time for a new BGT release. So here it comes, packed with changes and improvements that I hope you will all find useful. In fact, there are so many changes so that I figured I should call it version 1.3.

Please note that due to the introduction of release and debug builds, you need to completely uninstall any old version of BGT from your system before installing this one. Otherwise you will get an old icon lingering in your program group.

As usual, the change log follows below:

Version 1.3 (revision 1):
* Updated the script interpreter to the latest version which fixes some more bugs found by users, and adds the following features:
1. The infamous "unexpected end of file" compilation error now shows a lot more information.
2. It is now possible to declare several class properties of the same type on a single line, separated by comma.
3. It is also possible to initialize class properties in their declaration, rather than having to do it in the constructor.
Note: This means that some obscure scripts, where a child class calls a method in the parent class that in turn tries to access its members before its constructor has been called by the child class, will now result in a null pointer access script runtime error. This happens very rarely, but should be taken into account if you are upgrading and have scripts that may potentially reproduce the above scenario.
4. Large scripts will now compile significantly faster, and loading of precompiled byte code is faster as well.
5. The script compiler no longer implements a default constructor for classes that define a constructor with arguments. If you want both a default constructor and a constructor that takes arguments, you must define both of them explicitly (see the language tutorial for more information).
* Added DLL call support.
* Added the ability to compile scripts either as debug or release builds, and added documentation to explain the differences (see appendix h).
* Added some basic serialization functions that make it easier to save and load data from files or from memory.
* Made it possible to serialize and restore the exact state of the random number generator at any point in time.
* Added an object called combination which contains algorithms to calculate different types of combinations from an arbitrarily large set of items (sponsored by Marc Andersen).
* Added a pan property to the tone synth object which affects all subsequently generated notes.
* Added reverberation to the tone synth object, which is controlled by various properties.
* Added a new function called is_admin which checks if the program is being run with administrator priviliges (thanks Liam).
* Added some new functions to force/simulate keystrokes (thanks Nikola).
* Added two new functions (string_base64_encode and string_base64_decode) which makes it possible to convert binary data to and from a printable, Ascii compatible representation.
* The keyhook is now automatically uninstalled when the user leaves the game window, and installed again when the window is reactivated. This is to prevent lag in certain screen readers when the user is working with an application other than the game.
* Upgraded to the Visual Studio 2010 compiler, which gives a performance boost.
* Changed it so that initial text that is placed in an input box is selected automatically when the window appears (thanks Nikola).
* Added a new folder constant (DIRECTORY_MY_DOCUMENTS), see appendix e for more details (thanks Liam).
* Significantly optimized the way audio files are read, resulting in a great performance improvement when loading sounds (thanks Aaron).
* Optimized the string_contains function.
* Significantly optimized the internals of the sound_pool include class so that it now runs much faster.
* Made the script compilation result dialog show the amount of time that the compilation took.
* Added a speak_to_file method to the tts_voice object (thanks Marc).
* Added a function to hide the game window (thanks Nikola).
* Added the concept of named items to the dynamic_menu include class, making it easier to figure out what the chosen item is regardless of in what order the items were added.
* Added a new method to the audio_form class that allows a listbox cursor to be changed (Thanks Damien).
* Allowed the home and end keys to navigate to the top and bottom of a listbox in an audio form.
* Fixed a serious bug in the audio subsystem which would cause random crashes.
* Fixed a crash which would occur when converting large floating point numbers to strings (thanks Corey).
* Fixed a bug which would cause the string_split function to enter an infinite loop if the NULL terminator was used in the delimiter (thanks Damien).
* Fixed a crash which would sometimes occur after a runtime error (thanks Corey).
* Improved support for the Window Eyes screen reader (thanks Aaron and Jason).
* Fixed a problem where erronious warning messages could be triggered if the initialization of the global variables failed (thanks Damien).
* Fixed a bug in the sound_pool include class which made it try to reload a sound that came back within earshot, from the currently used storage rather than the storage that was active when the sound was initially loaded (thanks Liam).
* Fixed a bug in the dynamic_menu include class which would cause the intro message not to be heard if the auto_speak_first parameter was true and the first item used an output different from the intro message (thanks Aaron).
* Fixed a bug in the audio_form include class in the get_list_count method where the maximum index was being returned rather than the number of items as described in the documentation (Thanks Damien).
* Fixed several multiline input field bugs in the audio_form include class (Thanks Damien).
* Updated the language tutorial with information about the new behavior of automatic default constructors, and about how to assign values to class properties directly in their declaration.
* Added a serialization tutorial.
* Documented the string object.
* Added four missing overloaded operators to the list in the language tutorial (opPreInc, opPreDec, opPostInc and opPostDec).
* Added a note to the number_to_hex_string documentation regarding the fact that it produces lowercase results (thanks Jordan).
* Added a list of command line options available in the BGT engine (see appendix g).
* Updated the documentation for the profiler to explain the differences when profiling debug versus release builds.
* Failed to document the new array methods mentioned in the change log for version 1.2 revision 1 (thanks Marc).
* Failed to document the new get_size method mentioned in the change log for version 1.2 revision 1 (thanks Damien).
* Failed to document the sound_is_playing method in the sound_pool include class(Thanks Lukás).
* Failed to document several methods of the dynamic_menu class (Thanks Lukás).
* Fixed an error in one of the examples in the language tutorial to do with integer calculations.
* Fixed a few typos in the html code in the documentation (thanks Nikola).

Thanks to all of those who use the engine on a regular basis and help me improve it by your constant stream of feedback, constructive critisism and suggestions.

Kind regards,

Philip Bennefall

2013-04-24 20:03:16

hi,
Wow philip! Loads of changes.
One thing, i don't see the dll call support documented anywhere. Could you tell me where its located?

Underworld Tech.
Accessibility from us, to you.
Visit us

2013-04-24 20:49:10 (edited by philip_bennefall 2013-04-24 21:37:00)

Hello Kyle,

Sure. It's in the foundation layer reference, and it is known as the library object.

Edit: With my usual good fortune, I discovered just a couple of hours after release that I used the wrong compiler settings. This resulted in the binary size being much greater than it needed to be. If you download the installer again, you will get the proper version. Sorry for the inconvenience.

Kind regards,

Philip Bennefall

2013-04-25 01:17:21

I was going to complain about the DLL only being for the pro people, but I thought about it before complaining. LOL. That feature is a pro feature if I ever saw one. LOL. Anyway, you have given me some more features to play with over the summer. Hopefully I won't find it to diffecult for my taste. Maybe I should go back to project maze now that I can put it out as a debug version...

All that is gold does not glitter, Not all those who wander are lost; The old that is strong does not wither, Deep roots are not reached by the frost. From the ashes a fire shall be woken, A light from the shadows shall spring; Renewed shall be blade that was broken, The crownless again shall be king.
DropBox Referral

2013-04-25 01:58:20

Thanks for mentioning where to find the DLL documentation; I was wondering the same. Looks like I'll ave plenty to play with here.
smile

Best Regards,
Hayden

2013-04-25 21:37:20

hi,
I must say, that i love the new release of the engine philip. I can tell you've actually put a hell of a lot of work in to this, and i think i'll definitly be buying me a light lisence when i have the money.
When i have said lisence, expect some more games from me.
And, i'll say nothing as yet, but i'm planning a title called nova4. When it looks like i might have something substancial i'll post a topic about it.
Thanks,
Kyle.

Underworld Tech.
Accessibility from us, to you.
Visit us

2013-04-25 23:58:04

Hello Kyle,

I'm glad to hear you like the new version. It is the result of several months work, so I'm pleased that it has been so well received. And of course, I'm always interested in any new projects developed with it. Good luck!

Kind regards,

Philip Bennefall

2013-04-26 13:28:12

Well Phill...

As I am respecting what you are doing with the BGT but...

As it's callet blastbay GAME TOOLKIT, why it's really nota  toolkit? Ofcourse, it's the most easier another LANGUAGE to code GAMES ONLY but again, it's not a toolkit but another LANGUAGE.
As i am searching and comparing it to real toolkits for the games, these are giving me or another users who can't code, don't want to code, to learn coding in ANY form chance to make the games without any coding knowledge. There are options to code, ofcourse, but mainly it's typical tool with menus and drag and drop objects, players etc. Why your product haven't these basic features or, why your product isn't created in that way as it should? It's your politic, Okay, but i am asking about really important thing.
This should be created in that way and it should have option to code manually if someone wants.

Cheers

Twitter
Add me on Steam
Discord: lirintheblindguy
BattleTAG: Lirin#21759

2013-04-26 13:45:12

I'm not exactly sre what you said, but if you are insinuating that PHlip should just create some massive IDE I'm not sure I like that. I think you'll find that manual coding anyway will end up being faster than h aving to pick a function or class template to add then filling in the relevant data. And I think you're being a little picky about the word "toolkit."

Best Regards,
Hayden

2013-04-26 21:30:29

It has the simplest sound/speech/screen reader/file/etc systems I've come across, which is one of the huge advantages to BGT.

Any ideas what a good UI would be like? I'm sure someone could come up with something halfway dcent, if more limited than the ability to free-code.

看過來!
"If you want utopia but reality gives you Lovecraft, you don't give up, you carve your utopia out of the corpses of dead gods."
MaxAngor wrote:
    George... Don't do that.

2013-04-26 22:16:03

Well, as totally not-coding human, i can't say how good it is or it isn't so keep this in mind. I am not programmer, and i'll be not for sure as it's really my weak point. What i wanted to say here is to have complete toolkit / ui to do what I want without any programming skills which are hardly needed to do something even with this BGT. I saw many examples of game makers, RPG makers, fighter makers etc, or more standard game makers but expensive as hell. Ofcourse the reallty expensive tools like i am mentionng can do most things and manual coding ia an option there.

Twitter
Add me on Steam
Discord: lirintheblindguy
BattleTAG: Lirin#21759

2013-04-26 22:29:40

Hi Seal,

The term toolkit is very generic, and can be defined and interpreted in several ways. In the way that I gather you mean, e.g. a set of ready-made classes that implement generic functionality that you adapt by pointing and clicking, if that's how you define a toolkit then BGT is certainly not one and was never intended to be. I never intended to make a solution that makes it possible to write games without writing them, if that makes sense. But the way I interpret the word toolkit is a set/kit of tools, whether they be controlled by a user interface or by code, to simplify the steps that are part of the game creation process. So in that respect, BGT is most definitely a toolkit because it makes the necessary tools available to you. With tools, I mean the bits and pieces such as sound manipulation, timers, sapi, files, etc etc. These can be accessed from other programming languages for sure, and there was never a question about that, but BGT strives to incapsulate these in a framework that is easy to use when you have some basic knowledge of scripting. You could take this a step further and write wysiwyg (what you see is what you get) tools on top of BGT that would have the properties you describe, such as a generic player class as well as enemies etc, but that has never been within the scope of the foundational BGT engine. I most certainly welcome such contributions, however.

I hope my explanation made sense, and that the terminology that I use is a little more clear now.

Kind regards,

Philip Bennefall

2013-04-27 11:40:49

Yeah, thanks for replying. Everything si clearn.
Good luck for everyone who is programing, and my ideas / projects will be in my midn for ever lol

Twitter
Add me on Steam
Discord: lirintheblindguy
BattleTAG: Lirin#21759

2013-04-27 15:41:45

I see BGT as an excellent toolkit.  I've made some more extensive games than I would have without it.
What I personally enjoy about BGT is I can focus on writing the high level code (levels, enemies) without worrying about all that low level stuff (keyboards, sound ETC). It makes it nice because I can focus on "What do I want my game to be like?" not "How do I make this sound driver/this keyboard driver work on everyone's system?" It makes coding so much more fun, and it makes it so much nicer to turn my ideas into reality.  Philip, speaking as someone who got the light license at preorder time, I commend you for all the wonderful work you have put into this project.

skype name: techluver
Feel free to add me.

2013-04-27 17:29:23

Thank you very much for the kind words. BGT has been a long term project for me, but one which offers a great deal of variation in the type of work that it requires which is why I have been able to keep it up. To see the user base grow from just a handful of people back in early 2010, to a point now where we have several people making fairly large games with it, has been a fantastic experience.

Kind regards,

Philip Bennefall

2013-04-27 19:43:24

to seal:
I would be interested in your game ideas. I have moderate coding skills, and I should be able to program a sidescroler, a 2d game, just something like final conflict, zompacalips I'd even would go so far is advantures at sea. It's just, I can't get any good game ideas in to my head.

Roel
golfing in the kitchen

2013-05-01 14:11:37

Ok ... looks bewildered here.
It's obviously a very good update, but since I haven't typed a single line of code for over half a year, let alone an entire game for over a year, I feel like such a moron. I'll go and download it at once ... hey wait, I can't sad

Follow me on twitch
And
Subscribe to my youtube
Leave a thumbs up if you like what I write.