What do you wish for the next step regarding development of CX?

MikeHart

Administrator
Joined
Jun 19, 2017
Messages
2,812
Hi folks,

I would like to hear what would you like to be worked on next? Thanks for your input in advance.

Cheers
Michael


Edit: So far we have...

  • Different IDE (VSCode)
  • Code completion and intellisense
  • Metal support for OSX/IOS
  • (Immediate) UI module
  • 3D module on IOS / Android / OSX / WINDOWS / LINUX / HTML5
  • Native webview overlay (Sciter comes to my mind here)
  • IPad OS support
  • Better docs on using Admob
  • Android & iOS support to easily load and save files on the SD-Card etc, including txt, jpg and png
  • String interpolation
  • Pointers
  • The ! operator
  • Inherit parent constructor methods when using constructors with params
  • Yield statement
  • Live debugging with the ability to change values
  • Only compile a new build, if sources had changed. Good for when you swap/modify only assets.
  • Native GUI support
  • Support for Node/Electron to build gui apps
  • Revive the XNA target to target Monogame or FNA which brings support for consoles and Metal on OSX/IOS when using Mojo.
 
Last edited:

dawlane

Well-known member
CX Code Contributor
Joined
Jun 21, 2017
Messages
795
Well I did come across osxiconsutils. May be worth a look for ideas on adding support for icons to xcode builds. Instead of updating the xcode project templates to use xcatalogs.

I would like to hear what would you like to be worked on next?
You know that someone will mention an IDE.

Think I will look at updating the VS templates and a few minor tweaks to the build system when I get a chance.
 

MikeHart

Administrator
Joined
Jun 19, 2017
Messages
2,812
Geany has no official release on OSX i think. The creators used Geany for their AGK ide.
 
Last edited:

Jimmy

New member
3rd Party Module Dev
Tutorial Author
Joined
Jan 2, 2020
Messages
569
Things I really wish the next version would have (in no particular order) :

* A change of IDE like Visual Studio Code
* Better documentation how to use Admob
* Metal support
* Android & iOS support to easily load and save files on the sdcard etc, including txt, jpg and png
* Include a Webview module from the start
 

MikeHart

Administrator
Joined
Jun 19, 2017
Messages
2,812
Regarding admob, what do you miss? I don't think we should repeat Googles docs on how to setup admob on your google accounts.
 

Jimmy

New member
3rd Party Module Dev
Tutorial Author
Joined
Jan 2, 2020
Messages
569
Alternatively, an immediate UI module would be nice!
 

Jimmy

New member
3rd Party Module Dev
Tutorial Author
Joined
Jan 2, 2020
Messages
569
Regarding admob, what do you miss? I don't think we should repeat Googles docs on how to setup admob on your google accounts.

It would be nice to simplify everything. I have a hard time to understand how it all works, Its not explained very simple anywhere on the web. Maybe it is just me.
 

Phil7

Administrator
CX Code Contributor
3rd Party Tool Dev
Joined
Jun 26, 2017
Messages
535
@Jimmy Maybe you know that I am rewriting some parts of the documentation. Your beginners perspective is really valuable in this regard.
So if you would mind to give a short summary of the steps you took to get it working and the things you had hard times with. This would really be helpful for me.
 

Jimmy

New member
3rd Party Module Dev
Tutorial Author
Joined
Jan 2, 2020
Messages
569
@Jimmy Maybe you know that I am rewriting some parts of the documentation. Your beginners perspective is really valuable in this regard.
So if you would mind to give a short summary of the steps you took to get it working and the things you had hard times with. This would really be helpful for me.

Absolutely, I will install the newest version of Cerberus tonight and this week I'll try to get Admob working.
I'll write down any difficulties that I encounter ;):)
 

ddabrahim

New member
Tutorial Author
Joined
May 3, 2020
Messages
147
Well, since I am a complete beginner I don't have yet a very good picture what Cerberus has to offer I did not even had a chance to read the entire doc, but so far I am satisfied, there is practically nothing that I really miss from Cerberus. But here is a few things that would be nice to have. Just kick me if any of this already exist.

1. String interpolation
code_language.cerberus:
Local a = 1
Print("I have ${a} apple")

Personally I find this very convenient and much more elegant than "I have " + a + " apple"

2. Pointers
code_language.cerberus:
Local a = 1
Local b = &a
Local a = 10
Print(b)

The output is going to be 10 because we not simply assign the value of a to b, but we use a pointer to reference the value of a in memory and so b always going to return the current value of a from the referenced memory address.

3. Not operator !

code_language.cerberus:
if(!raining) then goFishing = true

I like it this way so much better than raining <> true or raining = false...etc

