Two more stations

Today brings two more space stations, the “Missing Sector” drydock and the “Jumping Spider” starbase.

Missing Sector

Named after the Missing Sector Orb Web spider, the second drydock design of the game takes a ‘rib cage’ approach to illuminating the encased ship. It is designed to be stationary unlike False Widow on my last post, although both are about the same size.

Jumping Spider
20180621_1449
Named after the spider species of the same name, this is a test starbase that will be used for developing the needed scripts for later ones. Its far from a perfect model, but it will make a great placeholder for the time being! Its about 4 kilometres from top to bottle and can fit a fair amount of ships inside.

So, what are starbases?
Starbases are huge support facilities that function as unified command centres, repair and replenishment stations, cold storage, and staging areas. In size, they typically dwarf all starships, carry several thousand personnel, and the largest can even contain multiple starships inside! The game will make extensive use of starbases as major hubs and places for the Player to dock at.

I’m planning six unique types, starting with a further development of Jumping Spider as the largest type. The five others will vary in size and purpose. I’ll be showcasing some of them next week, so stay tuned!

 

Advertisements

False Widow Drydock

The next addition to the game is a bigass space station.

The “False Widow” drydock.

20180619_1224
Drydock in orbit of Tholia III, with a Dew Drop-class explorer docked

A bit about drydocks
In reality, drydocks are huge basins that can be flooded to allow ships to dock, and then drained to expose the ship’s hull for repair work or painting. They can be also used to build ships in ‘dry’ conditions before being set afloat. Drydocks in the Star Trek universe serve the same purpose, but are based in space (no shit, I know). False Widow is the first of about four designs of Tholian drydocks to be created, which will serve as repair and replenishment stations for the player to dock in.

Common characteristics between all four drydock designs will be traditional Tholian principles (three hull ‘arms’), thrusters for orbit adjustment, and a large array of lighting. Each hull arm has one or two large illumination pads at the mid-section used to light up the docked ship, and a single smaller lighting pad at the absolute end used to help ships navigate in without colliding with the station. In Unity, the lighting effects for both types of pads are constructed with emissive material (absolute white, emission value of 1/no HDR because I don’t want it to be too blinding), point lighting to allow the effect to shine on the docked ship’s hull (absolute white, range of 4, intensity of 1), and post-processing bloom (determined by the game’s selected quality settings).

The False Widow
Whilst False Widow will share most of its design elements with future drydock designs, this one is unique in that it will have a fully functional Warp drive that allows it to travel to other solar systems to rebase itself. This means that you might see them pop up in solar systems adjacent to the sites of major ship battles where servicing ships close to the front lines is urgently needed. Current planned number of False Widows to be put into the game are about 10 operational , 20 for scenic purposes (they’ll look the same but are inoperable for the player since they already have an NPC ship in them), and a further 5 as damaged, destroyed or abandoned.

 

 

Some juicy specs:

  • Length: 850 metres to 1.1 kilometres (final scale TBD)
  • Mass: 1.7 to 2.5 million metric tonnes
  • Occupants: 1,200 (normal), 4,500 (wartime)
  • Maximum speed: Warp 6


And finally…

At this point in time, the design is still not fixed. The model has been imported only for lighting testing, collider testing, and so that the interaction scripts can be developed and tested. As with my last post, I’ll leave you with a quick video showcasing the drydock in perspective view.

 

It’s gonna be a big one!

So, “Tholian Simulator” (working title) is gonna be a big and a fairly ambitious project.

For starters, what is a ‘Tholian’?
Tholians are a species from Star Trek. They have only been seen on screen twice but are heavily featured in an episode of the MMORPG Star Trek Online. Despite their (IMO) under utilization in the canon Star Trek universe, I’ve been quite the Tholian fanboy for a while since they are really unique compared to most sci-fi aliens and with this project I hope to give them the creative ‘platform’ that does them justice! 😀

GTholian2
Tholian pilot from Star Trek: Enterprise episode “In a Mirror, Darkly”


The game

It is gonna to be a cultural simulator. It will detail Tholian society in a way faithful to what little is known from their two on-screen appearances and STO, but will greatly expand on that. To that end, it might be different to the expectations others may have of the Tholians and will largely contradict non-canon Star Trek material (like novels and most other games). I consider this a way for me to be creative!

