<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="Content-Type">
</head>
<body text="#c0c0c0" bgcolor="#000000">
Is the wire protocol really that challenging? A little ENet history: I
was probably all of 19 or so at the time, and my friend had made a cute
little FPS game called Cube. He had used TCP for it, and I was sort of
shocked at this because it made the game laggy as hell. So having
looked around, I could find no simple alternate protocol library that
jived with the license he used (Zlib) that I could recommend to him,
and even amongst GPL-land there were only pitiful socket wrappers.
Having just read UNIX Network Programming - Volume 1, I thought I could
do a better job myself pretty quickly, and noticing that no library
like what I needed existed, just one weekend later, ENet was born. In
all fairness, it took several weeks after that to tune the packet
throttle constants to work well on a modem, but really, the actual bulk
of ENet's code was practically written in a couple of days. <br>
<br>
Despite tweaking over the years, it has remained largely stable. That
does not mean it is good as a wider-use protocol, but that it fulfilled
its purpose, FPS game networking, well enough for my tastes that I
couldn't be bothered to fix other gaping problems with it like its
dysfunctional reliable packet throttling. If I had to start over from
scratch knowing what I know now, there are probably things that I would
have done differently but have no real need to at this point in time.
However, those issues would come back to bite me in the ass if ENet
were to be pushed as one networking solution to end all others for
virtual worlds on a large scale, and that is a Pandora's box I do not
wish to open, especially at what is only an expense to me with no gain.<br>
<br>
It just strikes me as odd that a library written by what at the time
was a 19 year old programmer who had read UNP-V1 is something that
"requires special competence and most stake holders do not believe that
it is feasible to try and engineer such technology from scratch". The
only thing it really required was: knowledge of the underlying socket
functions, an idea for an easy round-trip-time monitoring system that
was on one single paragraph of UNP-V1, and winging the rest of the bits
based on common sense. Now maybe people don't want to kill a month
reading a book and programming their own solution, but let us not go so
far as to attribute special competence beyond literacy and free time.
If anything, the lack of any existing thing like ENet at the time of
writing was a genuine surprise to me, because the knowledge to make it
was widely available.<br>
<br>
Lee<br>
<br>
On 10/24/2010 01:21 PM, Tommi Laukkanen wrote:
<blockquote
 cite="mid:AANLkTi=LiUd1cYOetDfOPRHm0fBwQ7FFBSGGHRzDYjeJ@mail.gmail.com"
 type="cite">
  <div>I understand your view point. I would still want to present my
case in more detail:</div>
  <div>&nbsp;</div>
  <div>As I see it ENET has a well working and widely adopted open
source implementation for problem area which is particularly
challenging for virtual worlds. Standard would be a&nbsp;valuable for vws as
it would allow for interoperation. The challenge in forming such a
standard is to get all parties to agree on the details. In the past
discussions ENET has been often referred to as working implementation
which could be acceptable for many players. The only thing needed for
proposing ENET as a solution is documentation of the in wire protocol
which would allow writing down the details on the standard.</div>
  <div>&nbsp;</div>
  <div>Virtual world standardization requires many other areas to be
covered&nbsp;in addition to&nbsp;transport layer but transport layer is the
missing link and a key success factor in my opinion. It is also
something that requires special competence and most stake holders do
not believe that it is feasible to try and&nbsp;engineer such technology
from scratch.</div>
  <div>&nbsp;</div>
  <div>If such standard would come to be it would not need to restrict
ENET if you would not want&nbsp;ENET to&nbsp;stay conformant. At starting point
we would still have a well working transport layer implementation where
rest of the virtual world specific functionality could lean on.</div>
  <div>&nbsp;</div>
  <div>Best regards,</div>
  <div>Tommi Laukkanen<br>
  <br>
  </div>
  <div class="gmail_quote">On Sun, Oct 24, 2010 at 10:24 PM, Lee
Salzman <span dir="ltr">&lt;<a moz-do-not-send="true"
 href="mailto:lsalzman1@cox.net">lsalzman1@cox.net</a>&gt;</span> wrote:<br>
  <blockquote
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0px 0px 0px 0.8ex; padding-left: 1ex;"
 class="gmail_quote">
    <div bgcolor="#000000" text="#c0c0c0">I think the particular
strength of ENet is that it is a small library of code that is free to
change as one pleases for various goals. I think a standard or
otherwise rigid specification is antagonistic to this goal. ENet is not
a perfect or all-encompassing library, so the main effect would be to
just enshrine its faults irrevocably on paper, and also that it would
create more hassle for the one developer (singular) of ENet than it is
actually worth. :)<br>
    <font color="#888888"><br>
Lee</font>
    <div class="im"><br>
    <br>
On 10/24/2010 07:29 AM, Tommi S.e. Laukkanen wrote:
    <blockquote type="cite">
      <pre>This particular case I have in mind is protocol for virtual worlds in IEEE.

Best regards,
Tommi Laukkanen

On 24.10.2010, at 14.58, Lee Salzman <a moz-do-not-send="true"
 href="mailto:lsalzman1@cox.net" target="_blank">&lt;lsalzman1@cox.net&gt;</a> wrote:

  </pre>
      <blockquote type="cite">
        <pre>... Why?

On 10/24/2010 02:44 AM, Tommi S.e. Laukkanen wrote:
    </pre>
        <blockquote type="cite">
          <pre>Hi

Would it be possible that one of the ENET developers would write description document of the enet in wire protocol and algorithms involved so ENET could be proposed as a protocol and implementation library to standards?

Best regards,
Tommi Laukkanen

      </pre>
        </blockquote>
      </blockquote>
      <br>
    </blockquote>
    <br>
    </div>
    </div>
  </blockquote>
  </div>
</blockquote>
<br>
</body>
</html>