Is Indy right for me?

Giganews Newsgroups
Subject: Is Indy right for me?
Posted by:  Max Norris (n…
Date: Tue, 31 May 2005

Looking for some general input from the experienced users about if I
should be using Indy for a project or not.  (Really rather not start a
flame war about which engine is better please.. just looking for
constructive comments)

Basically, the server needs to handle multiple connections in real time,
accurately and quickly.  In my development system (IE my basement) I'll
be able to test it on a smaller scale, but when it goes live, it'll need
to handle several thousand connections.

The server will be talking to various systems (who among other things
control robots, inventory systems and whatnot) Basically it'll be a
"master brain" tying a bunch of existing systems together.  It's not a
game, but I can see where it'll have many similarities to a MMORPG type

I've looked at a few various engines, including Indy, which so far is my
personal choice. Also looked at ZeroC's Ice engine, and RakkaNet.

I've done some serious reading on the various newsgroups about the pros
and cons between using TCP and UDP for the low level communictions (and
got tons of conflicting information in both ways) but really not certain
which way to go.

I know UDP is inheriently unreliable, but it's a popular choice among
gaming servers. Does Indy have some sort of method of "reliable UDP"? Is
this something I should even be working with; that is just go with TCP?

I've written a few smaller applications with Indy before, so I'm
comfortable with the software, just not sure if this is the appropriate
tool for the job as it were. Ice seems to have a lot of features, but
having to work with definition language similar to COBRA, is this
overkill? I've worked with tidTCPServer and tidUPDServer before in a
client-server application, but it wasn't time critical nor real time.

I need to be able to do a variety of things, including determining if a
client dropped out (IE a junky old 95 box decided it hasn't had a BSoD
lately, unfortunately the site where this is going has lots of those),
being able to time the packets (a simple lag-o-meter type of thing),
plus a lot of similar features to an on-line game.  It'll be tracking
movement from various robots running around a warehouse floor, pretty
much on par with a FPS, just minus the fun weapons. (It'll be handling
pathing, avoidance and whatnot, making sure I don't slam the boss with a
dozen 2 ton bots at once.. as fun as that could be)

So any suggestions would be greatly appreciated.  I'm comfortable with
Indy, just not sure if it's the right package for what I'm doing; I've
never done something along these lines before.  I'm good with Delphi or
VB.NET, C++ is rusty yet so that rules out a few engines obviously.. I
would prefer Delphi anyway, my personal favorite)