It will feature ground and space action. On the ground, you’ll be focused on doing your part for Tholian society, help explore strange new worlds, and ultimately work your way to the top of the Assembly! In space, you’ll be engaging in galactic politics and diplomacy and of course space combat!

Current stage of progress
Right now, the game still is being planned out before large-scale development – the lore, outline of the game, how things, etc etc. However, I’m already testing game concepts in Unity (my choice of engine for all this) as we speak. Base systems for ship operations, lighting paradigms, and custom shaders for enhanced visuals are all being developed right now.

First three ships
As part of the lore development, a number of ship designs have been lined up from canon/STO and some that were sketched out are modelled and implemented!

20180612_1244_01
From left to right; Dew Drop explorer, Black Lace freighter, and Funnel Web destroyer

Planned subspecies
In order to further flesh out Tholian society (and especially their homeworld), I’ve decided to plan Tholian subspecies that have unique abilities for ground exploration and ground combat (if I choose to implement it)!

Tholian fly

This “fly Tholian” is based on a design by Norsehound on DeviantART. It’s still very similar right now, but it will be developed down the line.

A parting video!
Here’s a video of the lighting effects and firing FX for your viewing pleasure. Just bear in mind this is still early days! 🙂

Stay tuned for more!

Chapter 2 nearing completion!

It has been over a month since my last update for Path to 2265. Since then, there have been some big and exciting changes!

SearchEngine upgrades

I’ve once again made large improvements in the search department. Natural ordering, more meaningful weighting, complete and proper tag finding, and basic filtering are now present! Numerous pages benefit from the improvements, but the site search itself gains the most by finally getting a basic filtering mechanism that allows you to view search results of a specific category!

20180311_desktop_search

Dynamic content

In order to promote better reusability of data, I’m starting to offload various parts of the website to the database. Since January, the UESPA/ECS ship registries and the reactor pages now use the database to grab data. Another advantage to this approach is that it allows cross-referencing to happen for certain items in the future – for example to reduce data duplication, I can now stop writing the unit listing for ship classes twice (once in the ship database and again in the registry database) by allowing both sources to reference one place.

New font

A new font is being used for the website’s header (navigation bar) and side menu on mobile devices. It’s called “Airborne” and is the font used on Federation ship hull marking.

Status of Chapter 2

Chapter 2 is about 75% complete as of now. Now under the chapter name “Expansion towards a United Earth”, the report focuses on early freighter development under the Earth Cargo Service, advances in explorers by UESPA, the Earth-Kzin Wars (from Star Trek: The Animated Series), and Warp drive limitations being experienced by Earth in the 2100s. Ships currently added, being added, or due to be added include Y-500-class freighter, Polaris-class diplomatic escort, Emmette-class surveyor, J-class freighter, Patterson-class battleship, Declaration-class demonstrator, DY-732-class multi-mission ship and RT-class explorer.

Y-500-class

The first new ship is Y-500, a conjectural design of a canon freighter class mentioned in Star Trek: Enterprise. I’ve assumed relation with the DY-500s, so I quickly designed the ship as a cargo-only variant. The class’s specifications are currently being drawn up, and thus has not been included in chapter 2 yet.

render.png

Polaris-class

Previously completed personal design. Designed to be fast and reliable diplomatic couriers for Earth that play a role in early diplomatic successes and trade deals. Registry starts at UESPA-20.

stage_4.png

Emmette-class

Emmette is a canon ship seen briefly in the Star Trek: Enterprise intro, but suffers with very little details available about the design and the ship’s history. Specs and missions are completed but are purely conjectural. Registry starts at UESPA-27.

2095_UESPA_emmette_default.png

J-class

A well-known and documented canon freighter from Star Trek: Enterprise. Registry starts at UESPA-47 for UESPA service and a large number of ECS registries have been created. The only true canon ship of the class is the Mayweather family’s ECS Horizon. I’ve placed the canon named but not seen ECS Constellation as a member of the class.

2095_ECS_J_default.png

Patterson-class

This is my latest developed design, based on an old UESPA-9 (SS Voyager) concept I drew up around early September 2017. It is supposed to be Earth’s first battleship and an instrument to help describe the Earth-Kzin Wars. They are heavily armed for the period, power hungry, and unwieldy. Registry starts at UESPA-57.

