Sanctimonia Update: Bug Fixes Abound, Object Placement Much Nicer
Kevin Fishburne has been very busily working on Sanctimonia, his Ultima-inspired online game, and has managed to make a large number of bug fixes over the past couple of weeks.
In reading his weekly reports, I note that he has made corrections to the object generation/placement algorithm in his terrain creation tool, Littoral, and another bug — caused by the addition of a “sand” terrain layer — affecting how the coastal waterlines were generated. Redundant code has been consolidated, the client/server connection has been tweaked, object persistence is now fully supported, object collision detection has been improved, object display on the mini-map has been improved, and the map “wrap around” feature works (but is in need of further bug-fixes).
Kevin’s next goal is to get proper date and time referencing set up in the client and server. He has also decided to use a raw Ultima 4 overworld map as a testing ground for Littoral and Sanctimonia, especially to test object placement. We can hopefully expect a video, set in Britannia, in the next day or two.
It should be noted that Ultima 4’s Britannia won’t be the final map for Sanctimonia; Kevin has something else in mind for the finished product, which I am sure will turn out awesome.
One correction. “…object persistence is now fully supported…” should be “…player orientation persistence is now fully supported…”, meaning that when a player rotates the server is informed, keeps track, and will send the last known orientation back to the player when he/she reconnects at a later time.
I did put together a rather bad video, but since making a bunch of further improvements tonight I will be putting up another, hopefully higher-quality one. I’ll probably delete the older vid because other than being crap it also had bad audio mixing. Debbie Gibson deserves better than that. 🙂
Tonight’s improvements include a scaled version of the previous mini map, but cropped and centered on the camera location and with larger object representations. It also smoothly scrolls keeping the camera position as its center point instead of jerking over when the player traverses cells. It looks WAY more professional than the old way, and it’s a lot easier to get your bearings by looking at it. It also makes it difficult to tell when your player has traversed cells, so the whole experience seems smoother and more seamless.
I’ll post a link to the new vid here as soon as it’s up.
I also got some excellent advice from the GAMBAS mailing list about date and time operations. I should be able to have the clients receive date/time information from the server and keep it synchronized and scaled. Game time will be calculated using a base time, the server’s clock time and a scaling factor of four. So one Earth day will equal four Sanctimonia days, basically.
As promised:
http://www.youtube.com/watch?v=wQf2-43-guY
Since YouTube sucks a massive, here’s the direct link, which needs to be mirrored:
http://www.eightvirtues.com/sanctimonia/videos/
(falklands.webm)
Remind me to delete my YouTube accounts.
Here’s last week’s report (week 19):
http://www.eightvirtues.com/sanctimonia/progress/
And here’s a link to the revised video showing the improvements:
http://www.youtube.com/watch?v=9hv2qDsmg1c
No Debbie Gibson this time. Sorry guys…
In the spirit of banging my head against the wall, I bring you this:
http://www.youtube.com/watch?v=7G1QQbkbw6w
Other than getting GAMBAS to implement a method to copy only the alpha channel of an image to another, this is surely the most important thing I’ve accomplished so far in realizing my vision for Sanctimonia. If you disagree, then find me a game that does this. I’d be very interested to know about it.
I finally got sending a date and time from the server to the client working, subtracting an offset from the server’s date, multiplying it by an arbitrary number and sending it to the client as the base world date at any given moment.
I used that as the foundation for graphical day/night cycles in the client, which though still has a bug generally works as it should. You’ll notice from the video when the day/night cycle’s timing starts getting out of sync with the debug info’s time.
On a different subject, the reason the trees are so large is because I haven’t regenerated the object data in some time. Because it’s persistent now, the trees grow and stay that big even if I turn off the server. I haven’t added tree death or reproduction, so there’s no balance other than me capping their maximum size to 2x their bitmap resolution through a config file or regenerating them via Littoral.
So to recap, vegetation growth/maintenance is working and client day/night cycles with server world time synchronization has been primitively implemented.
Forgot to mention the video:
http://www.youtube.com/watch?v=q_dJ66Q1UL0