Sign in to follow this  
Angelic Ice

What language/technology for tools-development?

Recommended Posts

Hello forum!

I'm looking for a fitting technology to write small tools with a GUI being cross-platform for Linux, Windows and Mac.

I considered C#, but using Windows Forms would limit me to Windows. Performance is not highest priority.

What are your best experiences for developing tools? I considered Electron but JavaScript being weakly typed, I would rather having a strongly typed alternative.

One last bonus, it would be great, if the technology is not that bloated in size, since these tools will be distributed with the actual product : )

Thanks a lot for your time!

Share this post


Link to post
Share on other sites

I'd start by looking from a GUI, as cross-platform gui toolokits aren't that wide spread. One that comes to mind is Qt, and I don't even know if it runs at a Mac. Also, you may want to check the license conditions. Java GUIs would work too, but it has about a dozen to choose from.

For a computer language, I'd start with Mac as well as being the most restrictive in acceptable solutions, then Linux, then Windows. I pick Python for anything that doesn't need speed, with a systematic documentation of the type and meaning of all parameters for each function in the function docstring.

"Bloated in size" is not a real problem imho, as otherwise, you will have to write that functionality yourself, which is likely to take a lot more time, and with less quality than a runtime-library of some language. But as always, it's a matter of considering the alternatives.

 

Finally, I am not entirely convinced you actually need to supply a gui. It depends on the tool of course, but in development, automagisation is important, especially for conversion tools, and a click in a window cannot easily be programmed in a Makefile or shell script.

Share this post


Link to post
Share on other sites

There are a few questions to answer to guide you on the righ tpath here:

(1) what languages do you know and are you comfortable with? what about the rest of your team?

(2) what language and technology is your game written in? do you need to share code between the game and tools?

(3) do you _need_ multi-platform capabilities? that vast, vast, VAST majority of game development is done on Windows, even for games that are released on other platforms. that's not only because of the game tools, but also tools like ZBrush, Maya, Photoshop, and a myriad of other game content creation tools that you need to actually make a game are either Windows-only or Windows/macOS-only. Linux is so far at the bottom of the barrel as to be irrelevant in terms of content development platforms, and making your tools run on Linux is only going to solve a teensy tiny fraction of the problems with using Linux for content development. Note that C# and C++ both have cross-platform GUIs that support macOS and Linux if you do want it.

A lot of companies choose C# for everything that isn't the core engine. A lot of companies also stick to C++ and use Qt for tighter integration. Some even use Python for various things, particularly since modern Maya scripting and plugins use Python heavily.

Some related points:

 

 

I considered Electron but JavaScript being weakly typed, I would rather having a strongly typed alternative.

Use Typescript if you go this route. I'll go so far as to make that a blanket statement: programming in plain ol' JavaScript _ever again_ is for suckers. Don't be a sucker. :)

A very related alternative to Electron, btw, would be to use Chromium Embedded Framework. Or whatever Qt's current favored incarnation of its HTML5 widget is. Write the core app/engine in C++ and then use HTML5/TypeScript for all the editor UI and editor logic.

 

 

One last bonus, it would be great, if the technology is not that bloated in size, since these tools will be distributed with the actual product

You could always make them a separate free download, assuming this is a game. The vast majority of players will never use the tools, so even if the tools are small, your game itself will be "bloated" if you distribute them to everyone. :P

 

 

One that comes to mind is Qt, and I don't even know if it runs at a Mac.

It absolutely supports macOS. :)

Edited by SeanMiddleditch

Share this post


Link to post
Share on other sites
Use C# and a cross-platform UI framework. Last one I tried was GTK#. Its API was terrible compared to WinForms, but it worked on all platforms.

Share this post


Link to post
Share on other sites

Finally, I am not entirely convinced you actually need to supply a gui.

It is meant for the user/consumer of the product and this is not just a converter but a creator-tool for game-objects.

(1) what languages do you know and are you comfortable with? what about the rest of your team?

Hm, not sure if it really matters. I would be okay to work with everything, just weakly typed language tend to become a bit tiring if the project grows for me. I'm especially comfortable with C++ and C#.

(2) what language and technology is your game written in? do you need to share code between the game and tools?

C++ and Lua, so my tool should be capable of reading and writing Lua-tables.

(3) do you _need_ multi-platform capabilities?

Hm, tools would be meant for the user and I doubt I could sleep at night knowing that I would have to exclude a common OS. I know that Linux is not the gaming-platform, but I do not want to be that person that keeps it this way : )

The level-editor is already integrated into the game, but these smaller tools really would benefit from a better GUI-interface for text etc.

Use Typescript if you go this route.

Okay! It seems to be strongly typed, that is cool!

You could always make them a separate free download, assuming this is a game.

Totally true, will look into ways to distribute them : )

0Likes 1Likes Like Posted Today, 10:07 PM Use C# and a cross-platform UI framework. Last one I tried was GTK#.

Will take a look at GTK#!

Share this post


Link to post
Share on other sites

Okay! It seems to be strongly typed, that is cool!
 

It's kind of a weird beast in terms of type system classification. If you very strongly prefer static typing as all just and goodly folk do, look at the compiler options that enforce all the extra rules. Out of the box, TS is geared for incrementally adding typing to existing JS codebases which isn't necessarily the best default for a brand new project that wants to be good about typing right out of the gate.

Share this post


Link to post
Share on other sites

Data interchange between your tools and game tends to be important, moreso than you might actually think starting out. If you're absolutely certain that all of that data will come in the form of Lua then it doesn't really matter, but if you've got anything with less-than-universal support I would recommend taking that into account.

 

It's also worth mentioning that not all your tools have to be in the same language.  I'm not sure I would write a profiler in any kind of web language, but I would certainly consider writing a web server in one.  Especially when common interchange formats like lua scripts are involved, it's worth asking this question on a per-tool basis.  Obviously something like a profiler probably wouldn't be user-facing, but you get the point.

 

If you very strongly prefer static typing as all just and goodly folk do
 

I agree, but this still made me chuckle.

Share this post


Link to post
Share on other sites

If you are already comfortable with C++ I'd recommend Qt. It's multiplatform and very well documented. Qt creator includes a GUI and a code editor, and the Qt signals and slots mechanism lets you get some code controlled by the GUI up and running really quickly.

If you are doing a commercial product, don't forget to read about the licenses. GTK+ is using the LGPL, so as long as you don't modify it you are fine. Qt uses also the LGPL for the most part but some libraries are under GPL. They also have a commercial license.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this