2097_UESPA_patterson_default

Declaration-class

Another canon design with conjectural history. The only thing we know is that XCV-330 (SS Enterprise) is a class member. Given their obvious difference compared to other early Earth designs, I’ve written them to be a series of demonstrators for a new type of Warp field generation that ultimately fails to gain adoption. Registry starts at XCV-300.

2098_UESPA_declaration_default.png

DY-732-class

Exists in canon as a class name only. The original design was made by Kris Trigwell – I redrew the ship with modifications for Path to 2265. Like the preceding DY-500-class, I designated the class as a multi-mission ship. I even included a mention of the [N] variant! Currently the design’s specifications are complete and it is present in chapter 2, but it still lacks a description on its ship article page. Registry starts at UESPA-68.

2102_UESPA_DY-732_default.png

RTclass

Another conjectural design of an unseen canon ship, this time the RT-2203-class from Star Trek: The Next Generation! I designed the ship to be on the same lineage as the Polaris and Patterson-class, with design inspirations coming from Masao Okazaki’s Bison-class. Registry starts at UESPA-82.

2105_UESPA_RT_default.png

Addition of organisations

This is a new database section for various organisations and companies in the Star Trek universe. At the time of writing this, four organisations are currently available for reading about; Cochrane Institute of Alpha Centauri (non-canon), Earth Cargo Authority (canon), United Starship Agency (fanon by me), and Yoyodyne Propulsion Systems (canon).

Large ship renders

Due to the rising prominence of higher resolution displays, I am making it a priority to offer large renders of ships to cope with the larger and better displays becoming more and more available. Catering for up to 1080p might not be enough anymore, so I have started to redraw some of ships that are not original from to match the 2500px+ width of my personal design renders. Four examples exist at the moment; above with Declaration and DY-732, and below with DY-500 and DY-950:

DY-500-class render (canon design):
20180129_1410_DY-500

DY-950-class render (original design by Kris Trigwell – modified by me):
20180210_2124_DY-950

Upcoming additions

Before chapter 2 can be deemed complete, a few supporting database articles need to be completed to support the narrative – namely Yoyodyne II and Cochrane III reactors and the beginnings of the People database section (Zefram Cochrane and Henry Archer).

Once chapter 2 concludes, work towards chapter 3 will begin immediately. The chapter will focus on the early years of the United Earth government, the founding of Starfleet (as a division of the UESPA), the struggles of the Warp 5 program, and the beginnings of the NX program that leads to the development of first Warp 5-capable starship. Approximate timespan will be 2115 to 2150.

Currently planned ships are (in no particular order):

  • “Archer’s Model” demonstrator
    • Early Warp 5 program testship
    • Will be the same design as the remote-controlled model ship built by Henry and young Jonathan Archer in 2121 as seen in the pilot episode of Star Trek: Enterprise
    • Ship name to be decided
  • “BBI-993”-class explorer
    • Follow up explorer to the RT-class
    • Mentioned only on an ‘okudagram’ in Star Trek: The Next Generation episode “Up  The Long Ladder”
    • Class name to be decided
  • DY-950-class multi-mission ship
    • Second-to-last member of the DY-family of starships
    • Conjectural design already completed based off Kris Trigwell’s vision and interpretation
    • Mentioned only on an ‘okudagram’ in Star Trek: The Next Generation episode “Up  The Long Ladder”
  • Y-class freighter
    • Canon and well known freighter design
    • Seen in multiple Star Trek: Enterprise episodes
    • Written as a ship to use up previously discarded reactors
    • ECS-2801 (ECS Horizon) is a canon member of the class
    • Canon mentioned but unseen ECS North Star is written as a member of the class
  • Neptune-class surveyor
    • Canon mentioned but unseen surveyor
    • Earliest class of ship to be explicitly stated as belonging to Starfleet
    • Purportedly has the same captain’s chair as the later NX-class explorer of 2151
    • Mentioned in dialogue in Star Trek: Enterprise episode “Singularity”
  • “Warp Delta”-class destroyer
    • Well known and fan favourite early Starfleet ship
    • Frequently deployed on defence missions
    • Starfleet’s workhorse and single most numerous ship of the 2140s and 2150s
    • At least 50 ships in the class
    • Seen in multiple Star Trek: Enterprise episodes
    • Despite numerous on screen appearances, ship names and even class name remain unknown
    • “Warp Delta” is the behind the scenes nickname given by the design staff
    • Class name to be decided
  • “Sarajevo”-class transport
    • Well known Starfleet ship
    • Seen serving as a personnel transport
    • Seen in multiple Star Trek: Enterprise episodes
    • Sarajevo is a canon member of the class
    • Class name to be decided –  Sarajevo is currently the placeholder lead ship
  • NX demonstrator
    • Late Starfleet-Warp 5 program testships
    • Three known ships; NX-Alpha, NX-Beta, and NX-Delta
    • Only Alpha and Beta were seen on screen
    • Delta was only mentioned in dialogue
    • Both appearances and dialogue mentions from Star Trek: Enterprise episode “First Flight”
  • “Arctic One”-class research ship
    • Well known Earth ship
    • Seen serving as an arctic explorer and a moon-based transport
    • Seen in multiple Star Trek: Enterprise episodes
    • Arctic One is a canon member of the class
    • Class name to be decided –  Arctic One is currently the placeholder lead ship

