Epoch. Again.

Published September 18, 2010
Advertisement
A decent day's work on Epoch has netted some substantial improvements. Not only do function return values work again, but I added something that wasn't even supported in the old code: full expressions in return value initializers.

Since that's probably total gibberish to everyone except me, it means that I used to have to do stupid things like this:

add : (integer(a), integer(b)) -> (integer(ret, 0)) { ret = a + b }

Whereas now I can do this:

add : (integer(a), integer(b)) -> (integer(ret, a + b)) { }

Huzzah.


Sadly, the new architecture has broken far more of the language than it's helped - so far. While there's a lot of promise in my new approach, I have to reimplement a lot of ground work to reach a point where I can start cashing in on that promise. For instance, the standard library includes three functions at the moment: debug output, casting from integer to string, and integer addition.

Yep... no subtraction. No other arithmetic. No boolean logic. No flow control primitives. Nothing.

In a lot of ways it feels like the massive blob of work that I'd accomplished with the language just went up in smoke. Of course I can reimplement things quite a bit faster this time around with the combined benefits of hindsight and existing code to consult, but it still represents a massive amount of work just to get the language to the point where it was three or four releases ago.

It's tempting to get discouraged and just let the thing rot, but I keep running into cool ideas in my daily work. I can't count the number of times I've thought "wow, I'd love to prototype that concept in an experimental language" and then realized that I have a perfectly viable and wonderful experimental language framework sitting right in front of me. It's just a matter of knuckling down and getting the boring stuff done (again) so I can get to all the fun exploratory bits.


GDC is still a long ways away, but for the past several years the conference has represented one of my biggest motivators. There's a combined benefit of a hard deadline and a large potential audience, and the fusion of the two makes for some excellent driving force. I intend to do another one of my release demo kits for GDC 2011, but the actual scope and content of that kit depends a lot on what I manage to rebuild between now and then.

Ideally I'd like to show some net progress beyond R9 which debuted at GDC 2010; something like a simple game implemented in Epoch using the GDI would be awesome. I'm going to want to settle on a goal soon so that I know what to aim for - and the more ambitious the goal, the more likely I am to actually try and get it done as efficiently as possible.

I already had to dissuade myself from getting side tracked writing debugging tools and other goodies for the language, because the core just isn't up to speed yet, and I need to get that done before playing with fun toys. So if I have a stretch goal set up for the GDC 2011 demo kit, I'll have plenty of reason to stay focused and only deliver the stuff that really needs to be worked on. The tricky bit will be drawing the line between stuff that's just cool to have, and stuff that's so cool to have that I really need it in the demo kit.


Anyways... enough ranting again. Back to work!
Previous Entry More Epoch overload!
Next Entry Epoch and Entities
0 likes 0 comments

Comments

Nobody has left a comment. You can be the first!
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement