Back to Roots: Boat Transportation

Fearyourself has made some stellar progress on Back to Roots, his Ultima-inspired game engine, in recent weeks. His most recent addition to the engine is boat travel:

I contemplated a lot of potential changes, the one that stuck was actually saying: a boat is an object like any other. The group can only have one transportation at a time. What handles the skipper, the frigate, the horse, or the magic carpet is a LUA script.

Now the choice of making the transport handling a LUA script is two folds: it’s easy to do and it allows me to modify the behavior of the transportations later on very easily.

What we’ve got now is pretty much 30 lines of code for the frigate to say : only works in deep water, everything is a cost of 1 and you can only have 2 skippers.

Obligatory video:

[youtube http://www.youtube.com/watch?v=8nXEGjJRcps&w=480&h=390]

Sailing away!

He also informed me, via email, that other forms of “vehicular” (by which I mean: anything that doesn’t involve the Avatar walking around) have been implemented as well, though not tested. Additionally, all that works where boats are concerned is the actual boat travel; boat combat, damage to boats, and other such things remain unimplemented (though they are all, presumably, being worked on).

6 Responses

  1. fearyourself says:

    I’ll add some update directly here 🙂

    Actually, I’ve tested the magic carpet which works easily and also improved the monsters’ path finding skills. They’ll now go towards you if you are next to land.

    I also added the support of the boat related combat maps so that you can board a pirate ship and be boarded.

    http://gamengine.net/?p=168

    I’ve almost finished the boat handling, all that remains are the cannons and the hull information.

    The video of the fighting is actually directly here:

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

  2. Sanctimonia says:

    The two skiffs that you can individually deploy from the frigate are completely badass. THAT is the kind of stuff that made Ultima awesome, and forgive me if I’m wrong, but I think you improved upon it there.

  3. fearyourself says:

    Actually, that concept was from them directly ;-). At first, I had a system that would allow you only one skipper but when I saw that the original game allowed two, I said: “Why not?”.

    It took 5 minutes to put in 🙂

    The biggest question I’ve got is when firing the cannon, do I let the player choose where he is shooting, for example with a 4 tile radius? Or do I leave it as is with a direction?

    Thanks,
    Jc

  4. Sanctimonia says:

    Huh, funny that I forgot about that. Ultima V was pretty much my favorite Ultima (though it’s hard to decide between it and IV or VI), so I should have known.

    As far as the cannons go, simply pressing a button and a direction to fire perpendicular to the ship is more fluid and satisfying, but being able to aim within a certain radius is more realistic and useful. Ideally you’d be able to specify the azimuth and elevation within the ship’s specifications and control how much gunpowder is packed behind the cannonball. I guess it’s a matter of deciding where to draw the line between faithfulness to the original, simplicity of interface and finally realism. Letting you pack the cannon with chains, grapeshot, silverware or rotting corpses would be awesome though. The use of corpses could cause disease amongst the crew as well as attract sharks.

    My recommendation would be to support all of the above and perhaps have a config file to set the level of complexity. You could have canonical Ultima cannons and advanced cannons for those who enjoy a little more depth.

  5. fearyourself says:

    I think you might be going a bit too far ;-). Handling the gunpowder or deciding if you pack the cannon with corpses might be a bit too much for what I’m going for.

    However, I agree that I could do both and let the engine decide at runtime which version to do. I have to think about how to do that efficiently.

  6. Sanctimonia says:

    As long as the simple things are taken care of first, it’s always okay to go too far.

    You could have a GUI option for “Classic” and “Expert” which the player could change at any given moment (or program start at least). Select Case or the functional equivalent could be used to differentiate code groups between the two modes, with all the other code accessible.

    I would like to know what a skeleton sprite from Ultima IV or V would have looked like getting shot from a cannon, however. At least they could have pierced their sails with the bone fragments and made immobilized them.