Writing Wyvern Clients

Making New Wyvern Clients

If you are a software developer, and you're interested in writing a Wyvern Client for a particular platform, you've come to the right place.

If you have no idea what this means, don't worry: it's not required to play the game or be a Wizard. Just head back to the Wiz Manual or Wyvern Home Page, and you can learn more about the actual game there.

Checklist

If you're serious about writing a Wyvern client, you should be able to answer "yes" to all of the following questions:

  1. Do you have experience programming computers in at least one programming language?
  2. Are you familiar with basic TCP-based socket programming?
  3. Do you have a development environment set up for the platform you're targeting?
  4. Do you know how to read and understand software API documentation?
  5. Do you have plenty of free time available to work on it?
  6. Have you played Wyvern enough to understand the capabilities required of a Wyvern game client?

If the answer to any of these questions is "no", then you're almost certainly not ready yet. Writing your first Wyvern client typically takes at least a month of pretty hard work, unless you're just planning on making changes to an existing client.

If you're fairly confident that you can pull it off, then proceed to the next section. Keep in mind that this isn't going to be an introduction to UI or network programming. We're going to assume you have the skillset and just give you the information you need to interact with the server.

Basic Steps

After you've chosen the language and platform to develop for, and set up your development environment, you should do a little research:

  1. Assuming that you've spoke to Rhialto, and have permission to connect to the server, then spend some time writing a design document for your game client. Careful thought up front can save you days or weeks of backtracking later. The more complete your document is (including mockups or prototype pictures,if possible), the easier it will be for you to code it. You should, at the very least, decide in advance:

    • The graphical layout of your client - what views you will provide (we strongly recommend at least the map view and server-text view), and their relative sizes and positions.

    • What set of UI features you'll offer in your client. Will you draw image/text inventory and ground displays, or just plain text? Will you show the server text output in color? Will you have dialogs for customizing keyboard shortcuts? Will you support sound? Command-line editing shortcuts? Map zooming? The server provides enough information to make a highly customizable, full-featured client - if you want to spend the time on implementing it.

  2. Read through the Client/Server Protocol Manual and verify that it has the information you need. If it's missing something, please contact us.
  3. Spend some more time writing a high-level technical design document. At the very least, you should decide how you'll solve the following problem before you start trying to write the code:

    • How you're going to do the socket I/O - threads, subprocesses, non-blocking I/O with polling, message or event queues? There are many ways to solve the problem, and your language and/or platform may not offer all of them.

  4. Make sure you have access to a crypt() function from a library, package or module.

  5. Make sure you have access to a utility that provides the ability to gunzip a byte buffer.

  6. Download a copy of the latest Map Editor latest Game Client. You'll want to extract the artwork out of either Jar file, so you don't have to force the server to resend thousands of individual images when you first begin connecting with your client.

After following these steps, you should be ready to start coding!