January has been hectic

Where do I begin…

January has probably been the busiest month in my entire life. No kidding! Constant work, personal projects, assignments, and very little free time to myself. But I am happy to say I have enjoyed all of it!

Since December
Since my last life update last month, I have had two coursework results back from my Computer Graphics and Tool Development for Computer Games modules. The former was a 2D OpenGL scene demonstration where we had to sample OpenGL objects and techniques and demonstrate them – from Vector Array Objects to hierarchical modelling. The demo at the time went well, and I got 88% in the end! The latter was building a Python missile command game clone with the Pygame engine and developing a small physics simulator called “Marble Madness” with a lecturer-developed engine (PGE). I had 90% on that one. So I’m happy with my performance last term to say the least!

Computer Graphics
For the second term, this module now focuses on 3D rendering in OpenGL and 3D modelling with Autodesk 3DS Max. Things have continued to go well this term, and 3D modelling is actually more fun than I imagined! It has been useful for my group project in another module as well! The programming side is obviously interesting, but we are still in the opening weeks and have not done a lot of programming for OpenGL 3D yet.

Tool Development for Computer Games
Whilst I don’t have anything against Python, the module is a lot more interesting for me this term now that we are starting to do C# GUI programming with XAML. Whilst I have done a few WinForms projects before, WPF is something I have never touched before! The coursework looks like a nice challenge too, which is to build a game level designer for a tile-based game. We are given the game and its source code and have to build the designer based on the code ourselves!

Data Structures & Algorithms With Object Oriented Programming
This module recently had a coursework due on the 12th, which was the process scheduler assignment I talked about in a post back around late-December. Basically, we were given a public API to conform to and told to fill in the blanks in C++. My scheduler ended up being a multi-level queue with a custom algorithm that creates a cycle to prevent blocking (the act of higher priority items stopping lower priority items from being processed completely). The scheduler creates a cycle in which each level of priority (from 1 to 10) gets a certain amount of attention. Higher priorities get more attention than lower ones in the cycle, but the lowers still gets *some* attention rather than none.

Other than the coursework, this term has also taken up a slightly different theme. We are now covering different design and strategy patterns to OO programming. Whilst they certainly require a bit more thought to understand, one of the two we have learnt so far has already came in handy with my web work! The observer pattern, which states the relationship between a subject (essentially some hub) and its observers (dependencies like clients), is basically the same principle of the way I’m developing this small social network in PHP for my portfolio.

Professionalism: “Project FallingStar”
Once again, the largest and most impressive thing I am involved with at University. My team has made significant progress and whilst we are far from having a complete game, the game is looking rather beautiful already! Besides defacto leadership and physics programming, I have also undertaken tasks for 3D modelling and special effects for the game. Like the last time I wrote about this, I have some little peaks for you:

Personal projects
I have also made a fair bit of progress with personal things as well. My Star Trek fan site, Path to 2265, remains a top priority for me and many improvements in the back-office have been made. The website’s search engine programming has transformed into a mature, secure and robust platform that allows the website to provide intelligent and weighted search results, whilst also providing internal benefits by allowing pages to be more dynamic and use the website’s database more. I’ve also been working on actual front-end content as well with Chapter 2 being released within a month or so and several more ships added; Polaris has a completed database entry, DY-732 has its specs mostly ironed out, and an upcoming design is due for completion soon:

