View unanswered posts | View active topics It is currently 30 Nov 2024, 07:10



Reply to topic  [ 29 posts ] 
 STL? 
Author Message
Lieutenant Junior Grade
Lieutenant Junior Grade
User avatar

Joined: 22 Nov 2004, 01:00
Posts: 201
Location: Nor Cal
Will Slower than light ships be possible in Supremacy?
IE, will I be able to mod in a ship that takes more than one turn to move one square?
I'm not asking for a change, just a clarification.

_________________
No. I'm not back.


30 Aug 2006, 10:31
Profile
Chief Software Engineer
Chief Software Engineer
User avatar

Joined: 11 Aug 2005, 01:00
Posts: 2688
Short answer: probably not.


30 Aug 2006, 15:17
Profile WWW
Evil Romulan Overlord of Evil - Now 100% Faster!
Evil Romulan Overlord of Evil - Now 100% Faster!
User avatar

Joined: 02 Dec 2004, 01:00
Posts: 7392
Location: Returned to the previous place.
Don't worry, ZDarby, you'll get your pre-Enterprise era mod one day...

Just think about BOTF5. I'm sure it isn't that far away...

:lol:

_________________
"Anyone without a sense of humour is truly at the mercy of the rest of us."

Image
Image


30 Aug 2006, 18:42
Profile WWW
Lieutenant Junior Grade
Lieutenant Junior Grade
User avatar

Joined: 22 Nov 2004, 01:00
Posts: 201
Location: Nor Cal
@Mstrobel. Roger that. Thanks.

@MOE. Yeah. Two decades really isn't that far away.

_________________
No. I'm not back.


31 Aug 2006, 08:56
Profile
Chief Software Engineer
Chief Software Engineer
User avatar

Joined: 11 Aug 2005, 01:00
Posts: 2688
I suppose I should clarify something. Theoretically, it would be possible to have sublight ships, but they wouldn't be able to move from sector to sector. They would have to remain stationed in the system in which they were constructed. But it'd be possible to build small, cheap sentry ships to guard your systems if you don't care that they can't move elsewhere.


31 Aug 2006, 15:57
Profile WWW
Lieutenant
Lieutenant
User avatar

Joined: 31 May 2006, 01:00
Posts: 451
How are you determining movement speed? Are ships getting some sort of speed modifier that determines how many sectrors they can move?

I know that I should know already. Been busy lately :(

_________________
-Azh


31 Aug 2006, 16:20
Profile
Chief Software Engineer
Chief Software Engineer
User avatar

Joined: 11 Aug 2005, 01:00
Posts: 2688
Yes, each ship design has a speed of n sectors per turn. A sublight ship would have a speed of zero (0) sectors per turn.


31 Aug 2006, 16:26
Profile WWW
Lieutenant
Lieutenant
User avatar

Joined: 31 May 2006, 01:00
Posts: 451
Why not 0.5? 0 is essentially the speed of a space station... which doesn't really move anywhere. I'm sure you're execting ints, so my real question would be... how hard would it be to accept decimals? Or keep the ints, but double the movement costs. Thus, a modifier of 1 would be half a sector (thus requiring two turns to pass through one sector). Ships that move 1 sector per turn would have a modifier of 2. Etc. You could also have ships that are capable of 3 sectors per 2 turns and other combinations, if it is felt to be warranted for whatever reason.

Plus, this could still allow for ftl ships to travel at slt speeds if they must (warp field destablization, damage, whatever). Having ships that are literally dead in the water kinda suck. It'd be nice to still have some options when the warp drive is out.

_________________
-Azh


31 Aug 2006, 16:28
Profile
Evil Romulan Overlord of Evil - Now 100% Faster!
Evil Romulan Overlord of Evil - Now 100% Faster!
User avatar

Joined: 02 Dec 2004, 01:00
Posts: 7392
Location: Returned to the previous place.
If it was possible, then it would be a great system and would increase the moddability of the game. It would also make it easier for you to program some of the effects of my random events, MStrobel, and as Azhdeen said, you could cater for damaged ships and the like, as well.

What do you say? Is it possible to do this? :)

