Hi,
I'll give you my experiences. Of course I wouldn't class myself as an experienced software engineer yet. But I have tinkered around with various scripting environments for the better part of 16 years, and am now attempting to dirty my hands in the mainstream programming world. And yes. I mean dirty. Trying to use Windows for a task which seems to be exclusively linked to, written for, and taught by Unix geeks is not a pretty task.

Programming is all about compromise, knowing what you need and what you are willing to sacrifice, and knowing what languages can do that for you.

The lowest level, device-independent, most common and manageable programming language happens to be C. C itself is very flexible, accounting for a great deal of code written. Most operating systems are built with a combination of C and Assembly (a lower level language designed to send instructions directly to a processor). Programs written in C have a potential to be quick, compact and durable, not to mention cross-platform.
The caveat is that you have to do most of the work.
There is no magic "string" datatype. A string is an array of chars, char being a byte - an 8-bit number representing the ascii code of a character. An array is static, there is no magic resize method like BGT offers. For dynamic content, you have to allocate and clear your own memory resources. And of course, if you want to execute multiple tasks at once, you have to take care of your own multithreading.

A level above that, and you reach C++. C++ contains object orientation and more desired datatypes, meaning that objects generally deal with their own memory, allowing the coder to concentrate more on logic than system management. Of course, some of the things you will write will need their own system management, but not half as much, and far less often. It's thanks to this though, that C++ introduces strings (std::string), and different data representations such as dynamic arrays (std::vector), associative arrays, trees, linked lists etc. Less work, of course, means less control, and more tasks that have to be done in the background. This will naturally increase the output size and speed, however not too much, hence allowing it to be another common language used in both open source and commercial environments.

After that, you can more or less pick your own cheese.
Compiled languages obviously provide more flexibility in terms of optimisation control. However, if you start delving into other compiled options, you'll find that your library set is very limited. A language I used to use for a time, FreeBASIC, sounded like the ultimate solution. I was familiar with BASIC, and it compiled its code, using GCC as its backend. However the only libraries that FreeBASIC supported were the libraries that had headers and API's included in its bundle. While FreeBASIC actually included a lot of the most popular (SQLite, ZLib, GMP, MySQL, PCRE, LibOgg, LibVorbis, WXWidgets, SDL, Bass, FMOD, the Windows API and tons more), half the libraries needed to be compiled first, and other libraries that haven't yet been supported would have to be converted using their C interface, meaning that you would of course have to learn to use and compile C and C++ resources anyway.

The more higher level you start to go, the more you are looking at interpreted languages, such as AngelScript, LUA, AutoIt, AutoHotkey, Ruby, Python, Java, and the .NET platform. While AngelScript and LUA are in fact embeddable languages which are written in C or C++, Java is a language requiring its own runtime, and AutoIt and AutoHotkey are only suitable for Windows, not to mention extremely bulky and sluggish, other languages like Ruby, Python and .NET are becoming popular alternatives. However, again, thanks to the need for rewritten libraries, you need to factor in the size of the original library plus the refactored library, plus your own code when dealing with the size of the final applications.

Bottom line. Garbage in, garbage out. The more you rely on layering, the bulkier and slower your final product will be. Especially if you use something like AutoIt which was originally designed for UI automation but then got too big for its own boots and slowed down significantly as a result.

Again, these are just my personal experiences with programming. I'm sure more seasoned programmers will likely have their own opinions, not to mention factual corrections. But there you have it.
Cheers.
Damien.
-----Original Message----- From: Justin Jones
Sent: Friday, August 25, 2017 12:38 AM
To: blind-gamers@groups.io
Subject: Re: [blind-gamers] bgt exclude components

I would also be interested in knowing if there is a good briding
language away from BGT. BGT is working for our purposes at the moment,
but thinking/planning ahead, I can see where BGT will start to fail
us.

On 8/25/17, Damien Sykes-Lindley <dam...@dcpendleton.plus.com> wrote:
Hi John,
I will reply to you off list, as we are straying away from gaming here.
Cheers.
Damien.


From: john
Sent: Thursday, August 24, 2017 3:29 PM
To: blind-gamers@groups.io
Subject: Re: [blind-gamers] bgt exclude components

Hi Damien,
Well said on all counts.
I'm in about the same position; I'd like to move to something with more
features and support, but BGT does so many of the little things so easily
its difficult to not look for ways around the engine's limitations (getting
drive information via wmic and batchfiles rather than built-in calls, for
example). I've also been struggling to find anything that compiles down to
executables easily (java's special at best, python files are huge and have
to decompress themselves, C is... C).
Have you had any luck finding a language that can bridge the gap at all?
Best,
John


From: Damien Sykes-Lindley
Sent: Wednesday, August 23, 2017 16:22
To: blind-gamers@groups.io
Subject: Re: [blind-gamers] bgt exclude components

Hi John,
I’m afraid there are no public updates to BGT at the moment. To be honest
until I hear any different I’m treating it more or less as a dying
language.

There has actually been an entire topic on Twitter today regarding the
suitability of BGT, and I’ll say here, albeit more detailed, what I said
there. BGT has its place. But it also has its limits.

BGT is very good for creating 2d-based audiogames while being friendly for
beginners in the process.
BGT is not good for general purpose applications. Its speed isn’t optimised
for it, neither is its size. Most importantly, its library support is
extremely basic, meaning that in order to use a good 95% of available
libraries with BGT, they would need separate wrapper libraries.

