Sanctimonia Updates: Object Generation "Spreading Like Wildfire"

Kevin Fishburne left a comment recently in which he explains how object generation in his still-in-development Ultima-inspired online game, Sanctimonia, is “progressing like a wildfire in a parched field of grass.”

1) Program logic now dictates that I treat flora and persistent world objects (inanimate objects) as the same with regard to object data files and network transactions. The server will still treat flora differently than PWO1s (growth, reproduction, death, etc.), but structurally they are very similar and must be bound together for efficiency’s sake. Fauna however will be treated as players/NPCs since they are also functionally similar. Depending on how similarly I implement them, this may make it possible to actually play the game as fauna, which would be cool. Nothing makes hunting fun like a human controlling the deer.

2) Littoral’s ability to generate both flora and PWOs, including per-object probability maps which overlay the world map, is 100% finished. 100% is not an exaggeration. The maximum number of object generation attempts per cell is specified in code (currently 1000) and object stem (base) and cap (top) sizes are collision checked to ensure objects do not intersect when generation is attempted. Littoral progresses through each region (32^2 cells), within which it further progresses though each cell (32^2 tiles) within that region, and writes the generated objects’ data to object data files using the correct directory and file hierarchy and naming convention.

3) I’ve implemented most of the code for both the client and server modules to read, send and interpret the object data so that it may be rendered by the client. This part is about 75% done. Give me another couple of days, and lush forests will be on my YouTube channel.

[1] persistent world objects — WtFD

The pace at which Kevin is able to add features to his project never ceases to amaze me. This is nothing short of excellent progress on his part, and I for one look forward to seeing world objects gracing the next video release he prepares.

9 Responses

  1. fearyourself says:

    I love it! When will we have the video, the client, the connections, the funky part of it all ?

    Do you have an idea when we will see some Npcs or any form of discussion ? Are you going to be rewriting it all or taking from previous games?

  2. Sanctimonia says:

    Your possession of faith encourages me, as opposed to one’s lack of faith disturbing me. I also appreciate the turn of wit with regard to previous discussion.

    Current:

    Smooth multiplayer where you can see each other move and rotate has been working for some time. I will make a video of it when I get two PCs next to each other. The update interval is customizable so clients can set it to 0.125 ms or 0.5 ms (and all between) if they like.

    Future:

    Eventually the server will enforce the client transaction resolution.

    I still haven’t implemented interpolating the values between players’ current coordinates and new coordinates with respect to time and velocity, but will eventually with proper animation incrementation.

    Current:

    If anyone wants to test it over the Internet, I can provide a GAMBAS binary and the files that go with it that will run on your system. I can forward Network.server_port = “12345” and run it on my server intermittently. I can also walk you through compiling GAMBAS 3, which is the programming language and IDE I’m using. You -will- need a PC gamepad to control yourself; the keyboard doesn’t do anything yet except quit. The d-pad and both analog sticks have unique controls that all work independently.

    Future:

    NPCs are other players so far. There are no computer-controlled entities yet. Soon plants and objects will be, then finally animals and other AI like offline players.

    There is also currently no communication other than movement and rotation (posturing of oneself). The only two communication features that will exist however will be text chat and voice chat, both of which will only be heard and seen by people right next to you. There will be no email, friending, or any kind of chat list type crap like that. Hold down the button, say something, then let go. Like a CB radio. In the end, user-customizable AI will make offline players the same as NPCs.

    As far as rewriting it all or taking from previous games, I’ll be:

    I. Taking from previous games.
    II. Building gameplay from simple/natural/logical interactions.
    III. Integrating simple cultural layers such as ethics, science, technology, ecology and architecture.
    IV. Creating a non-stop real-time experience at the speed of life (slow but at a high frame rate).
    V. Trying to keep the feel of when Britannia was formed, and the brotherhood of man trying to survive.
    VI. Inviting by insidious gameplay the indulgence of individual and group behaviour that could instigate conflict in any sphere players thought important.

  3. fearyourself says:

    That’s awesome :-). When I have a bit more time, I’ll actually take you on that offer of testing it ! Right now though, I’m a bit swamped.

    However, it’ll be interesting when you start putting the fauna in there and we can play with it 🙂

    Good luck,
    Jc

  4. Sanctimonia says:

    You may be my first alpha tester, then. 🙂 I’ve tested multiplayer over the LAN with a single client, but would like to test latency and multiple players over the WAN just to make sure it’s sound.

    Objects in the client/server app are now mostly working. Position, scale, stem and cap size are properly conducted to the client. I still need to figure out how to sort an array by the values of a dimension so the objects may be rendered in the proper order. I’ve already emailed the GAMBAS mailing list and should have an answer soon if I don’t figure it out myself first.

    So, basically, my two test objects (one flora, one PWO) are properly rendered and anchored according to their stem radius, but the “Z depth” or render order is flat out incorrect. Objects are currently rendered in order of their occurrence within the array within which they’re stored, rather than by their rotated vertical coordinate.

    I’m going to put up a couple of YouTube videos showing collision detection, rotation using objects’ stem sizes, and finally my crappy test objects. Just remember that because they’re not currently sorted by their rotated vertical coordinate that they overlap in the wrong way. So it looks kinda crazy, basically.

  5. Sanctimonia says:

    To clarify, by “collision detection” I mean the objects’ positions don’t overlap in accordance with their stem sizes. Tree trunks shouldn’t be on top of each other, in other words. The player still moves through whatever he likes so there’s no collision detection yet on that front.

  6. Sanctimonia says:

    More progress:

    http://www.youtube.com/watch?v=qZKL4Nawt2M

    I’ll be modifying the client rendering engine tonight to allow objects to be shown from 16 angles based on player orientation. Currently it just shows one image per object and ignores player orientation.

  7. Sanctimonia says:

    In the spirit of making good on my earlier request to only post news of my project on Aiera, I’d like to further submit the following:

    Am well along but am still having some difficulties, as well as some breakthroughs that really please me. Object implementation has went two distinct way: 1) bottom-centered objects and 2) bitmap-centered objects. Bottom-centered objects are trees and such which are tall and have central stalks, while bitmap-centered objects are flatter and have no roots. These two designations actually control the way the bitmap is drawn in the client rendering window, and allow objects to rotate and place properly.

    A video is here!!! Yay.

    http://www.eightvirtues.com/sanctimonia/misc/whip.wav

    Wait…that’s not the video. It must be here, then!

    http://www.youtube.com/watch?v=HpvIcGYHVLY