lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Hello there, I went to the Game Developers Conference down in San Jose a
couple of weeks ago and I just thought I'd give a little feedback. 

I went a lecture on the writing of Jak & Daxter by Stephen White from
Naughty Dog:
	http://www.naughtydog.com/jak_N_dax/index.htm

There are some notes about here as well:
	http://www.gamasutra.com/features/20020710/white_01.htm

One of the points that came of the lecture was the their GOAL, lisp like
language, was both a blessing and a curse. He talked about their multi
threaded functions which could exit and reenter at the same point (i.e.
co-routines), the difficulties involved in learning and maintaining a
complex lisp like language (the Gamasutra link goes into more detail) and
the ability to upload code whilst the game is running (using their
listener). He seemed to put a lot of emphasis on the shortcomings of the
Lisp system, e.g. they had isolated themselves in terms of hiring
developers, the system as a while took quite a while to come into existance
so the game implementation went in late.

I also sat in one of the Python round tables. I'm a big fan of Python and I
write as many tools as I can in it. I've now abandoned even using MFC and
Borland C++ Builder in favour of wxPython and Boa-Constructor because the
increase in productivity is mind boggling. But, I still think Lua is a
better solution in game. One of the guys in the round table was asking
questions about Python, as he was evaluating it e.g. how can I make the VM
faster, how do I deal with multithreading (since the Python core is not
reentrant), how do I slim the Python implementation down (smallest size
achieved ~380kb) and port it to a console etc. The moderators of the
roundtable were also advertising the vast speedup that will happen in Python
3000 - due in 2 years time. So I pointed out Lua can do this already. I was
hoping that people would disagree with me and really try and sell Python as
a fabulous solution but only the moderators seemed that enthusiastic.

I spoke to some people and they weren't aware of the changes in Lua5, and
people have mentioned it on this mailing list (Brian Hook from memory).
They'd looked at Lua, perhaps at version 3 or 4 but weren't aware of the
massive changes since then. I think there should be a much more prominent
notice on the official website listing the changes, in the main project
headings:

	"about . news . changes . download ..."

I know there is a listing on the wiki, but I had a job finding it:

	http://lua-users.org/wiki/LuaFiveFeatures

I think this should be clearly documented on the official site with a link
from the Lua.org front page. I don't think people are always aware of the
changes to Lua. Its getting harder work to keep up with this list as the
volume of mail increases. Unless you follow Lua relatively closely I can see
how you'd miss the current set of improvements. 

Lua has evolved at a more dramatic rate and more radically than other
languages and been influenced by the gaming community, amongst others. From
time to time I go round looking for other solutions, but the syntax and
features of other languages doesn't really change that much, or move closer
to what I want. A lot of languages have an incompatible, or vague objectives
or poor implementation styles (too bloated or slow). Lua seems to have found
a niche with gamers because of its design objectives and its adherence to
them.

With regard to some of the features, perhaps demo code is necessary. It
seems from the Jak and Daxter lecture that not everyone is familiar with
co-routines and that particular terminology. The games industry is notorious
for rolling their own scripting languages for particular purposes and more
standard computer science lingo maybe overlooked or understood.

Someone requested preemptive multitasking in Lua. Is this possible? I
wouldn't have thought it would be that difficult to modify the VM? Could
this be done (inefficiently) with a linehook count and co-routines?

With reference to the points above and writing games I felt reassured that
Lua is one of the best freely available solutions around at the moment (that
I heard mentioned anyway).

 * Easy to embed.
 * Relatively simple syntax but powerful.
 * Extremely flexible.
 * Portable ANSI C.
 * Co-routines.
 * Reentrant.
 * Small code and memory usage footprint.
 * Can patch running code at run time.
 * Fast.
 * Good support through mailing list and authors.

So it looks like I've unwittingly become a Lua evangelist! :) I'm really
only interested in finding a good solution to my scripting problems, and
wanting to see people write good games, for which you need good solid tools.
There are more and more good tools out there but sometimes it just takes a
pointer to find them. Should I find a better language I think I'd use it,
but after incremental garbage collection there will be little or nothing to
complain about in Lua. (Statically compiling Lua and/or converting to C
would be nice but that's a tricky one with dynamic typing and tables etc :).

Aside: It was also a pleasure to meet John Belmonte, although unfortunately
I didn't get to speak at length with him :( I heard Thatcher Ulrich was
there as well. I'm sorry missed you at the experimental games workshop where
you met John. 

I'd be interested in anyone elses perspective of GDC as well.

All the best,
	Nick