When I first started to learn game programming, I started with VB6. While
that was considered a programming language, it was still very much a limited environment. Tutorials were becoming scarce, examples low on the ground, and
the language itself was dying out thanks to the introduction of the .NET
platforms. Even DirectX needed it’s own VB-compatible DLL, hence the reason
many users are struggling to play older games on Windows 7, 8, or 10.

Believe it or not, my journey with VB6 came to an unceremonious finality
during the beta testing phase of BGT. From that moment on, anything I wanted
to do was done using BGT.

So, to clarify. I started with VB6 (a COM/OLE/ActiveX environment), tinkered with AutoIt (a UI automation scripting language which also tried its best to serve a general-purpose environment but was far too specifically designed to
do so efficiently), then moved house to BGT (a gaming platform).

As much as some people may class these as programming, to me they are very
much scripting. All sandbox environments, limited functionality, very
specific purposes, and encouraging software development management skills
which are not generally encouraged in general programming.

It’s unfortunate, but a lot of people go through one of two phases: Either
they switch to a general purpose language rather quickly, realise how much
better it is, and come to despise the scripting languages they learned as
introductory tools, or they treat it with unrestrained reverence, use them
forever and a day, and become so reliant on these scripting alternatives
that nothing else matters to them, to the point that they will even attempt
to push these languages far beyond the boundaries of perhaps even twice
their limits.

I’m not saying that anyone on this list is at one phase or the other.
Personally, I’m stuck sitting on the fence. I realise how much better
general purpose programming languages are, in terms of speed and size
optimisations. But the sheer size and the tasks that are either possible or
mandatory with these languages I find all too overwhelming, to the point
that sometimes finding libraries and compiling them can be a challenge in
itself, without the extra coding and debugging.

So while I appreciate some of the benefits of many general purpose
languages, I have myself become all too reliant on the sandbox environment,
having used it for the past 16 years. As a consequence, pointers, handles,
data structures and callbacks on the coding end, and version control,
package managers, bug trackers, unit testing, automated building and
dedicated debuggers on the software engineering end, have only entered my
programming world very recently – a sad situation for any application, games
included.

So, the upshot. If you know for an absolute 100% certainty that you only
want to concentrate on audiogames, and 2d-based audiogames at that, BGT is a
good option. However if you feel you also want to branch out into end
product optimisation, 3d-based audio, environmental effects, general purpose applications etc, I would give the advice to skip the scripting stage and go straight to learning general programming and software engineering concepts.
As far as I’m concerned, scripting languages are hinkypunks. They lure you
into a false sense of security and then watch heartlessly while you’re
dragged down by the realisation that programming isn’t as simple as
scripting makes it out to be.
Cheers.
Damien.


From: john
Sent: Wednesday, August 23, 2017 7:48 PM
To: blind-gamers@groups.io
Subject: Re: [blind-gamers] bgt exclude components

Hi Damien,
Thanks for such a detailed response, that gives me exactly the info I was
looking for.
Unfortunately it is the base size of BGT I'm looking to reduce (an 850kb
executable is a lot more than needed for 2kb of code).
Do you happen to know if there's any development being done on it at all? I
remember Philip had said a while ago he had some updates in the works, but
that time to work on them was limited.
Again, thank you for such a clear and helpful response. I can't say how
refreshing it was to get this email, especially since I've been dealing with
Microsoft support recently.
Best,
John


From: Damien Sykes-Lindley
Sent: Wednesday, August 23, 2017 13:05
To: blind-gamers@groups.io
Subject: Re: [blind-gamers] bgt exclude components

Hi,
Unfortunately this isn’t possible. These components are part of the BGT
engine rather than included scripts. Of course since BGT itself is a
compiled executable, you can’t tell it to reduce its own size. If it were a
C or C++ library that would be different.
Also, BGT’s version of AngelScript doesn’t do any size optimisation
techniques like removing code that isn’t used. For instance including the
sound_pool library and not using it would still include the sound_pool code
to your final executable. AngelScript is updated much more regularly than
BGT is, however, so later versions of AngelScript may or may not utilise
these optimisations. This is one of the reasons I don’t use BGT half as
often as I used to.
Literally the only way to optimise BGT executable size, is to use less code,
and compile in release rather than debug mode.
Cheers.
Damien.


From: john
Sent: Wednesday, August 23, 2017 5:54 PM
To: blind-gamers@groups.io
Subject: [blind-gamers] bgt exclude components

Hi list,
I've recently been trying to find ways to reduce the size of BGT
executables. Specifically, I'm looking to exclude unused sections of the
engine during compiletime; for example, if I'm writing a program to work
entirely offline, then there's no need to include the network subsystem.
Does anybody know if something like this is possible?
I write a lot of small, single-purpose applications that don't need many
features, so it'd be really useful to trim them down to size, per say.
Best,
John



--
Justin M. Jones, M.A.
atreides...@gmail.com
(254) 624-9155
701 Ewing St. #509-C, Ft. Wayne IN, 46802




-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links:

You receive all messages sent to this group.

View/Reply Online (#117668): https://groups.io/g/blind-gamers/message/117668
View All Messages In Topic (10): https://groups.io/g/blind-gamers/topic/5867914
Mute This Topic: https://groups.io/mt/5867914/21656
New Topic: https://groups.io/g/blind-gamers/post

Change Your Subscription: https://groups.io/g/blind-gamers/editsub/21656
Group Home: https://groups.io/g/blind-gamers
Contact Group Owner: blind-gamers+ow...@groups.io
Terms of Service: https://groups.io/static/tos
Unsubscribe: https://groups.io/g/blind-gamers/leave/607459/1071380848/xyzzy
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to