I've
been involved in various AI-related development stuff for more than 10
years, starting with simple rule-based systems and working with a wide
variety of programming tools. The first, toyish version of Visual Basic
was my first contact with Microsoft IDE, and while I cannot say that it
was always a pleasant experience, I must admit that the most of my
day-to-day programming work is now being done in VB or C#. Java is
still close to my heart, but many Pascals, LISPs, Prologs, Smalltalks,
etc. are archived for a long time on my backup drives. However, most of
the AI-related source-code you can find today is written in C, Java or
something similar, primarily for various Unix operating systems. For a
long time Microsoft tried to minimize the importance of the open-source
movement, and every single component or source sample had a hefty price
tag on it. Luckily enough, things have changed, and now you can join
various collaborative projects working with VB, VC++ or C#.
While we can argue
what is the best development platform for the specific field, I had
great overall experience with the new Visual Studio .NET. Portal engine
that powers aboutAI.net and many similar sites, with all theirs bells
and whistles (collaborative filtering, data mining, text
classification, etc.) is built upon solid .NET foundation. Don't worry,
this isn't going to be another glorified story about .NET, as we are
still keeping both feet on the ground and actively supporting other
"non-MS" open AI projects. However, if you want to leverage your VB/C#
knowledge in the AI field, there are several excellent collaborative
(and competitive) projects you could join.
In an interesting marketing twist, Microsoft teamed with Intel and recently started the New Worlds .NET Web Services Challenge,
awarding one Harley-Davidson V-ROD motorcycle, one Dell Dimension 8200
desktop computer, several MSDN Universal subscriptions and MS Xbox
video game systems to the most successful developers. The project
itself has two basic components: a Windows client (the "PlanetViewer")
and a remote Web service ("World"). When the PlanetViewer calls a new
World Web service, it retrieves particulars about the landscape for
that world, rendering it in 3D. You could enter the contest either by
creating and submitting your own worlds, or by improving the code with
optimization techniques for the PlanetViewer.
The goal of this
challenge was obvious: to improve the public awareness about new
Microsoft's .NET strategy and Intel's 3D hardware. It focuses on using
Web services, a somewhat new concept even for the experienced
programmer. It seems like every publication and Web site has some
mention of Web services. In a nutshell, Web services are a new platform
for building language and platform-independent interoperable
distributed applications. As a VB developer, you may already used
component-based distributed apps using COM and DCOM. While this was a
widely accepted approach, VB.NET finally allows you go much further by
following a set of XML-based standards to achieve greater
interoperability via the Web.
While this is an
interesting project from the standpoint of distributed computing,
there's another one, especially attractive to Artificial Life and
Mobile Agent developers. Meet Terrarium,
a multiplayer ecosystem game developed using the .NET Framework.
Developers can create their own creatures and add them into the game on
their own client machine. Teleporters on each client transfer the
creatures between clients in the Terrarium peer-to-peer network.
As a creature
developer, you can program either herbivores or carnivores. Once a
creature is in the Terrarium ecosystem and competing for resources, the
central Web site can be used to compare its vital statistics against
those of other creatures. The objective of Terrarium is to develop a
creature that out-survives the rest.
Terrarium uses Windows Forms and DirectX for a rich UI experience. The
.NET Frameworks evidence-based security architecture allows mobile code
(for example, someone else's creature) to run in a secure manner on
your machine. And XML Web Services provide the community infrastructure
for the game, enabling peer discovery, reporting, and auto-update of
new versions. This single system allows you to experiment with various
graphics aspects, mobile agent techniques and P2P capabilities, but
that's not all...
The support for the
Artificial Intelligence and Artificial Life techniques is rather
impressive. In creating a creature, developers have complete control
over everything from genetic traits (eyesight, speed, defensive power,
attacking power, etc.) to behavior (the algorithms for locating prey,
moving, attacking, etc.) and reproduction (how often a creature will
give birth and what genetic information will be passed on to its
offspring). Upon completing the development process, the code is
compiled into an assembly that can be loaded into the local ecosystem.
In a nutshell,
Terrarium provides a showcase for technological advancements built into
the .NET Framework, and a quite powerful modeling tool for use by those
studying evolutionary biology or artificial intelligence. But as they
say first and foremost, it is a game... So have fun while learning the
basic aspects of AI-related technologies.