From: Paul Snively <psnively@mac.com>
To: Pal-Kristian Engstad <pal_engstad@naughtydog.com>
Cc: caml-list@yquem.inria.fr, Brian Hurt <bhurt@spnz.org>,
xm@xmunkki.org, skaller <skaller@users.sourceforge.net>
Subject: Re: [Caml-list] How to do this properly with OCaml?
Date: Wed, 27 Jul 2005 17:03:24 -0700 [thread overview]
Message-ID: <2A3ECB07-10AB-4F4E-BD7D-9B9F42A954CF@mac.com> (raw)
In-Reply-To: <200507271413.41026.pal_engstad@naughtydog.com>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Jul 27, 2005, at 2:13 PM, Pal-Kristian Engstad wrote:
> 1. It doesn't support console platforms.
> - The PC market is quite minor compared to consoles.
>
I'd say that depends a great deal upon the type of game that you're
developing. For example, I don't find it at all surprising that Deus
Ex, developed for the PC first and ported to consoles, did much
better in the marketplace than Deus Ex 2, developed for consoles
first and ported to the PC. Consoles just aren't up to the kind of
more-than-point-and-shoot interaction that PCs offer and a title like
Deus Ex relies on.
> 2. It doesn't support low-level constructs.
> - No SIMD (AltiVec/VMX) vector operations.
> - No explicit assignment of (bit and byte) offsets
> within a record.
> - No explicit alignment specification.
> - No inline assembly.
>
Again, apart from consoles, which tend not to have the operating
system/middleware support we enjoy on other platforms and do have
interfaces to from O'Caml, it's not clear at all why this is
important. In any case, there is actually an AltiVec library for O'Caml.
> 3. There is no controlled real-time GC.
> - GC needs to run between frames,
> and only for a controlled amount of time.
>
It would be interesting to see some experiments around GC and the
desire to have some kind of QoS guarantees around framerates. I
personally haven't been impressed with current claims of constancy in
framerates, and have found that the easiest way to get more bang for
my framerate buck is to have more VRAM so more stuff gets cached for
longer.
> 4. There is no real support for unboxed data-types.
> - This one is actually very important for consoles.
>
I dunno; I find having all-float records or arrays of floats unboxed
to be sufficient, but again, I suspect that if I were targeting
platforms with less in the way of middleware/OS support, I might be
more concerned.
> For game-code (AI, behaviors, etc.), it is better suited,
> though the GC issue is there. But it doesn't support much
> of threading - be it through pthreads or cooperatively -
> which renders it unusable to us.
>
So your point is basically that you wouldn't want to write your
renderer in O'Caml. Well, that's probably fair. But when you consider
that usually what you do is write your renderer in C or C++ and embed
a scripting language for the actual game logic (something I know you
folks at Naughty Dog know all too well, being famous for having a
Lisp-derived scripting language whose compiler is written in Common
Lisp), it stops seeming like much of a stretch to suggest that, with
a little elbow grease, someone could take OCamlSDL and lablGL and
write a quite respectable game for PCs and Macintoshes. Heck, the
game logic could even be compiled to native code, although mods etc.
would have to be bytecode-compiled in order to be dynamically
loadable. It'd probably still be worth it, and faster in the end than
titles developed with an embedded Lua interpreter or even the Unreal
technology and UnrealScript, which Tim Sweeney concedes is anywhere
from about 10x-20x out, performance-wise, from his C++.
In any case, your claim about O'Caml's thread support is odd, since
O'Caml supports both pthreads and cooperative threading. But I don't
know what your requirements are, so it's hard to say much more than
that.
> So in the end, ... ocaml is nice as a tool, but it is by far
> not usable for the game console world. So, I guess we'll stick
> with C++ for a while...
>
Yes, if in the console world you're stuck writing your own renderers,
this much is probably true. Maybe someday the consoles will give us
OpenGL and OpenAL and the conclusion will likely change.
> Thanks,
>
> PKE.
> --
> _
> \`. Pål-Kristian Engstad, Lead Programmer,
> \ `| Naughty Dog, Inc., 1601 Cloverfield Blvd, 6000 North,
> __\ |`. Santa Monica, CA 90404, USA. (310) 633-9112.
> / /o mailto:engstad@naughtydog.com http://www.naughtydog.com
> / '~ mailto:mrengstad@yahoo.com http://www.engstad.com
> / ,' Hang-gliding Rulez!
> ~'
>
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>
Best regards,
Paul Snively
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)
iEYEARECAAYFAkLoIN0ACgkQO3fYpochAqLw3ACeJRkss1ZwUUg6he54OdrxUjf+
M6oAoMEXuPAlobZpLtNlFPSctTjl5NvE
=l0tU
-----END PGP SIGNATURE-----
next prev parent reply other threads:[~2005-07-28 0:04 UTC|newest]
Thread overview: 105+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-22 14:26 Thomas Fischbacher
2005-07-22 14:52 ` [Caml-list] " Eric Cooper
2005-07-22 15:26 ` [SPAM_PROBABLE] - [Caml-list] How to do this properly with OCaml? - Bayesian Filter detected spam Christophe Dehlinger
2005-07-22 18:58 ` [Caml-list] How to do this properly with OCaml? Stephane Glondu
2005-07-22 15:50 ` Berke Durak
2005-07-22 16:47 ` brogoff
2005-07-22 15:54 ` Michel Quercia
2005-07-23 5:00 ` Michael Alexander Hamburg
2005-07-23 12:34 ` Xavier Leroy
2005-07-23 13:16 ` Berke Durak
2005-07-23 16:36 ` Stephane Glondu
2005-07-23 18:27 ` Berke Durak
2005-07-23 18:50 ` Matthieu Sozeau
2005-07-24 8:35 ` Berke Durak
2005-07-23 19:18 ` Stephane Glondu
2005-07-23 19:35 ` Thomas Fischbacher
2005-07-23 19:50 ` Stephane Glondu
2005-07-23 19:59 ` Thomas Fischbacher
2005-07-23 20:15 ` Brian Hurt
2005-07-23 23:16 ` james woodyatt
2005-07-23 23:27 ` Stephane Glondu
2005-07-23 18:37 ` Michael Alexander Hamburg
2005-07-23 18:52 ` Bardur Arantsson
2005-07-23 21:35 ` [Caml-list] " Michael Alexander Hamburg
2005-07-23 19:19 ` [Caml-list] " Thomas Fischbacher
2005-07-24 7:27 ` [Caml-list] "Just say no!" campaign against Obj [was: How to do this properly with OCaml?] Alex Baretta
2005-07-24 8:02 ` [Caml-list] "Just say no!" campaign against Obj james woodyatt
2005-07-24 17:27 ` Stephane Glondu
2005-07-25 8:43 ` Alex Baretta
2005-07-24 21:37 ` [Caml-list] "Just say no!" campaign against Obj [was: How to do this properly with OCaml?] brogoff
2005-07-25 8:15 ` Alex Baretta
2005-07-25 17:08 ` brogoff
2005-07-25 8:57 ` Alex Baretta
2005-07-24 17:33 ` [Caml-list] How to do this properly with OCaml? skaller
2005-07-24 18:13 ` Stephane Glondu
2005-07-24 18:48 ` skaller
2005-07-24 19:14 ` Stephane Glondu
2005-07-24 20:29 ` skaller
2005-07-24 20:49 ` skaller
2005-07-24 21:08 ` Stephane Glondu
2005-07-24 21:55 ` skaller
2005-07-24 23:23 ` Stephane Glondu
2005-07-25 0:32 ` skaller
2005-07-25 6:45 ` Stephane Glondu
2005-07-25 11:35 ` skaller
2005-07-26 0:47 ` Brian Hurt
2005-07-26 0:56 ` Jere Sanisalo
2005-07-26 1:10 ` Brian Hurt
2005-07-26 1:34 ` Jere Sanisalo
2005-07-26 9:03 ` Richard Jones
2005-07-27 17:21 ` skaller
2005-07-27 19:44 ` [Caml-list] Games Jon Harrop
2005-07-27 20:35 ` Jere Sanisalo
2005-07-28 0:13 ` Jon Harrop
2005-07-28 1:12 ` Jere Sanisalo
2005-07-28 2:44 ` Jon Harrop
2005-07-28 4:49 ` skaller
2005-07-28 19:48 ` Jon Harrop
2005-07-28 21:32 ` David Thomas
2005-07-28 22:31 ` Jon Harrop
2005-07-29 1:44 ` Michael Walter
2005-07-29 2:32 ` David Thomas
2005-07-29 3:52 ` skaller
2005-07-29 12:57 ` David Thomas
2005-07-28 10:58 ` Gerd Stolpmann
2005-07-28 17:19 ` David Thomas
2005-07-28 19:22 ` Jon Harrop
2005-07-27 21:13 ` [Caml-list] How to do this properly with OCaml? Pal-Kristian Engstad
2005-07-27 22:28 ` skaller
2005-07-28 1:47 ` Michael Walter
2005-07-27 23:17 ` [Caml-list] Games Jon Harrop
2005-07-28 0:03 ` Paul Snively [this message]
2005-07-28 18:26 ` [Caml-list] How to do this properly with OCaml? Jonathan Bryant
2005-07-28 23:10 ` Paul Snively
2005-07-27 16:03 ` skaller
2005-07-26 1:01 ` Stephane Glondu
2005-07-26 1:15 ` Brian Hurt
2005-07-27 15:33 ` skaller
2005-07-30 23:24 ` Thomas Fischbacher
2005-07-31 0:06 ` Jon Harrop
2005-07-31 3:10 ` skaller
2005-07-31 2:54 ` skaller
2005-07-26 20:32 ` David Thomas
2005-07-27 15:05 ` skaller
2005-07-27 15:29 ` Jon Harrop
2005-07-27 15:35 ` David Thomas
2005-07-27 20:11 ` skaller
2005-07-28 16:35 ` David Thomas
2005-07-30 23:33 ` Thomas Fischbacher
2005-07-31 0:39 ` james woodyatt
2005-07-27 19:59 ` skaller
2005-07-26 1:22 ` Jon Harrop
2005-07-27 17:23 ` skaller
2005-07-26 1:05 ` Jon Harrop
2005-07-26 1:20 ` Brian Hurt
2005-07-26 1:28 ` Jon Harrop
2005-07-27 17:03 ` skaller
2005-07-27 16:09 ` skaller
2005-07-24 23:26 ` Brian Hurt
2005-07-25 17:21 ` Ken Rose
2005-07-25 19:19 ` skaller
2005-07-26 7:10 ` Alex Baretta
2005-07-23 18:58 ` Thomas Fischbacher
2005-07-26 1:32 Jon Harrop
[not found] <200507271635.28931.jon@ffconsultancy.com>
2005-07-27 16:31 ` David Thomas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2A3ECB07-10AB-4F4E-BD7D-9B9F42A954CF@mac.com \
--to=psnively@mac.com \
--cc=bhurt@spnz.org \
--cc=caml-list@yquem.inria.fr \
--cc=pal_engstad@naughtydog.com \
--cc=skaller@users.sourceforge.net \
--cc=xm@xmunkki.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).