Team DevLog MikeHart - Update 2021/03/20

Phil7

Administrator
CX Code Contributor
3rd Party Tool Dev
Joined
Jun 26, 2017
Messages
552
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
Tutorial Author
Joined
May 3, 2020
Messages
148
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
Messages
803
@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

  • updates_macos.zip
    26.2 KB · Views: 53

MikeHart

Administrator
Joined
Jun 19, 2017
Messages
2,845
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
Messages
2,845
@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
Messages
803
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
Messages
2,845
Yes it is a derived location. I will check the link you have attached.
 

MikeHart

Administrator
Joined
Jun 19, 2017
Messages
2,845
Ok, I updated the GH repro, you should be able to build CX now from the rebuildall_macos.sh script on OSX.
 

MikeHart

Administrator
Joined
Jun 19, 2017
Messages
2,845
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
Messages
803
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 $@
 

MikeHart

Administrator
Joined
Jun 19, 2017
Messages
2,845
Cause i didnt know. So far transcc runs just fine. Compiled several times.
 

dawlane

Well-known member
CX Code Contributor
Joined
Jun 21, 2017
Messages
803
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
Messages
803
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
Messages
2,845
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.
 

MikeHart

Administrator
Joined
Jun 19, 2017
Messages
2,845
Time for another update.

As you have seen, we have released a new version. While trying to fix the mojo2 bug on retina displays, we might have overdone it. When you have multiply canvases and different viewport sizes, then this release is currently not for you. I will try to fix this ASAP.

Next I will try to get the Linux release out. As my Linux machine (old Imac) is running Linux Mint 18, I have set up VirtualBox on my PC with runs Linux Mint 20 in it already. I still need to install all the dependencies and then hopefully a release is not to far way.

So what is my plan to work for the next weeks and months? Mainly these things, but not in this particular order:
  • Android App Bundles
    In the middle of next year, these become mandatory when you want to publish a new app in the Google Playstore.

  • Making the CX toolset run on Apple silicon machines. While I am convinced that TRANS, CSERVER and MAKEDOCS are compatible already, I think TED isn't. So as long as there is no other solution, I need to make sure, it runs on Apple Silicon as well.

  • Implementation of a new render backend
    One day, OpenGL(ES) won't be a thing on Apple platforms anymore. So we need a solution which supports Metal. Philipp and I have played with Sokol as a backend and it looks very promising. So my efforts will be on that. Not only for MacOS and IOS, but for Linux and Windows as well, so we don't have to maintain different C++ native code bases.
Of course, there are many other things (UI, particles, sprite animation, 3D), but I should concentrate on these at first. And bug fixes of course. :)

Have fun using CX for your projects and let us know about them in the Showcase or Devlog section.
 

dawlane

Well-known member
CX Code Contributor
Joined
Jun 21, 2017
Messages
803
I think TED isn't. So as long as there is no other solution, I need to make sure, it runs on Apple Silicon as well.
I don't think that it will be straight forward with 5.9.x no longer being supported by The Qt Company.
I've been playing around with wxWidgets on and off for the last month when I've had the time. And as a test project, decided to see what sort of a job it would be to port over TED to wxWidgets. It's just a question of what sort of a job it is to building the wxWidgets on OS X and how much can be ported over.

Currently I've got the basic interface running and displaying the HTML help. I just have to sit down and make a plan on the order to implement the rest.
 
Top Bottom