_________________
"Anyone without a sense of humour is truly at the mercy of the rest of us."

Image
Image


31 Aug 2006, 17:22
Profile WWW
Chief Software Engineer
Chief Software Engineer
User avatar

Joined: 11 Aug 2005, 01:00
Posts: 2688
I'll have to think about it, but don't count on it.


31 Aug 2006, 18:33
Profile WWW
Crewman
User avatar

Joined: 18 Nov 2004, 01:00
Posts: 26
Location: Loughborough, England
Sounds like a lot of doohiggying for a feature with very little ingame use.
The first method, using a variable with support for decimals, requires (iirc) some form of floating point variable, which is a bit of waste of memory for what will be a single digit number, particularly as the smallest C# supports is 32bit. A single 8-bit integer would meet the possibilities for ship speeds, at a quarter of the memory footprint.
The second method would cause a lot of converting back and forth between the variable holding the ship's speed, and the game figuring out how far too move ships, not to mention it'll also have to remember ships that are 'half way' between sectors.
I can see why mstrobel isn't too keen, it just doesn't seem worth it for what little use it would be.

_________________
AMD athlon 64 4800 (Toledo)
BFG Tech Geforce 8800 GTS
2gig DDR400 RAM
2x150gig SATA (RAID 0)
Windows XP pro sp2 / Windows Vista Ultimate 64bit


31 Aug 2006, 19:14
Profile
Lieutenant
Lieutenant
User avatar

Joined: 31 May 2006, 01:00
Posts: 451
I agree. However, there's still going to be calculation between the movement modifier at some point (otherwise there would be no movement) since that modifier has to be doing something.

Like I said, I don't know what's already in place. However, I would imagine that a bool could be used that would be set equal to n%2. If it's on, the ship has moved half a sector (there was a remainder of 1). If not, the ship is at "the start" of the sector (remainder 0).

For the nonprogramming inclined, the % symbol is a mathmatical opperator. When used in an equation such as 7%2, the computer will take 7 and divide it by 2 and return the *remainder*.

As you were taught in school, 7 divided by 2 is 3 with 1 remainder. However, a computer will typically only kick out 3 and ignore the remainder on a normal division opperation. The modulus opperator ignores 3 and only returns the 1. A boolean variable is simple container that only accepts 1 or 0. Since it can only be one of two choices (and our equation will only ever return 1 or 0), it would make an ideal container for the program to keep track if a ship is half-way through a sector or not.

I would disagree on the limited usefulness, however. It could add a great deal of strategy to the combat system. I don't know off-hand what's planned, but if ship systems are targetable, it would be a prudent course of action to target engine systems to limit an opponent's retreat speed. This will enable your fleet to catch up to ships that have retreated but have engine damage.

And even if there's no targetable systems (I doubt there will be), it would be easy enough to have a ship's effenciency based on their level of damage. A ship that is 50% damaged would be 50% less effecient than a ship that is at 100%. This could also affect movement capabilities, sensor ability, you name it. There's a lot of different things we could do with it, although I'd prefer to keep the implimentation simple (such as 100% or 50% effecient).

I'm just running with the idea right now, and it's growing past the simple discussion of stl and ftl ability. But the possibility definitely exists, and it would not be too taxing or complicated to impliment from my point of view... which is quite limited and could mean nothing depending on what's already planned/coded.

_________________
-Azh


31 Aug 2006, 19:45
Profile
Chief Software Engineer
Chief Software Engineer
User avatar

Joined: 11 Aug 2005, 01:00
Posts: 2688
Laitainion raises a good point, as I currently use an 8-bit unsigned byte to store ship speed, and I might try to pack that value and a few others into a single 32- or 64-bit unsigned integer to save space. I couldn't do that with a floating point variable.

