I've recently installed 3ds Max on this computer and I decided to take up making playerships and learning how to mod Transcendence as a hobby.
Here's my first playership:
Katana-class Experimental Assault Frigate
The Katana was designed to be a hit-and-run type vessel, either closing to range while firing its main armament at an enemy or hitting it with missiles and long-range kinetic weaponry from a distance. It is very fast, able to keep up with most gunships, but not very maneuverable.
Roadmap:
1.0: Initial WIP release
1.1: Playership Drones compatibility, 'full' release
1.2: Fine-tuning
1.3: Better model, textures
1.?: Heliogenesis Fighter Equipment integration?
Outstanding issues:
- Balancing
- Weapon mounts, engine emissions need to be fixed
- armor display image off centered
Future plans:
More ships
Stations
Custom star systems and quests?
Addition of the ships to patrols and sovereigns
Custom items, weapons, and equiment
Download 1.0z Here
Changelog
1.0c: fixed an issue that prevented the Katana extension from being selected. Apparently I have to call the TSB library now. Added interior compartments.
1.0d: Some outstanding issues
1.0z: Changed the model some. The ship now detects stations in a 250ls radius. PSD compatibility.
Todo:
Move sensor functionality to an 'active sensor' device. Activating it will scan a 250 ls area, but will have a chance of increasing the number of enemies sent at you by hostile sovereigns.
Make planning maneuvers an important fact of gameplay. Massive fuel use when firing thrusters?
Credits to:
JohnBWatson for Pale Blue Light, which helped me get my head around making a playership.
PM for Playership Drones. I used some of the armor segment code from the EI7000 playership
AssumedPseudonym for help with setting up the 3d model, and the syntax
Wolfy for the sprite sheet generator, and
George Moromisato for such a great game
KEW Shipyards
An Old Pilgrim's Playership
A few days after your vision, your father summons you to his deathbed. He reveals to you that he too was a pilgrim, but lacked the conviction to finish his journey. Filled with shame at his cowardice, he returned to his family. With his dying breath, he bequeaths to you his old ship and implores you to succeed where he failed.
Will you honor your father's last request?
Todo:
- Playership code
- Quirks
A few days after your vision, your father summons you to his deathbed. He reveals to you that he too was a pilgrim, but lacked the conviction to finish his journey. Filled with shame at his cowardice, he returned to his family. With his dying breath, he bequeaths to you his old ship and implores you to succeed where he failed.
Will you honor your father's last request?
Todo:
- Playership code
- Quirks
- - You begin with powerful weapons but:
- Your father's old ship is fickle. Too much damage may lead to the failure of important systems;
- Your father has amassed many enemies in his journey. The sight of his ship may bring them out of their dens once more.
-
- Fleet Officer
- Posts: 1452
- Joined: Tue Aug 19, 2014 10:17 pm
That reskin on the Katana is very impressive. I liked the original model too, but the new version fits the game perfectly.
Thanks!JohnBWatson wrote:That reskin on the Katana is very impressive. I liked the original model too, but the new version fits the game perfectly.
On another note, I'm putting out a call for help for scripting. I'm moving the Katana's sensor functionality to an item to allow for further expansion of functionality. I want it to scan the area six times on each activation, with a delay of ten seconds between each scan.
Code: Select all
<ItemType UNID="&itKatanaActiveScan;"
name= "Active Scan"
level= "5"
mass= "5000"
frequency= "notrandom"
description= "Activates the Katana's active scanners."
>
<Image imageID="&rsItems1;" imageX="0" imageY="192" imageWidth="96" imageHeight="96"/>
<MiscellaneousDevice
powerUse= "5"
capacitorPowerUse= "50"
powerToActivate= "10000"
/>
<!--issue: does one scan while It's supposed to be doing six-->
<Invoke installedOnly="true">
(block Nil
(plyMessage gPlayer "Sensors initialized...")
(sysAddObjTimerEvent 100 gplayership "sensorTest")
)
)
</Invoke>
<Events>
<sensorTest>
(plyMessage gPlayer "Systems test.")
</sensorTest>
<scanEvent>
(block (obj mappedAll mapEnemy)
(plyMessage gPlayer "Scanning...")
(setq mappedAll True)
; Compute the probability of mapping an enemy station
(switch
(geq (sysGetLevel) 7)
(setq mapEnemy 0)
(geq (sysGetLevel) 3)
(setq mapEnemy (subtract 360 (multiply 72 (subtract (sysGetLevel) 2))))
(setq mapEnemy 360)
)
; Iterate over all stations in the system
(enum (sysFindObject gSource "TsN:250") obj
(switch
(and (objIsEnemy gSource obj) (gr (add (objGetDestiny obj) 1) mapEnemy))
(setq mappedAll Nil)
(block Nil
(if (not (objIsKnown obj))
(plyMessage gPlayer "New station(s) detected")
(plyMessage gPlayer "All stations within 250 ls detected")
)
(objSetKnown obj)
)
)
)
)
</scanEvent>
</Events>
</ItemType>
I've still yet to create the counter that makes it run six times too.
Edit: Getting there!
Code: Select all
<Invoke installedOnly="true">
(block Nil
(plyMessage gPlayer "Sensors initialized...")
(objFireItemEvent gplayership gitem "runCounter")
"runcounter"
)
)
</Invoke>
<Events>
<runCounter>
(block (runTimes)
(setq runTimes 0)
(loop (ls runTimes 6)
(block Nil
(sysAddObjTimerEvent 300 gPlayerShip 'sensorTest)
(dbgOutput runTimes)
(setq runTimes (add 1 runTimes))
"initializing"
)
)
)
</runCounter>
<sensorTest>
(plyMessage gPlayer "Systems test.")
"sensor test"
</sensorTest>
<!--<scanEvent>
(block (obj mappedAll mapEnemy)
(plyMessage gPlayer "Scanning...")
(setq mappedAll True)
; Compute the probability of mapping an enemy station
(switch
(geq (sysGetLevel) 7)
(setq mapEnemy 0)
(geq (sysGetLevel) 3)
(setq mapEnemy (subtract 360 (multiply 72 (subtract (sysGetLevel) 2))))
(setq mapEnemy 360)
)
; Iterate over all stations in the system
(enum (sysFindObject gSource "TsN:250") obj
(switch
(and (objIsEnemy gSource obj) (gr (add (objGetDestiny obj) 1) mapEnemy))
(setq mappedAll Nil)
(block Nil
(if (not (objIsKnown obj))
(plyMessage gPlayer "New station(s) detected")
(plyMessage gPlayer "All stations within 250 ls detected")
)
(objSetKnown obj)
)
)
)
)
</scanEvent>-->
</Events>
</ItemType>
If you don't want them all to happen at once, you've got to either use a recurring timer (and stop it after some number of iterations), or set each timer for a different amount of time. For instance:
Code: Select all
(for i 1 7
(sysAddObjTimerEvent (multiply 300 i) gPlayerShip 'sensorTest)
)
- Aury
- Fleet Admiral
- Posts: 5421
- Joined: Tue Feb 05, 2008 1:10 am
- Location: Somewhere in the Frontier on a Hycrotan station, working on new ships.
Thats a cool ship!
I'd love to see you take on making NPC factions
I'd love to see you take on making NPC factions
(shpOrder gPlayership 'barrelRoll)
(plySetGenome gPlayer (list 'Varalyn 'nonBinary))
Homelab Servers: Xeon Silver 4110, 16GB | Via Quadcore C4650, 16GB | Athlon 200GE, 8GB | i7 7800X, 32GB | Threadripper 1950X, 32GB | Atom x5 8350, 4GB | Opteron 8174, 16GB | Xeon E5 2620 v3, 8GB | 2x Xeon Silver 4116, 96GB, 2x 1080ti | i7 8700, 32GB, 6500XT
Workstations & Render machines: Threadripper 3990X, 128GB, 6900XT | Threadripper 2990WX, 32GB, 1080ti | Xeon Platinum 8173M, 48GB, 1070ti | R9 3900X, 16GB, Vega64 | 2x E5 2430L v2, 24GB, 970 | R7 3700X, 32GB, A6000
Gaming Systems: R9 5950X, 32GB, 6700XT
Office Systems: Xeon 5318Y, 256GB, A4000
Misc Systems: R5 3500U, 20GB | R5 2400G, 16GB | i5 7640X, 16GB, Vega56 | E5 2620, 8GB, R5 260 | P4 1.8ghz, 0.75GB, Voodoo 5 5500 | Athlon 64 x2 4400+, 1.5GB, FX 5800 Ultra | Pentium D 3.2ghz, 4GB, 7600gt | Celeron g460, 8GB, 730gt | 2x Athlon FX 74, 8GB, 8800gts 512 | FX 9590, 16GB, R9 295x2 | E350, 8GB | Phenom X4 2.6ghz, 16GB, 8800gt | random core2 duo/atom/i5/i7 laptops
(plySetGenome gPlayer (list 'Varalyn 'nonBinary))
Homelab Servers: Xeon Silver 4110, 16GB | Via Quadcore C4650, 16GB | Athlon 200GE, 8GB | i7 7800X, 32GB | Threadripper 1950X, 32GB | Atom x5 8350, 4GB | Opteron 8174, 16GB | Xeon E5 2620 v3, 8GB | 2x Xeon Silver 4116, 96GB, 2x 1080ti | i7 8700, 32GB, 6500XT
Workstations & Render machines: Threadripper 3990X, 128GB, 6900XT | Threadripper 2990WX, 32GB, 1080ti | Xeon Platinum 8173M, 48GB, 1070ti | R9 3900X, 16GB, Vega64 | 2x E5 2430L v2, 24GB, 970 | R7 3700X, 32GB, A6000
Gaming Systems: R9 5950X, 32GB, 6700XT
Office Systems: Xeon 5318Y, 256GB, A4000
Misc Systems: R5 3500U, 20GB | R5 2400G, 16GB | i5 7640X, 16GB, Vega56 | E5 2620, 8GB, R5 260 | P4 1.8ghz, 0.75GB, Voodoo 5 5500 | Athlon 64 x2 4400+, 1.5GB, FX 5800 Ultra | Pentium D 3.2ghz, 4GB, 7600gt | Celeron g460, 8GB, 730gt | 2x Athlon FX 74, 8GB, 8800gts 512 | FX 9590, 16GB, R9 295x2 | E350, 8GB | Phenom X4 2.6ghz, 16GB, 8800gt | random core2 duo/atom/i5/i7 laptops
- TheLoneWolf
- Militia Captain
- Posts: 802
- Joined: Thu Nov 28, 2013 5:03 pm
- Location: Aboard the CSS Radiant
Nice job, mate! Maybe I should ditch Blender and start 3DS MAX too.