stage_4
The new (but still prototype) design – UESPA battleship SS Patterson (UESPA-57)

I have also resumed limited work on my old GeckoFX-based C# browser KAubersnek. I’ve been adding a few features over the weeks and will likely continue full development when I have some time.

Capture.PNG
KAubersnek in its current state

 

Anyway, that’s it for now!

 

Secure site search

In my last update for Path to 2265, I briefly described the major improvements made to the searching capabilities of the website. Today, I’m going into detail about these changes and why they are important for security and code quality. Examples included!

How it was
The decision to add a search to the website was made fairly early on, during a time where other aspects of the website like the visual layout design were more important to me. This resulted in a crude but working search solution that you can read about here. It is a very linear search in that it just finds and returns the results sequentially in the order they were found by the SQL query. And that was fine back then, but something better is needed now!

I should mention that in November, the search feature got a little attention with the conversion from raw MySQL calls to PHP Data Objects (PDOs) with prepared statements. Whilst this was a major plus for security, the implementation was still ugly and quick.

The new concept
A search that is to be deployed on the WWW needs to be functional AND secure. It is not hard to find reports about SQL injections and other malicious acts against site searches that can be a pain in the butt to deal with. With that in mind, I decided to rebuild the search engine from the ground up with security (and good code quality) in mind. The new concept calls for class encapsulation as well as PDOs – the usage of object orientation allows for controlled access to the code querying the database by only providing a set amount of methods and required arguments to interact with said code.

How does this all benefit security?
Well, PDOs alone do not help much in terms of security. But the usage of prepared statements does by separating the variable part (in our case, the search term) of an SQL query into a method that can safely bind the variable and exclude any nasty code. Here’s a good page about SQL injections and prepared statements!

Class encapsulation also does not actually affect the SQL’s ‘secureness’ directly. But if it is used right, it can provide a reduced interface that could be used for code security purposes (as well the usual benefits of using object-orientated code). If the core code is not in a class, the code will be executed in a procedural manner where there are no barriers to what you can supply that code. But if that core code is in a class, you can then write a select few methods inside that class that can access that encapsulated code with a parameter set that can be as wide or as tight as you want. In my case, I want to tighten how the code is accessed, hence “reduced interface”. All methods that can be called only take in data that I believe is needed for operation and nothing more.

Example – class specification
This is a listing of the class members for an example I will be using to show off these concepts at the basic level. The class structure is based on Path to 2265’s engine – the major difference is the exclusion of the experimental ordered tag search (more about that in a later update) that I am still working on.

  • private $dbHandle
    • stores instance of PDO object with database connection details
  • private $statement
    • stores prepared statements
  • private $query
    • stores last-processed query string
  • public __construct()
    • class constructor
  • private cleanString($string)
    • removes special characters from any input string
    • $string – input string to ‘clean’
  • private processInput($input)
    • breaks down an input string into an array of characters for tag searching
    • $input – input string to break down
  • public createStandardSearch($class, $col, $term)
    • executes a linear search
    • $class – table in the database to search from
    • $col – column in the table to match from
    • $term – input string
  • public createTagSearch($class, $string)
    • executes a basic unordered tag-based search
    • $class – table in the database to search from
    • $string – input string
  • public countResult()
    • returns a count of results matched
  • public getResult()
    • returns result for when a single result is expected
  • public getResults()
    • returns result for when an array of results is expected

Example – implementation
I have uploaded an implementation of that class specification that works almost out of the box (you’ll need to enter your database’s details etc). As I said earlier, it is based on Path to 2265’s code for the same functionality.

Link!

Disclaimer: if there are any errors in that code, I am not liable for any damage they may cause – the code is provided for demonstrative purposes only.

20180103_search
An example of how you could interact with the SearchEngine class from the ‘outside’


Other possible applications this example can do
The great thing about this implementation is the fact that it can be used for things other than just ‘normal’ searching. By using the standard search feature and retrieving a single result, you effectively have the main thing you need for making a dynamic website!

So if your website has something like a database-style section (many in the case of Path to 2265), you can get rid of those countless HTML pages and have a single page instead that calls upon the SearchEngine to find and retrieve the desired page data (indicated with a unique ID through a variable in the URL) in your MySQL database and display the information accordingly.