As it stands, speed is a measure of sectors per turn. A fleet moves a long a path at units of 1 sector at a time until it has traversed as many sectors as its speed allows during a given turn (or until it has been intercepted). If I were to use fractional speeds, I would have to track how far along a fleet is between sectors over the course of 2 or more turns. That's where it becomes more trouble than it's worth.

I also think it'd be bad for gameplay, because some players would be confused as to why their ships don't appear to be moving. There would also be problems interpolating a ship's position. For instance, if a ship moved at a speed of 1/3 sectors per turn, then after one turn, I would have to round to the nearest sector (in this case, the previous sector). This would complicate matters when one fleet is going after a slow enemy fleet. The player would have to mentally compute which sector two flights might converge in.


31 Aug 2006, 20:13
Profile WWW
Lieutenant
Lieutenant
User avatar

Joined: 31 May 2006, 01:00
Posts: 451
I was going to use the assumption that the slowest form of movement (aka, stl speed) would be half a sector per turn. I agree that attempting to keep track of additional fractions would be a pain. Refer to my modulus and boolean idea. What sounds like you have in place is virtually unchanged, with a single computation and a new boolean container.

I'd like to reiterate what MoE kind mentioned above - there are random events that will disable all "warp speed". Instead of globally changing movement to 0 sectors per turn, it would now allow ships to travel half a sector per turn (ie: giving all ships a movement modifier of 1 in my example above) which would be what a ship under impulse power would do.

Given the new baseline movement speed of 1/2, it doesn't complicate matter any more than already exist - plus this is just how the code will behave. What will be displayed will be something the user can understand (ie: This ship does not have warp speed capability. As such, it requires 2 turns to traverse one sector.)

*edit*
This would allow something like shuttlecraft to be implimented if it is desired.

_________________
-Azh


31 Aug 2006, 20:15
Profile
Crewman
User avatar

Joined: 18 Nov 2004, 01:00
Posts: 26
Location: Loughborough, England
To mstrobel:

I always wondered how you could hold various different sets of information (from your planets thread) in one variable. I mean, I can understand it by reading the variable at a bit by bit level, although I don't know if you could do that in C# (my limited experience and knowledge says no). Maybe you're using the gethash...hang on, I think I've just figured it out.

I was working on the basis that, since you have to work with the 'entire number' stored with a variable, and I assumed each number could be made with different bits set to 1 and 0 respectively. Except you can't, so (I reckon) you're reading the variable and doing some maths to extract each power of 2 from that number, ie. the variable holds 48, that's a 32 and a 16, from which you set off some methods that does whatever you want it to.

Does that about sum it up?
Or am I completely off the mark?

to Azhdeen:

Did you really mean to store a number in a bool? Because the way you wrote it sounds like you're trying to do this:

b = n%2

While a bool can only be set to true or false, or did you mean:

if (n%2 == 1)
bool = true

Which would make far more sense, and while I agree that is quite a simple solution, it still doesn't solve the problem of which sector we should round to for putting the ships?

Secondly, even if we did add SLT, impulse is slower than warp by many orders of magnitude, if we were trying to be canon I doubt a STL ship could really get very far before the game ended. After all, even at light speed it would take over 4 years for a ship to get to the closest star system. A ship at impulse would take even longer. In the end, I think it is just simpler to give STL ships a movement of 0. With the exception of crippled star ships, STLs aren't going to be designed for intersteller travel anyway.

_________________
AMD athlon 64 4800 (Toledo)
BFG Tech Geforce 8800 GTS
2gig DDR400 RAM
2x150gig SATA (RAID 0)
Windows XP pro sp2 / Windows Vista Ultimate 64bit


31 Aug 2006, 23:50
Profile
Chief Software Engineer
Chief Software Engineer
User avatar

Joined: 11 Aug 2005, 01:00
Posts: 2688
Laitainion, it's all done with bitwise operations. Shifts, AND operations, and OR operations. You can see how I do it for planets:

