Team DevLog MikeHart - Update 2020/06/25

Phil7

Administrator
CX Code Contributor
3rd Party Tool Dev
Joined
Jun 26, 2017
Hi and welcome to the forums!
I think Hades is aborted, at least for now. If you are on Windows, the (now free) Jungle IDE is still an option with a rich feature set.
For Cerberus future an extension for Visual Studio Code ( or VS Codium) is seemingly the best way to go, but for now there is just very basic functionality available.
 

ddabrahim

Active Member
Joined
May 3, 2020
Location
Cyberspace
Thank you. I'm sorry to hear that.
I'm going to take a look at Jungle IDE, it is looks interesting.
I don't personally like to use VS Code with 3rd party frameworks and engines because autocompletion, debugging never really works. It is ok for JS development but for anything else I personally prefer a more integrated solution even the current IDE, please never drop it for VS Code it is seem to be a trend among many game frameworks now days :oops:
 

dawlane

Well-Known Member
CX Code Contributor
Joined
Jun 21, 2017
@MikeHart :
Something for you to try on Mac OS X.

A new launcher, a rebuild all script for OS X and updated files.
Note that these were developed on El Capitan, so I cannot test these out on any later version of OS X.
Also the launcher detects Ted via it's bundle ID, so multiple version of Ted could be a bit of an issue to a Cerberus developer.
To test them out, clone a fresh copy from github and copy the files over to the cerberus/src directory.
 

Attachments

MikeHart

Administrator
Joined
Jun 19, 2017
Location
Germany
I have finished my work on the Include command. This will allow you to copy files or directories into the build folder. Content is now up in GH.
My next steps are now to verify that all changes working on OSX and Linux. Then I think it is time for a release. Current change log:

Code:
FIX: [DOCS/brl] Fixed missing entry for the admob, cerberusstore, gamecenter, fielpath, filesystem, url, tween, pool, process and markdown modules.    (Author: MikeHart)
FIX: [DOCS/brl.databuffer] Fixed some typos.    (Author: MikeHart)
FIX: [DOCS/cerberus] Fixed missing entry for the deque module.    (Author: MikeHart)
FIX: [DOCS/cerberus.stack] Fixed some typos.    (Author: MikeHart)
FIX: [DOCS/os] Fixed description of the StripExt statement.    (Author: MikeHart)
FIX: [mojo] Fixed padded usage in Font.Load:Font(url:String, flags:Int=Image.DefaultFlags)    (Author: Rich)
FIX: [mojo2] Fixed padded usage in Font.Load:Font(url:String, flags:Int=Image.Filter )    (Author: Rich)
FIX: [mojo2] Fixed padded parameter in Image.LoadFrames:Image[]( path:String,cellWidth:Int,cellHeight:Int,padded:Bool=False,xhandle:Float=.5,yhandle:Float=.5,flags:Int=Image.Filter|Image.Mipmap,shader:Shader=Null ).    (Author: Rich)
FIX: [examples] Fixed mak/bbgametest -> missing z parameter in MouseEvent call.    (Author: MikeHart)
FIX: [examples] Fixed mak/dynamicimage -> faulty fullscreen switch.    (Author: MikeHart)
Fix: [TRANSCC] Fixed TRANSCC not being able to install on an Android device when creating a release build on Linux and OSX.    (Author: Phil7)
Fix: [TRANSCC] Fixed TRANSCC not reporting the correct line number in certain cases when preprocessor statements were used..    (Author: dawlane)

MOD: [cerberusstore] updated the underlying code to support the newest Google version.    (Author: Rich)
MOD: [DOCS/interpolate] Fixed and added some images.    (Author: Holzchopf)
MOD: [mojo] Added filter param to Font.Load:Font(url:String, flags:Int=Image.DefaultFlags )    (Author: Rich)
MOD: [mojo2] Added filter param to Font.Load:Font(url:String, flags:Int=Image.Filter )    (Author: Rich)
MOD: [mojo/mojo2] Font.Load(url:String, flags:Int=... ) accept now .FNT files and don't add a .TXT anymore.    (Author: MikeHart)
MOD: [TRANSCC] Changed TRANSCC in a way so modules can add Android libs and lift up versions more easily.    (Author: Rich)
MOD: [TRANSCC] Data file filters are not being case sensitive anymore.    (Author: MikeHart)
MOD: [rebuildall.ps1] Reworked the build script for using MS Visual C++ 2017 Community edition.    (Author: dawlane)
MOD: [rebuildall.sh] Reworked the build script.    (Author: dawlane)
MOD: [building.txt] Updated the information.    (Author: dawlane)