The best example of this on Path to 2265 is the Database section: clicking on any of the ships (take http://pathto2265.com/resources/apps/ship?ID=2095_ECS_J as an example) takes you to the same page for all of them, expect they all have a different IDs in the URL. A provided ID on that page is fed into the search engine via a standard search call and the single result is fetched and echoed into their destined positions in the markup for you viewing pleasure. It’s great, isn’t it?

Anyway, I think that’s it for today! I hope this has been an interesting read!

Site name simplication, PHP classes, and more

So I’m gonna be shaking up how I do updates for Path to 2265 from now on. Firstly, these updates are going to be more structured because I want to make them easier to read. Secondly, I want to make it so people can either briefly look at the change list or read details depending on what they want to find out. Also I am removing any set times for posting updates since I’ve missed almost all the targets for posting them these last few months. So with out further ado, here’s we go!

Sitename simplication
I have decided to drop the “Starfleet” part of the website’s name. I believe “Path to 2265” is a more clean site name and it matches the domain name now! Plus, both sides of the “to” are ‘balanced’ with four characters each now (as long as you’re not counting spaces)!

Reimagined search engine capabilities
For a long time, the searching capability and ship report part of the website have continued to rely on the fairly crude MySQL calls demonstrated all the way back in September. By early November, I upgraded to using PHP Data Objects (PDO) for enhanced security and code quality. Now, I have moved to class encapsulation as I become more and more proficient with coding in PHP! So with this object orientated approach, the code required to connect and query the database can be contained and interacting with the “SearchEngine” object can be securely controlled by only allowing certain methods with certain argument sets to be called. The search is also now (FINALLY) a tag-based search and I am currently developing an algorithm that can weight the results of one or more SQL queries and display the most relevant results to the user! I’m thinking about making a separate post to describe the process of doing this and its benefits in more detail, so stay tuned for that! But for now, I’ll leave you with this screenshot:

searchengine class
Most of the code has been collapsed from view since it may have sensitive data

Sitemap
Thanks to the new search engine capabilities, I have been able to reuse the SearchEngine class for other new features such as the website’s sitemap. Essentially, constructing the sitemap is done by querying a database for a result containing all the pages belonging to the same category. The SQL code is the same as a user searching (for now though, more about that later), so a SearchEngine object can be used without any problems.

Click here to see the sitemap!

SS Polaris progress
There is finally some progress on my second design project! I have taken a u-turn on the nacelle placement, and I have stripped some details that I thought made the design too advanced. In return, I tried to pepper in some details that make the design both more unique, polished and maybe industrial. Instead of having that weird dual deflector system mounted on top, the nose of the ship has been cut away to reveal one large deflector/communication array that I hope adds emphasis that the design relies on communication (since it is a diplomatic vessel). The new dish is also surrounded by some missile bays. The design will not have any energy weapons.

It’s quite funny, this design was developed without specs and was required to be developed in a week! Yet, it’s taken like two months or so to get to this stage… xD. Hopefully lesson learnt – ALWAYS iron out design specs ’cause it will just cause headaches later on.

comparison
Polaris: before (top) and after (bottom)

EXP-type Warp Reactor
I have added a new early UESPA reactor to the database. It is an attempt to explain how and why Earth had a matter/antimatter reactor (on deep space probe Friendship 1) so early on.

You can read about it here!

Progress gallery & milestones article
I’ve added these fun articles to show the progress and effort that was put into Path to 2265. Progress gallery is already up to do (mostly), but milestones still needs it content.

Chapter 1 proofreading
After discovering some grammatical errors on this chapter of the History report, I am currently in the process of thoroughly proofreading it!

Discontinuation of the “Todo” page
In all honestly, the page was only created for myself as a temporary tracker whilst I worked on the website. It was a place where I could list issues when I found them for later solving. Now that I use GitHub for issue tracking and source control, it has become redundant and will be removed from the website soon.

What’s the come!
My main focus is developing the search capabilities further right now. I soon hope to have an intelligent tag search with proper result ordering and sorting.

SS Polaris is nearly completion. So I might roll that out soon. The design documentation for both SS Voyager and SS Polaris need proper attention and revamping.

Chapter 2 (“Space Boomers”) should be completed in the next few weeks too!

And I think that’s that for today!