Code:
using System;
using System.Collections.Generic;
using System.Text;
using Supremacy.Types;
using Supremacy.Entities;
using Supremacy.Data;
using Supremacy.Game;
using Wintellect.PowerCollections;

namespace Supremacy.Universe
{
    [Serializable]
    public sealed class Planet : UniverseObject
    {
        public const int MaxMoonsPerPlanet = 5;
        public const int MaxVariations = 3;

        private const uint PlanetSizeMask = 0xE0000000;
        private const byte PlanetSizeOffset = 29;
        private const uint PlanetTypeMask = 0x1E000000;
        private const byte PlanetTypeOffset = 25;
        private const uint VariationMask = 0x01800000;
        private const byte VariationOffset = 23;
        private const uint MoonCountMask = 0x00700000;
        private const byte MoonCountOffset = 20;
        private const uint MoonDataMask = 0x000FFFFF;
        private const byte MoonDataOffset = 0;
        private const byte MoonDataUnitSize = 4;

        private uint planetData;

        public PlanetType PlanetType
        {
            get
            {
                return (PlanetType)((planetData & PlanetTypeMask) >> PlanetTypeOffset);
            }
            set
            {
                planetData = ((planetData & ~PlanetTypeMask) | (((uint)value << PlanetTypeOffset) & PlanetTypeMask));
                OnPropertyChanged("PlanetType");
                switch (value)
                {
                    case PlanetType.GasGiant:
                        PlanetSize = PlanetSize.GasGiant;
                        break;
                    case PlanetType.Asteroids:
                        PlanetSize = PlanetSize.Asteroids;
                        break;
                    case PlanetType.Rogue:
                        PlanetSize = PlanetSize.Tiny;
                        break;
                }
            }
        }

        public PlanetSize PlanetSize
        {
            get
            {
                return (PlanetSize)((planetData & PlanetSizeMask) >> PlanetSizeOffset);
            }
            set
            {
                if (value == PlanetSize.NoWorld)
                {
                    throw new ArgumentException(
                        "NoWorld is not a valid value for PlanetSize");
                }
                planetData = ((planetData & ~PlanetSizeMask) | (((uint)value << PlanetSizeOffset) & PlanetSizeMask));
                OnPropertyChanged("PlanetSize");
            }
        }

        public int Variation
        {
            get
            {
                return (int)((planetData & VariationMask) >> VariationOffset);
            }
            set
            {
                planetData = ((planetData & ~VariationMask) | (((uint)value << VariationOffset) & VariationMask));
                OnPropertyChanged("Variation");
            }
        }

        public MoonType[] Moons
        {
            get
            {
                uint count = ((planetData & MoonCountMask) >> MoonCountOffset);
                uint moonData = ((planetData & MoonDataMask) >> MoonDataOffset);
                MoonType[] moons = new MoonType[count];
                for (int i = 0; i < count; i++)
                {
                    moons[i] = (MoonType)(moonData >> (MoonDataUnitSize * i));
                }
                return moons;
            }
            internal set
            {
                uint newPlanetData = (planetData & ~MoonDataMask);
                if (value == null)
                {
                    value = new MoonType[0];
                }
                else if (value.Length > MaxMoonsPerPlanet)
                {
                    throw new ArgumentException(
                        "Number of moons must be <= " + MaxMoonsPerPlanet);
                }
                if (value.Length > 0)
                {
                    value = Algorithms.Sort<MoonType>(value,
                        new Comparison<MoonType>(
                        delegate(MoonType a, MoonType b)
                        {
                            return ((int)MoonHelper.GetSize(a)).CompareTo((int)MoonHelper.GetSize(b));
                        }));
                    Array.Reverse(value);
                }
                newPlanetData |= (((uint)value.Length << MoonCountOffset) & MoonCountMask);
                for (int i = 0; i < value.Length; i++)
                {
                    newPlanetData |= ((uint)value[i] << (MoonDataUnitSize * i));
                }
                planetData = newPlanetData;
            }
        }

