The new language – I need a name

It’s a common problem. When we invent things we need to name them, and that’s kind of hard. I need a name for my ‘sigmoid’ thing. I need a proper name for the concept of functionality orientated design. I need a name for my new language.

I could call it D, but the language already exists. In fact I think there is a programming language for every letter of the alphabet. I guess I could start using greek letters. How about something nice and pretentious, like Ω for the last language you’ll ever need (*cough*).  Let me check. Oh, it exists, darn it: “Omega is a prototype-based programming language created by Günther Blaschek in the spirit of Smalltalk”.

That’s the problem with languages. There’s too many of them.

What I am working towards, of course, is a dangerous thing. I mean programmers are not meant to create new programming languages, any more than musicians are supposed to write new pieces of classical music that actually sound pleasant. It’s just not done.

I already have received a hate post for my efforts, in the past. Apparently, even suggesting that I would want to make my own programming language must indicate that I am a mad man and a serious threat, therefore, to a someone’s model of the world.

Well, the language is just about completed, in my head. One side effect of the Light Engine (LE) is that it is building the architecture of the language using C++. I can see a path for rolling LE into my language. Hang on, why not call the language Light? Bingo! That’s the new name for it. Light, because it aims to make programming a creative and light experience. I know some people will equate it to “lightweight”, but you know that’s the techno-bias. Think about it. If I were a painter, I’d be attracted to a paint brush brand  called “Light”. You don’t want heavy paintbrushes as a painter, and as a game designer I don’t want to use heavy tools.

Notice I label myself as a game designer. This is potentially dangerous too. As much as naming things is important, labels can be risky things to throw about carelessly. I already can think of a certain crowd of people who would jump on that to dismiss me as a programmer, just because I said it. I can think of another person who would stand firm and stare me in the eye and swear that I am not a designer. Never mind what I am, I say to them, you all need to take care of who you are… I know what I am. I am a creator of games (who’s admittedly not been creating much in recent years, but that is about to change).

If my art is designing and building games, then the basic skill I must have in order to do so is to be able to program. And the computer, and the language, and the toolsets and everything else are the tools of my trade. I want them to be well crafted tools. But I can’t buy them off the shelf, or at least I don’t want to…

Some may ask “Why does the world need another Engine?”. Well it doesn’t, but I do. I am pretty confident that this will be the last engine I will write, all the previous engines not having belonged to me (because I was employed by the company), or having relied on middleware (remember Renderware?) or being developed with partners who went bust and I did not have the strength to fight to keep it (RIP Trecision (sad) and DC Studios (no comment) ).

So, you may ask, why don’t I just use something that’s already out there, some middleware… well I do not want to ever use middleware for anything ever again. When I was working on Soccer 3 (aka Total Control Football, partnering with the now defunct DC Studios), we were using Renderware. And during development EA bought it. This was… a really… depressing moment. The problem with using technology that you do not control is that one day you might wake up and not have it any more.

How about open source? Well that’s possible, but the usual problem is that they are normally anything but light. I have used Ogre for instance. But, I want to create new inventive games, for which I need to be able to rapidly prototype and for which I want lightweight tools, and Ogre is anything but lightweight.

So, I decided to start from scratch, with OpenGL, and apply all my experience in software design to come up with the ultimate solution for my needs. And I am not caring how long it will take. I just want to do it, because I want it done and I want it done right.

The interesting thing is that various strands are coming together, converging to a final solution and I can project that the new language is involved.

So, you may be curious as to what this language is about. Well I will reveal a few characteristics here:

  • It is not object orientated.
  • It supports multithreading natively
  • Data is stored in a global database
  • It is event driven
  • It implements multithreading with a variant of the co-routine concept
  • It implements inheritance in a homogeneous way

As I look at this list, the LE architecture also matches these characteristics, except that there are some OO parts, because I am programming in C++ and it’s appropriate. But the truth is as I look at what I have done so far, that in order to get what I want I have to push C++ to its limit. I can hear it creaking. Ultimately, C++ cannot provide the answer to my needs, although I expect the compiler and runtime to be built with it.

I hope this all works out, because I can really feel that the other side of this project there is a whole new world. One in which bugs are a lot less likely to appear, where programming focuses on design of algorithms and data layout rather than header files, pointers and types. Where performance can still be maintained. Where multithreading is elegantly and robustly implemented. Where bloat is a thing of the past. I can see it, and when I get there I know it will help me create new games, which has been the whole point of my relationship with programming ever since I started aged 13.

Of course, talk is easy. If you excuse me, I better get back to my work.

3 Responses to “The new language – I need a name”

  1. David Nixon Says:

    Good luck.

  2. Artful Bodger Says:

    Hey Dino

    I can’t help but feel that this recent post is at odds with your previous writings on making a new player manager game:

    https://dinodini.wordpress.com/2010/08/16/the-return-of-player-manager/

    For my money you got it right the first time (paraphrasing) spend time on making a game instead of messing around with tech.

    How much saleable or enjoyable will the game be for the end user if it’s written in new language?

    What’s likely to be true is if you do go down this path the time you’ll leave yourself to make the stuff that people find fun for your project will be severely eaten into because you’ll have to spend so much time building the infrastructure you need. Yeah, I understand that you can end up amortising that cost over a number of games but even so it seems an odd change of heart from what you were posting yourself less than a year ago.

    Why the change?

    • Dino Dini Says:

      It’s not really at odds. While developing the game, I realised that I need a good environment for prototyping stuff, and that I did not have it. I also have had for a long time plans to develop a cross platform prototyping engine and a new programming language. PM2 is not my only concern in my life or my work. There’s stuff I need, and that’s the stuff I am working on. What I am doing will help me with my teaching (my day job) and with publicity (marketing) and with being able to create some simpler fun app games. It’s all part of a big plan. It is true that I have changed my strategy, but only slightly. Instead of hacking something together, I decided to do it properly.

      Another factor is that I am not just making a new PM game for you or anyone else. I am also making it for me, and I want making it to be an enjoyable experience. For this reason I am taking my time lining my ducks up in a row. I really do not think PM will be written in a new language, BTW. It could take me a few years to get the language project ready to the point where I can actually use it professionally. However, many elements of it (and the Light Engine architecture) are standard things that I use in all games I write.

      Have I changed my view? Yeh, maybe. But that’s ok. I see nothing wrong with that. But as for your concern about the amount of time I have left to “find the fun”, don’t be too concerned. Fun is easier to find when you work with good tools. And that’s the point.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: