Language Preferance for making tools?

Started by
7 comments, last by Raghar 18 years, 10 months ago
Hello all, soon I will begin design my first 3d game and was wondering what language is common for creating tools to help my game making process easier. As of now I know C++ and was wondering what I should learn for it. Thanks for any advice in advance.
Advertisement
If you use MFc or the newer .NET for C++ you should have no problems making tools. Some companies I know of are now moving over to using C# with .NET to make their tools now.

Its not too hard to make the switch from C++ to C# so if you want to go that way you shouldn't have too much trouble, just download the beta for visual studio for a c# compiler if you need one.
It depends on what tools you're making.

If you're making exporters or other extensions for art packages, like 3dsmax or Maya, then you basically choose max/mel script or C++ depending on if you can get it done easily in script or need to create a real plugin.

If you're talking about stand alone tools, like your own level editor, then the trend these days is towards C# for the main app. Depending on your needs, like if you want to use your engine's renderer in the viewport, then the app may also use C++ as well. Typically, the way you get this to happen is to write a "Managed C++" DLL that wraps your underlying engine code. This will allow you to expose your engine to C# and allow you to control your engine within the app.

FWIW, I can't say enough good things about using C# for tools. It's really quite nice! I avoided it for a while, but I finally took the plunge and learned it...which isn't too hard if you already know C++ BTW. Now, I can't even imagine going back to using Win32/MFC to write a complete editor. Yuck!

-John
- John
THanks for the reply, has helped alot.
python.
For C++, I'd recommend being comfortable with a good variety of libraries. SDL, MFC and ATL, and the C++-with-.Net tools (whatever Microsoft is calling them this week) are probably the Big Ones to know. I'd suggest starting with MFC and ATL, because after that nightmare, most things will be fairly easy to pick up [wink] (In all seriousness, though, start with the ones you've got easy access to. If you aren't using Visual C++, that means SDL.)


The language of choice varies in different situations, but a good rule of thumb is to use higher-level languages for higher-level jobs. For instance, in the past I've used everything from Linux shell scripting to VB6 to develop support tools. I've even done some things with PHP (both client-side and web-based) for certain tasks. The more languages you are comfortable with, the better chance you'll have of getting the right tool for the job. Of the "serious" languages (by which I mean things that are not Malbolge, INTERCAL, Brainf**k, et. al.), every language is a good tool for some particular job. Which ones you learn is up to you and depends on what kinds of jobs you're hoping to get done.

My personal opinion is that any good programmer needs to know at least one language in three different families. Beyond that is up to you. First, you need a good mid-level, high-power development language - generally this means C or C++. If you're adventurous, you might add LISP in this category. C++ is my personal preference because a good understanding of OO principles will come in handy in other situations, and the C-style syntax is very common these days. Second, you need a high-level, high-speed language. This can be a scripting language like Python or an applications language like VB.Net or C#, depending on your interests - as long as it gets simple jobs done quickly for you, it is a good tool to have. Finally, you need a thin-client language. ASP, ASP.Net, and PHP are the big candidates here.

Each family of language involves thinking in a different way, and being proficient in each area will give you different perspectives on how to solve problems in the other areas. Granted, it's a long-term time investment to learn all that stuff, but being a competitive programmer means learning new things all the time. It's a never-ending quest, so don't worry about it if you're not a wizard in 43 different arcane tongues [wink]

Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]

Well, personally i use C++ for both game and tools. But i use different IDE's for them. For programs that dont use dialogs etc i use Visual Studio .NET. But if i want to create tools and other programs that use alot of buttons, windows etc, i use Borland C++ Builder. It's very easy to create tools in it since it's designed to work with dialogs. I think both C# and C++ with Borland C++ Builder are equally simple to work with in tool making.


// Allmight
-------------------------------------------------Founder and DirectorAllSoft Studios
Most of my tools use MFC and share libs or dlls with the main applications.

The other language I use is Python. It has some very high level libraries which allow you to do some things in a small fractio of the time it would take with C++.
Java
Swing (or JOGL if you need to access OpenGL from your tool) is reasonable, and Eclipse could alow you to concentrate on tool development not on recompilaion times and other isues. Also it works under linux and MAC as well.

If you'd like to learn language that differs by a lot from what you already know, you might learn Macro assembly (it's easy), or Smalltalk.

Of course you might look for tools that are already available. (And mostly unsuitable for any development.)

This topic is closed to new replies.

Advertisement