        public Planet()
            : base()
        {
        }

        public PlanetEnvironment GetEnvironment(Race race)
        {
            switch (this.PlanetType)
            {
                case PlanetType.Asteroids:
                case PlanetType.GasGiant:
                case PlanetType.Crystalline:
                case PlanetType.Demon:
                    return PlanetEnvironment.Uninhabitable;

                case PlanetType.Rogue:
                    return PlanetEnvironment.Terrible;

                default:
                    int result;
                    Wheel<PlanetType> envs = new Wheel<PlanetType>();
                    for (int i = 0; i < (int)PlanetType.Rogue; i++)
                        envs.Insert((PlanetType)i);
                    result = envs.GetDistance(
                        this.PlanetType,
                        race.HomePlanetType);
                    if (result >= (int)PlanetEnvironment.Uninhabitable)
                        return PlanetEnvironment.Uninhabitable;
                    return (PlanetEnvironment)result;
            }
        }

        public bool IsHabitable(Race race)
        {
            return (GetEnvironment(race) != PlanetEnvironment.Uninhabitable);
        }

        public int GetMaxPopulation(Race race)
        {
            Table table = UniverseManager.Tables["PlanetMaxPop"];
            return int.Parse(table[this.PlanetSize.ToString()]
                                  [GetEnvironment(race).ToString()]);
        }

        public Percentage GetGrowthRate(Race race)
        {
            Table table = UniverseManager.Tables["PlanetGrowthRate"];
            return float.Parse(table[this.PlanetSize.ToString()]
                                    [GetEnvironment(race).ToString()]);
        }
    }
}


01 Sep 2006, 00:00
Profile WWW
Crewman
User avatar

Joined: 18 Nov 2004, 01:00
Posts: 26
Location: Loughborough, England
So I guess I was wrong on both counts, which is a good thing really, my way would have been incredibly messy. Not that I really understand how your solution works mind. I mean, I understand more or less what the code is doing, but only because I know what you're trying to do. It's going to take me a while to figure out what each bit does. Still, all good fun. Thanks. :wink:

_________________
AMD athlon 64 4800 (Toledo)
BFG Tech Geforce 8800 GTS
2gig DDR400 RAM
2x150gig SATA (RAID 0)
Windows XP pro sp2 / Windows Vista Ultimate 64bit


01 Sep 2006, 00:11
Profile
Lieutenant
Lieutenant
User avatar

Joined: 31 May 2006, 01:00
Posts: 451
Ok, for some reason, I seem to recall throwing actual 0's and 1's into bools before. Maybe that was C or C++ or something.

I messed around with it in C# a bit.... Some proof of concept code....

Code:
bool blSameSector = false;

            int n = 3;
            blSameSector = Convert.ToBoolean((Convert.ToByte(blSameSector) + n) % 2);

            label1.Text = Convert.ToByte(blSameSector).ToString();


I don't really know C# very well, so I struggled with this a bit to get the converts right. I completely avoid all if checks and comparisons. If the bool is 0, then that means the ship is at the start of a brand new sector. If it's 1, then the ship is half-way through the sector it is currently sitting in. As you can see, the only additional computation/memory that is needed is the one very small variable, and one additional computation per ship. In exchange for that, you are now able to add different things that affect ship speed.

Also keep in mind that the way I use the boolean means that MStrobel can take the bool and instead represent it in one of his packed 64-bit ints. But what I was trying to do is represent the 1/2 sector movement in the smallest container I possibly could. I only need 1 bit to represent it, so that's what I tried to do. Can't get a smaller memory footprint than that.

