Greetings!
I am a professional game developer, and am used to using C/C++ to code directly for game hardware. But, I'd like to do some hobbyist PC games on the side, and find that PC game development is too slow for what little spare time I have without the use of something like Blitz.
I previously did a BlitzPlus game featured in the Blitz Newsletter called Minebot Arena - ( http://www.minebotarena.com ), but I've been thinking of getting BlitzMax, mostly for access to alpha blending, rotation, scaling, etc. and had some questions about it.
One of the things we commonly do in C game programming is use const tables. Basically, a multi-dimensional array that is declared as const, meaning that all the values in the array are un-changable and are stored on disc/cartridge instead of in RAM.
I understand you can store constant data as individual constants or using the Data commands, however, const tables are much more convenient, as you can access any element at any time without having to use labels or a different constant name for each element of a bunch of constants referring to the same thing. Anywhere you can use an Array stored in RAM, you can use a const table stored in the executable code itself.
For example, after defining a const table of, say, enemy data, you could have a command that says something like:
If you have lots of enemy types each with their own max hit point value in Blitz, I can't see a way to assign default values as conveniently. The tables can also be formatted to be much more readable than BASIC data statements.
So my question is, is there a way to define const tables in BlitzMAX to have the convenience of quickly accessing data by index without having to use RAM to store the data? Or another method to quickly assign specific constants based on an index or set of indexes?
My other question is, what other features are missing from BlitzMax that BlitzPlus can do? The ones I've seen so far are full music support for XM's, IT's, etc. and the lack of the ImageBuffer command (something I made heavy use of in Minebot - notice the damage on the boss bots for example - that can't be done by just drawing every decal every update loop, because the decals had to be clipped to the non-square shape of the boss, which I did in an image buffer by drawing the decal then using a mask image to erase any part of the decal that might extend past the boss's shape).
Before I switch to BlitzMax to get alpha blending and such, I'd like to know what I'm losing and if there's a way around the missing elements.
Thanks much for any answers you can give!
I am a professional game developer, and am used to using C/C++ to code directly for game hardware. But, I'd like to do some hobbyist PC games on the side, and find that PC game development is too slow for what little spare time I have without the use of something like Blitz.
I previously did a BlitzPlus game featured in the Blitz Newsletter called Minebot Arena - ( http://www.minebotarena.com ), but I've been thinking of getting BlitzMax, mostly for access to alpha blending, rotation, scaling, etc. and had some questions about it.
One of the things we commonly do in C game programming is use const tables. Basically, a multi-dimensional array that is declared as const, meaning that all the values in the array are un-changable and are stored on disc/cartridge instead of in RAM.
I understand you can store constant data as individual constants or using the Data commands, however, const tables are much more convenient, as you can access any element at any time without having to use labels or a different constant name for each element of a bunch of constants referring to the same thing. Anywhere you can use an Array stored in RAM, you can use a const table stored in the executable code itself.
For example, after defining a const table of, say, enemy data, you could have a command that says something like:
enemyPtr->hitPoints = enemyData[DifficultySetting][enemyPtr->type].maxHitPoints;
If you have lots of enemy types each with their own max hit point value in Blitz, I can't see a way to assign default values as conveniently. The tables can also be formatted to be much more readable than BASIC data statements.
So my question is, is there a way to define const tables in BlitzMAX to have the convenience of quickly accessing data by index without having to use RAM to store the data? Or another method to quickly assign specific constants based on an index or set of indexes?
My other question is, what other features are missing from BlitzMax that BlitzPlus can do? The ones I've seen so far are full music support for XM's, IT's, etc. and the lack of the ImageBuffer command (something I made heavy use of in Minebot - notice the damage on the boss bots for example - that can't be done by just drawing every decal every update loop, because the decals had to be clipped to the non-square shape of the boss, which I did in an image buffer by drawing the decal then using a mask image to erase any part of the decal that might extend past the boss's shape).
Before I switch to BlitzMax to get alpha blending and such, I'd like to know what I'm losing and if there's a way around the missing elements.
Thanks much for any answers you can give!