Yes, and no, for Tier 2. The templates out of the box are just drag and drop--just remember to build you NDK if you are developing on Android https://forum.thegamecreators.com/thread/216124! For Mac, you need a Mac, Android use the Android Studio, Windows use Visual Studio 2015 since it gives you access to C++11 functionality (some fancy tools in there that previous versions didn't have). I say yes and no, because you need a separate project for each one but the AppGameKit portion is the same. Some copy pasta is inevitable.
At first I was not a fan of using BASIC, but I forced my self to learn it as a challenge and now I actually like it. Re-wrapping my head around procedural programming forced me to get creative, and since the debugger is still very young it has forced me to code TIGHT--like airlock tight. I make use of Types, arrays with my type "objects", and LOTS of globals (because it just makes life easier even though it's a hack imo). For instance I like to make "constructors" that return an "object" rather than passing in a ref in order to instantiate something:
type Panel:
spriteID as integer //Sprite ID for the back ground of the panel.
buttonList as Button[]
textList as Text[]
displayX as float
displayY as float
visible as integer
endtype
/********************************************************************************
* CTOR_Panel */
/***
* Constructor for a Panel object. Panels are not displayed on construction.
*
* @param image Background image.
* @param displayX X position when displayed
* @param displayY Y position when displayed
* @return Panel object.
********************************************************************************/
function CTOR_Panel(image as integer, displayX as float, displayY as float)
pan as Panel
pan.spriteID = CreateSprite(image)
pan.displayX = displayX
pan.displayY = displayY
pan.visible = RADFALSE
/** Fit the sprite to the dimensions of the image. */
SetSpriteSize (pan.spriteID, -1, -1)
/** Set to front. */
SetSpriteDepth (pan.spriteID, 0)
SetSpritePosition(pan.spriteID, pan.displayX, pan.displayY)
SetSpriteVisible (pan.spriteID, pan.visible)
endfunction pan
I'm not sure if you know this, but the first value in a Type definition is the ID of the Type "object". I like my first variable to be a sprite ID or an integer that I manage on my own. This way I can sort all of my arrays. Also I ALWAYS do
.insertsorted(var) on my arrays to allow me to use
.find(var). I'm not sure what other people do, but this is what I like. I also never use
dim which allows me to have arrays of dynamic size and that I can pass by reference and use the newer array functionality as outlined in http://www.appgamekit.com/documentation/guides/12_array_changes.htm.
EDIT: I didn't see that you had been a member since 2005, and I'm talking to you like you are a noob.... sorry.
make -C ../NagGaCreMo/2016 -f aGame.mk