As for canon Star Trek and realistic STL speeds... the entire concept of movement in BoTF breaks any form of "canon" entirely. Why is it that a Galaxy class starship such as the Enterprise can only move 1 square per turn at Warp 9.x, and the Defiant can move *4* squares (or even the Heavy Destroyers at 3 squares), when neither ship can surpass Warp 10. Is the speed difference between warp 9.8 and 9.9 THAT much more powerful? Attempting to add realism to movement is an impossible task for this game as nearly all ships would be capable of traveling at equivilent speeds... which would simply homoginize all of the ships at the end of the game. There would be no more tactics as all ships could move the same amount of squares. At this point, the player would simply build ships with the best weapons/shields to intercept enemy fleets since his capital ships, in canon, can travel at the same speeds as the light escorts.

Not a fun game does that make.

I have to go real quick, so I'll add more later.

_________________
-Azh


01 Sep 2006, 14:53
Profile
Chief Software Engineer
Chief Software Engineer
User avatar

Joined: 11 Aug 2005, 01:00
Posts: 2688
FYI...

C++:
bool value = (n % 2);

C#:
bool value = ((n % 2) == 1);

...because C# has strict type safety.


01 Sep 2006, 15:01
Profile WWW
Evil Romulan Overlord of Evil - Now 100% Faster!
Evil Romulan Overlord of Evil - Now 100% Faster!
User avatar

Joined: 02 Dec 2004, 01:00
Posts: 7392
Location: Returned to the previous place.
Quote:
Is the speed difference between warp 9.8 and 9.9 THAT much more powerful?


Actually, from what I know of Warp speeds, (Which is admitedly not much) the difference between Warp 9.8 and Warp 9.9 represents an 10x increase in physical speed. The difference between eg. Warp 2.8 and warp 2.9 does NOT represent a 10x increase in speed, however.

There's a chart on Ex-Astris-Scientia that explains Warp better than I ever could. They don't allow hotlinking so you'll have to click it yourself though.

It's the first picture on the right, under the Cartography section.

Click Here For The Article With The Chart On It

...

My brain hurts from all that programming stuff. If you guys think it would take too much programming to allow STL movement, then fine by me. It doesn't matter about the random events, coz I can always just remove them.

...Obviously i'll keep them in a separate document just in case someone thinks of a way to allow STL though. I can always hope. :wink: :lol:

_________________
"Anyone without a sense of humour is truly at the mercy of the rest of us."

Image
Image


01 Sep 2006, 15:04
Profile WWW
Lieutenant
Lieutenant
User avatar

Joined: 31 May 2006, 01:00
Posts: 451
mstrobel wrote:
FYI...

C++:
bool value = (n % 2);

C#:
bool value = ((n % 2) == 1);

...because C# has strict type safety.


Yeah, I was pretty certain I've done boolean math before in programs. C# isn't as flexible (but more flexibility in this case is more dangerous) as C# and VB. However, the code I posted works. If you set the bool to true (which is a nonzero number, in this case 1) and run the program, it returns 0. If you set it to false (0) and run it, it returns 1. Simply add a label and copy/paste the code into C# at any event (I used the form load) to see for yourself. And, not including the variable declaration, it's just one additional line of code (maybe two), depending on how easy this is to integrate.

So... you have your movement equation:
Code:
TotalMovement = (n + blSameSector) / 2

will tell you how many squares to move. If n is 3, and the blSameSector is 1, then you'll get 2 squares.

Now, you record the half sector representation:
Code:
blSameSector = (n + blSameSector) / 2

and that will update itself.

To put in an example...

You start a brand new game and you have a ship that can move 3 squares every 2 turns (again, I will always assume that n squares every 2 turns will be the standard system of movement for all ships). You order the ship to travel to a square that is 9 squares away. This should take a total of six turns.

blSameSector is currently equal to 0. When the player clicks next turn for the first time, the following math will occur.

TotalMovement = (n + blSameSector) / 2
TotalMovement = (3 + 0) / 2
TotalMovement = 1

The ship will move one square on the galaxy map. However, it has also traveresed halfway to the second sector. So the program knows this, the following math will also occur.

blSameSector = (n + blSameSector) % 2
blSameSector = (3 + 0) % 2
blSameSector = 1.