4. Inherit parent constructor methods.
I could be wrong but it seems like when I extend from a parent class, it doesn't inherit the constructors of the parent, I need to use Super.New() to manually link to the parent constructor in the child. If my class has no constructor, I think it should automatically inherit the parent constructor. It is useful when the parent has many-many overloads. I just don't want to link them all up manually for all child, not to mention what if I decide one day I want to change something about it then I need to update all the child too that extends from it. But it is something I am not 100% sure so just kick me if I'm wrong about this.

5. IDE
To be honest, at the beginning it was really bothering me the missing code completion and intellisense, but the documentation is so great it is honestly don't really bother me that much and I do really enjoy the light and fast IDE. Instead what would be really nice to have is something that AppGameKit Studio implemented, the ability to expose variables to the IDE so when we run a preview, we can change values from the IDE while the preview is running and see how the changes effect the preview real time without need to compile and run the project again. I think it is extremely useful for many reasons like debugging, experimenting, also imagine that someone may share a game template one day that people could technically just MOD, tweak some values, change the sprites, fonts, audio and compile without touching the code using nothing but the exposed variables, values in the IDE. Of course it is not the point of Cerberus to target people who don't want to touch the code and it should never be, but imagine for a moment how nice would that be if people who don't want to touch the code could potentially use a Cerberus project if it was designed that way by the developer of the project.

Values to potentially expose could be number, text, color, date, image, range (a number in range) and the IDE could display a different value field for each type for example a color picker for color, a calendar for date, open file browser for image, a slider for range..etc

6. GUI commands
I did see some nice GUI modules for Cerberus but they seem a little dated and limited, a decent GUI module would be nice to help with developing apps not only games.

This is all I can think of right now. Of course it is not all for next release, just a few ideas for the future.

Thanks.
 
Last edited:

MikeHart

Administrator
Joined
Jun 19, 2017
Messages
2,812
@ddabrahim

I could be wrong but it seems like when I extend from a parent class, it doesn't inherit the constructors of the parent, I need to use Super.New() to manually link to the parent constructor in the child.
The parents constructor is always called as long you don't overwrite it inside a child constructor. Only then you CAN call Super.New().

we can change values from the IDE while the preview is running
I think this would only be possible in an interpreted language like AGK is.
 

ddabrahim

New member
Tutorial Author
Joined
May 3, 2020
Messages
147
The parents constructor is always called

But when I try to create an instance of the child, I get an error saying "Unable to find overload".
I need to include Super.New(arg1,arg2,arg3..etc) in the child manually, otherwise it is not working.
 

ddabrahim

New member
Tutorial Author
Joined
May 3, 2020
Messages
147
code_language.cerberus:
Class Parent

    Method New(_a:Int)
        'do something with a not important what
    End

End

Class Child Extends Parent
    'no constructor
End

Class Game Extends App
    Field obj1:Child
    
    Method OnCreate()
        obj1 = new Child(1)
    End
End

It is throw me an error saying "Unable to find overload for New(Int)

Inside the Child class I need to add a constructor to fix this:

code_language.cerberus:
Class Child Extends Parent
    Method New(a:Int)
        Super.New(a)
    End
End
 

dawlane

Well-known member
CX Code Contributor
Joined
Jun 21, 2017
Messages
795
1. String interpolation
code_language.cerberus:
Local a = 1
Print("I have ${a} apple")
Personally I find this very convenient and much more elegant than "I have " + a + " apple"
All it would do is make things impossible to detect if you want a string ${a} or it to be a variable expansion. The only option would be to write a new Print function and pass an additional parameter just like the fprint in C/C++.

2. Pointers
code_language.cerberus:
Local a = 1
Local b = &a
Local a = 10
Print(b)
The output is going to be 10 because we not simply assign the value of a to b, but we use a pointer to reference the value of a in memory and so b always going to return the current value of a from the referenced memory address.
May never happen. Not all targets support pointers.
3. Not operator !

code_language.cerberus:
if(!raining) then goFishing = true
I like it this way so much better than raining <> true or raining = false...etc
What's wrong with
code_language.cerberus:
If Not raining Then goFishing
Cerberus follows the traditional Basic language format with some object orientated programming principles.

The parents constructor is always called as long you don't overwrite it inside a child constructor.
Never seen a constructor getting inherited. A child without it's own constructor is always given the default constructor as far as I can tell. Super.New is only used to call the parent constructor from within a child's constructor to initialise the inherited parent values. I vaguely remember something like this being asked over on the old Monkey forum. I and cannot remember what Mr S's response was.

I think this would only be possible in an interpreted language like AGK is.
Or a very complicated debugger.
 
Last edited:

ddabrahim

New member
Tutorial Author
Joined
May 3, 2020
Messages
147
What wrong with

Nothing, it is just personal preference. Basically 1 character (!) vs 2 (<>) and 3 (NOT) and 6 (= false). Depends on the language of your keyboard, some of this can be also hard to type. So 1 character is a winner for me.
 
Top Bottom