NEW: [cerberus.interpolate] Added InterpolateCustomLine:Float(dataY:Float[], pX:Float ).    (Author: Rich)
NEW: [cerberus.interpolate] Added InterpolateBackEaseIn:Float(pY0:Float, pY1:Float, pX:Float).    (Author: Rich)
NEW: [cerberus.interpolate] Added InterpolateBackEaseIn:Float(pY0:Float, pY1:Float, pX:Float).    (Author: Rich)
NEW: [cerberus.interpolate] Added InterpolateBackEaseOut:Float(pY0:Float, pY1:Float, pX:Float).    (Author: Rich)
NEW: [cerberus.interpolate] Added InterpolateBackEaseInOut:Float(pY0:Float, pY1:Float, pX:Float).    (Author: Rich)
NEW: [cerberus.interpolate] Added InterpolateElasticEaseIn:Float(pY0:Float, pY1:Float, pX:Float).    (Author: Rich)
NEW: [cerberus.interpolate] Added InterpolateElasticEaseOut:Float(pY0:Float, pY1:Float, pX:Float).    (Author: Rich)
NEW: [cerberus.interpolate] Added InterpolateElasticEaseInOut:Float(pY0:Float, pY1:Float, pX:Float).    (Author: Rich)
NEW: [cerberus.interpolate] Added InterpolateBounceEaseIn:Float(pY0:Float, pY1:Float, pX:Float).    (Author: Rich)
NEW: [cerberus.interpolate] Added InterpolateBounceEaseOut:Float(pY0:Float, pY1:Float, pX:Float).    (Author: Rich)
NEW: [cerberus.interpolate] Added InterpolateBounceEaseInOut:Float(pY0:Float, pY1:Float, pX:Float).    (Author: Rich)
NEW: [brl.tween] Added a module to support easy tweening.    (Author: Rich)
NEW: [TRANSCC] Added app icon creation right into TRANSCC.    (Author: Rich)
NEW: [TRANSCC] Added the Include directive to add files/directories to the build folder (GLFW/STDCPP).    (Author: MikeHart)
NEW: [IOS] Added #IOS_APP_ICON to set icon of the app.    (Author: Rich)
NEW: [ANDROID] Added #ANDROID_APP_ICON to set icon of the app.    (Author: Rich)
NEW: [FLASH] Added #FLASH_APP_ICON to set the favicon of the browser tab.    (Author: Rich)
NEW: [HTML5] Added #HTML5_APP_ICON to set the favicon of the browser tab.    (Author: Rich)
NEW: [HTML5] Added #HTML5_APP_TITLE to be able to set the title of the browser tab.    (Author: MikeHart)
NEW: [HTML5] Added #HTML5_CANVAS_WIDTH and #HTML5_CANVAS_HEIGHT control the size of the html5 canvas.    (Author: MikeHart)
NEW: [HTML5] Added #HTML5_APP_FILENAME to set the output filename.    (Author: MikeHart)
NEW: [HTML5] Added #HTML5_CANVAS_RESIZE_MODE to be able to set the CANVAS resize mode.    (Author: MikeHart)
NEW: [HTML5] Added #HTML5_CONSOLE_SHOW to be able to hide the splitter and console area.    (Author: MikeHart)
 

MikeHart

Administrator
Joined
Jun 19, 2017
Location
Germany
@MikeHart :
Something for you to try on Mac OS X.

A new launcher, a rebuild all script for OS X and updated files.
Note that these were developed on El Capitan, so I cannot test these out on any later version of OS X.
Also the launcher detects Ted via it's bundle ID, so multiple version of Ted could be a bit of an issue to a Cerberus developer.
To test them out, clone a fresh copy from github and copy the files over to the cerberus/src directory.
I tried it today and like you already have mentioned, the xcode projects needs some work. I can build everything now but the launcher is build in some cryptic location right now and so it doesn't find it. I will get there, just wanted to let you know that the script works basically out of the box once I push the new xcode projects to the repository on GH.
 

dawlane

Well-Known Member
CX Code Contributor
Joined
Jun 21, 2017
I can build everything now but the launcher is build in some cryptic location right now and so it doesn't find it.
For some reason Apple have now decided that all build projects go into the Derived Data directory. Check that it hasn't been placed in there. I wasn't sure if the project would place the launcher in the correct directory after I changed the project.
xcodebuild should have an option to override the default. It would be a case of updating the macos rebuild all script.
 

MikeHart

Administrator
Joined
Jun 19, 2017
Location
Germany
Ok, time for another update. This is what I have so far on my PC.

Code:
***** v2020-05-24 *****

FIX: [TRANSCC] With the GLFW target and MingW, you can build 32bit again!
               Window dragging in Release mode is still faulty, need to update GLFW for a fix.    (Author: MikeHart)