The math is complete and the turn ends. Now when next turn is clicked again, the following occurs:

TotalMovement = (n + blSameSector) / 2
TotalMovement = (3 + 1) / 2
TotalMovement = 2 squares.

And...

blSameSector = (n + blSameSector) % 2
blSameSector = (3 + 1) % 2
blSameSector = 0

Voila, automatic checking. If you would prefer that the ship moves 2 squares the first turn and then 1 square the second turn, simply initialize the bool variable to true (1).

Again, if you decide to pack all this data into a 64 bit int, MStrobel, then just use the int value. I never actually check to see if it's true or false because the math in the equation will do the checking for me. I just wanted a small container to store the value in memory, and then convert it into an int as needed to do the computation, and then store it back as a bool. That way, as the code for the turns go through their thing, all of these values are taking up minimal space in memory (I figured this was a concern since it was pointed out?) and only one ship at a time will have this container expanded to the size of an int.

Something I should have probably said at the start of the discussion is... I don't actually care if this goes in or not. Zarby might, as the originator of this discussion, and it allows for a bit more costumization in terms of mods, random events, residual combat effects, and anything else I can't think of. I just felt I could present a viable idea to incorporate stl speeds as I think one does exist.

MoE: While the difference between 9.8 and 9.9 might be a speed increase of x10, it still doesn't show me why I wouldn't want to build forty billion Soverings instead of 20 billion Soverigns for planetary bombardment and 20 billion destroyers/escorts for interception beatdowns. I'm just pulling this example out of the blue... but if a capital ship can travel at the same speed as a light escort ship, then why would I bother building the light escorts? There *HAS* to be a reason for me to want the lighter ships. And in BoTF, that translates into movement speed, which happens to also be great for interception chance.

Plus... +10% increase in speed is definitely not +100% increase in speed. There is *no way* to accurately represent actual ship speed in the game. And that is my point.

_________________
-Azh


01 Sep 2006, 16:16
Profile
Evil Romulan Overlord of Evil - Now 100% Faster!
Evil Romulan Overlord of Evil - Now 100% Faster!
User avatar

Joined: 02 Dec 2004, 01:00
Posts: 7392
Location: Returned to the previous place.
I know, but I thought you were getting confused on the Warp speeds themselves, not the games inherent inability to show Warp speeds in any sort of realistic manner.

There is one thing that makes life easier though: each turn is supposed to represent 1 month - even at STL, travelling non-stop for a month will at least get you somewhere, even if you need another 47 of them to actually get to then nearest Star! :lol: :lol: :lol:

_________________
"Anyone without a sense of humour is truly at the mercy of the rest of us."

Image
Image


01 Sep 2006, 16:25
Profile WWW
Chief Software Engineer
Chief Software Engineer
User avatar

Joined: 11 Aug 2005, 01:00
Posts: 2688
I'm pretty sure I'm not going to implement STL ships. However, I *might* make a special case later on for ships that have run out of fuel. If I do that, all ships will be reduced to the same speed (we can call it "impulse") and move one sector every n turns. I'll figure out a reasonable way to implement it if and when the time comes.


01 Sep 2006, 18:15
Profile WWW
Lieutenant
Lieutenant
User avatar

Joined: 31 May 2006, 01:00
Posts: 451
mstrobel wrote:
I'm pretty sure I'm not going to implement STL ships. However, I *might* make a special case later on for ships that have run out of fuel. If I do that, all ships will be reduced to the same speed (we can call it "impulse") and move one sector every n turns. I'll figure out a reasonable way to implement it if and when the time comes.


Now that sounds cool. And even then, you could allow a STL ship to simply always have 0 fuel, kinda like a way to "fake" STL speed.

_________________
-Azh


01 Sep 2006, 18:18
Profile
Lieutenant Junior Grade
Lieutenant Junior Grade
User avatar

Joined: 22 Nov 2004, 01:00
Posts: 201
Location: Nor Cal
Great conversation. I didn't mean to create such controversy. But I'm glad I did.

A ship that could move only within its system of origin would work well for a psudo pre-Ent mod, using the methodology MOE and I discussed many months ago. (Larger distances between stars.) In the end, though, it's better to let Mstobel do what he wants to get done than to bother him with STL requests.

Actually, there are several ways of getting between stars STL within a lifetime. I wont go into it here. Just know that though the problems are horrific, they *are* solvable and with tech that is within our reach, though just barely.

Azhdeen is correct. There is no simple way of representing accurate speed (warp or otherwise) in this kind of game... Especially if you want to make it fun, instead of tedius. The disparity between warp 5 and warp 9.9 is just too huge. Let alone between STL and warp 9.9. Push comes to shove, it's more important for a game to be fun than accurate... What's more is, there's a very delicate ballance between fun and programability: if it cant be programmed it'll never be fun; if it isn't fun, there's no reason to program it. Even if it's programmible but a hastle or just not interesting to do so, the game will not get finished.

On that note, if it's possible or even only easy to put in STL, I'm all for it. Otherwise, forget it. Do what you want, mstrobel.

Dont think this a request to stop talking on the subject, just a statement of personal intent/preference.

_________________
No. I'm not back.


01 Sep 2006, 20:46
Profile
Crewman
User avatar

Joined: 18 Nov 2004, 01:00
Posts: 26
Location: Loughborough, England
Azhdeen wrote:
mstrobel wrote:
I'm pretty sure I'm not going to implement STL ships. However, I *might* make a special case later on for ships that have run out of fuel. If I do that, all ships will be reduced to the same speed (we can call it "impulse") and move one sector every n turns. I'll figure out a reasonable way to implement it if and when the time comes.


Now that sounds cool. And even then, you could allow a STL ship to simply always have 0 fuel, kinda like a way to "fake" STL speed.


Doesn't that pretty much amount to the same thing though as doing STL ships though? Since the core of the debate was whether it was worth creating a mechanism to simulate speeds in fractions of a sector?

I agree that it could be cool, but I still don't know that it really needs to be in the game, if only because it goes against the grain of a grid based game.

_________________
AMD athlon 64 4800 (Toledo)
BFG Tech Geforce 8800 GTS
2gig DDR400 RAM
2x150gig SATA (RAID 0)
Windows XP pro sp2 / Windows Vista Ultimate 64bit


09 Sep 2006, 12:13
Profile
Chief Software Engineer
Chief Software Engineer
User avatar

Joined: 11 Aug 2005, 01:00
Posts: 2688
It kinda amounts to the same thing, except that there would only be one STL speed, so it wouldn't be very flexible.


10 Sep 2006, 14:55
Profile WWW
Lieutenant
Lieutenant
User avatar

Joined: 31 May 2006, 01:00
Posts: 451
mstrobel wrote:
It kinda amounts to the same thing, except that there would only be one STL speed, so it wouldn't be very flexible.


That's essentially what I was expecting. I was simply trying to create a programable solution to allow it to take place. But I never ever wanted to see a ship that was considered to be travelling to some place stay in a sector for more than 2 turns, even if the system was capable of it.

_________________
-Azh


11 Sep 2006, 14:20
Profile
Commander
Commander
User avatar

Joined: 30 May 2005, 01:00
Posts: 1137
Location: Northglenn, Colorado - U.S.
(Grabbing my abacus) ( old fart here) Aggg I went blind!!! All I know is that when I push turn I know my ships will go "someplace". lol....

The only question I would ask about this is, would we be able to say see a transport fly from the planet to a spacestation or the like? OR would that be a bit too impractical for the game?

_________________
I'm A Romulan with an Attitude and I'm not afraid to use it!

Image


24 Sep 2006, 15:58
Profile YIM
Display posts from previous:  Sort by  
Reply to topic   [ 29 posts ] 

Who is online

Users browsing this forum: No registered users and 27 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by STSoftware.