MOD: [TRANSCC] With the GLFW target, resource files are now compield everytime, so a change will be always taken in.   (Author: MikeHart)
NEW: [TRANSCC] New config setting #GLFW_COPY_LIBS_32 to copy 32bit DLLs into the build.   (Author: MikeHart)
NEW: [TARGETS] AGK Android (Google).    (Author: MikeHart)
NEW: [examples] mojo/n3d from Skid.    (Author: Skid)
NEW: [examples] mojo2/asyncimageloading.    (Author: MikeHart)
Regarding 32bit compilation on MingW, I did some changes. Resource files are always build now. There are 2 Makefiles now, one for 32bit, one for 64bit.
The AGK Android target still needs some fine tuning but I am able to build and run an app on my phone like you would expect it.

Today I tried the new MingW 9.2 and so far no problems. Any negative experience with it @dawlane ?

Besides that I am concentrating on gfx related stuff. More on this another time.
 

dawlane

Well-Known Member
CX Code Contributor
Joined
Jun 21, 2017
Any negative experience with it @dawlane ?
Try rebuilding transcc with it for some reason it doesn't work and I suspect that it could be the GC that could be the root cause. It will build and run fine in debug, but crashes when in release mode. And the best bit is..... you cannot even debug the cpp code as it does the same.

Strange thing is, Ferdora 32 uses GCC 10 and compiles correctly. And Fedora 29 uses GCC 9.2 and has the same issue.

Regarding 32bit compilation on MingW, I did some changes. Resource files are always build now. There are 2 Makefiles now, one for 32bit, one for 64bit.
Why two. You could have just done conditional checking in the Makefile to set the correct option for winres? Just pass an option and add something like:
Makefile:
' Change to glfw.cxs
Execute cmd+" ARCH=~q"+msize+"~q CCOPTS=~q"+ccopts+"~q LDOPTS=~q"+ldopts+"~q LIBOPTS=~q"+libopts+"~q OUT=~q"+tconfig+"/CerberusGame~q"


' Change to makefile
# Set the correct architecture output for resource building.
RES=windres
ifeq ($(ARCH),64)
    RES_ARCH=pe-x86-64
else
    RES_ARCH=pe-i386
endif


# Last bit at the end
$(TMP)%.o : %.rc
    $(info )
    $(info COMPILING RESOURCES)
    $(RES) --target $(RES_ARCH) -i $< -o $@
 

dawlane

Well-Known Member
CX Code Contributor
Joined
Jun 21, 2017
You are certainly correct, discovered that too. Not sure why I thought it works.
Probably would have to enable warnings when building C++ code to find out is there's any dodgy code that needs to be fixed.
 

dawlane

Well-Known Member
CX Code Contributor
Joined
Jun 21, 2017
An update on the TDM-GCC 9 issues.
To be on the safe side, I'd though I would check the __WIN64 along with the __WIN32 compiler preprocessor directive in the OS module for setting the Host OS string. Even though __WIN32 is used for both 32 bit and 64 bit compilers.

It's definitely is a GC issue. For some reason it GCC 9 does not like GC mode one in release mode. GC mode zero and two will compile and run release code.

So the code that handles mode one needs to be the focus of any fixes.

EDIT: I would have thought that #CPP_GC_DEBUG=1 would have given out a bit more information.
 

MikeHart

Administrator
Joined
Jun 19, 2017
Location
Germany
Wow, already a month went by. Here is a short update on what I am doing. @Phil7 and @Holzchopf can do similar if they want to.

I have basically finished the AGK Android target, the current version is on GitHub. The icon stuff is not in, but you can always set the icons later on.
Why I haven't implement this is because I am working on custom targets and the AGK targets become 3rd party targets.
I always wanted to have the ability to add a target without recompiling trans. If you reuse one of he current ones, you can do that already. But I wanted more flexibility.
So I came up with this solution:

1) Have extra target folders to look for, similar to modules.
2) In the target.cxs file, if you set #TARGET_BUILDER="custom", Trans just copies the template folder and then loads a cxbuild.txt file, which contains a very simple script language (command::parameters). With that you can tell CX what to do.

Code:
'config::release|debug|all
sethost::winnt|macos|linux|all
setecho::on|off
print::text
build::params
execute::params
replace::file srcStr replaceStr
copyfile::srcFile dstFile
deletefile::file
copydir::srcDir dstDir
deletedir::directory
createdir::directory
renamefile::srcFile dstFile
inject::inputfile outputfile section(CONFIG/TRANSCODE/METADATA)
You can use several place holders to get paths, names etc.

Of course, you could use cmake, premake, whatever to build the project, even rearrange it.

The next thing is a new render backend/API and 3D. We decided to go for Sokol as a backend and with the huge help of @Phil7, we can start the work now. I couldn't get my head around marrying CX and sokol and he did it. Thanks again buddy.

1593089237424.png


Well that is all for now.
 
Top Bottom