home screen image

Project TI-Trek is the first massively-multiplayer game for the Texas Instruments TI-84+ CE graphing calculator. It has been over 5+ years in-the-making, but only recently has made significant leaps towards completion.

The project aims to let you create and control a virtual spaceship from your calculator, with which you can navigate through an online virtual open world where you can interact with other players (through either collaboration or combat), undertake missions, explore the hazards of realistically-simulated space, and more.

Project Status
Project TI-Trek Updates
Version 0.0.106 Released, New Features
Version 0.0.106 adds a number of new features. The RSA key length is now configurable between 1024 and 2048. A bug in the stripping of the modulus from the key DER output has also been resolved. This bug would cause the encryption to break for any modulus greater than ~1700 bits.

The version of HASHLIB required by this client update also advances to the newest release candidate (v7.1-rc1). This version incorporates the appropriate padding schemes for RSA and AES directly into the encryption algorithms, so the end user doesn't have to do it themselves. This was done to prevent security lapses caused by a user improperly padding a plaintext prior to encryption, or not padding it at all.

A few other improvements are that the client will now inform you if your login token is invalid rather than just printing a vague "Login Missing" error. In addition, the downloading of client and graphics updates will occur into temporary files rather than the originals, until the final hashes are verified. This should resolve any issues where failure to fully download either causes corruption of the executable or the assets for the game.

And finally, the last feature is a private one... but whenever I (the dev) push a commit to the remote repository (on github) that contains a changelog file, a git hook runs that creates a new client "release", updating the release history on the Downloads page of the main site.

Feel free to download and experiment with 0.0.106 and report on any bugs.
Autoupdate Finally Implemented
The newest feature added to TI-Trek is the ability of the server and client to handshake on a version requirement for the client and the graphics. In a manner similar to Minecraft, only clients of the correct version will be able to connect; However, via the autoupdate functionality, the client will autoupgrade or autodowngrade to match the required version number, also installing the appropriate graphics pack for that version after the user logs in.

The server will have a hardcoded minimum client version requirement set to the first version to fully support autoupdate, as well as to implement RSA for setting up the login session properly.
Version 0.0.101, Security Enhancements
It's been a while since I've posted any updates, for a variety of reasons. Firstly, I've been working on HASHLIB, another major project of me. Secondly, I've been working on a cryptography certification.

Nonetheless, TI-Trek now sports 3 new security enhancements. First, no longer do users log in from their devices using plaintext-tunneled username/password combinations. They register to play the game on the Web Deck, a PBKDF2 key 128 bytes in length is generated (this key will change if you reset your password). You can send that key, written into a TI Appvar, to your calculator and it will be used as a login token for your account.

Secondly, the key, when sent to the server, is encrypted with AES-256. This is achieved through HASHLIB. When RSA is supported in HASHLIB, either RSA will be used to send the key, or it will be used to exchange an AES secret.

Third and finally, TrekFilter has received a bit of a more streamlined design. I removed the customization part of it and left it a series of packet rules defined strictly: (1) Where packets have mappable sizes, a packet that doesn't match the map for its type is rejected, (2) A packet that should only be sent by a logged in user sent by a user that isn't logged in is rejected, (3) A packet that contains non-text characters in a text-only segment is rejected. Each offense is logged to the server log which is watched by Fail2ban.

You can nab v0.0.101 from the Downloads Page of the main website: http://titrek.us. This project is still very much WIP, so don't expect much in it yet.
0.0.98 Release, .99-pre in Development
In the past few weeks, the Project has seen significant feature additions. The client and server can now interact to enable and disable ship systems, and to change the speed of your ship. A particle system has been added, including some effects that render on the client under certain circumstances. Last but not least, the Debug mode on the client now actually does something--it causes the size and ID of all packets received by the client to be printed in the log widget. The server has also seen a major feature addition as well. I have endeavored to create a custom firewall/packet filter for the service, one that understands the protocol better than system firewalls. This filter monitors certain types of packets, ignoring them if needed, and blacklisting untrustworthy connections. It can also interact with system firewalls via a custom fail2ban jail. Stay tuned for more updates as development on this project continues!
Version 0.0.96
As of today, Project TI-Trek has advanced to version 0.0.96, the first pre-release to implement a version handshake with the server. As many of the recent and ongoing changes to the server and client may render incompatible versions severely unstable, this client version now sends a 3-byte string indicating it's version number to the server. While the server cannot offer the client an update yet, it does respond to the client indicating one of three things: VERSION_OK, VERSION_OUTDATED, or VERSION_INCOMPATIBLE. The first should be obvious, the second indicates that the current client version is not up to date but still compatible with the server, and the final indicates that the client is not compatible with the server and cannot connect. As of this release, all prior versions are no longer available on the Downloads page.

Since then, a few smaller features have also been added. The client can now request the server itself by hostname and port number -- that is no longer controlled by the bridge. Also, the client is able to detect when an existing settings save file is not compatible with the current version, and it will reinitialize its settings in this case to maintain stability.

It is my hope to devote time to collision, entity movement, and the weapons systems, followed by testing of the existing features, and have a beta out that fully implements basic combat by the end of the year.
Version 0.0.94
In the short time since the first public pre-release, many new features have been added to the game, both client-side and server-side. First, we changed the ship icon sprite (Backstory: This project started as an attempt to port Star Trek to the calculator, and I reached out to Paramount/CBS seeking permission to do so. I never got a response to that request, and so decided to make the project a standard space combat game deriving from a number of sci-fi tropes including Star Trek, Wars, Orville, or whatever suits your fancy [as you can customize how the game looks to you], but no longer using images and likenesses directly from Star Trek). We removed the USS Enterprise that I had made and replaced it with the sprite designed by the winner of a sprite designing contest. Second we added the ability for the client program to be able to import a custom graphics pack. Thirdly ship "modules" are now loaded upon login and populate the ship status screens when you log in. This project remains under active development. Check back soon for more updates.
First Public Pre-Release
After 3+ years of on-again-off-again development on my part, and the recent decision to expand this project to a team effort, outsourcing aspects of its development that are better out of my hands, we are at long last happy to announce the first public pre-release of TI-Trek - Version 0.0.92. This program brings to the table only simple networking, for testing. It allows you to register an acocunt on my server, log into that account, and disconnect. It also sports a (currently untested) autoupdating system that, if functional, will allow us to push updates to potential users easily, without having to make our users constantly download new copies of the program.

Next steps will be the debugging of the autoupdater (if needed), the addition and testing of a graphics updater, and the creation of a starting/default ship setup for new users when they first register. Once these aspects are functional, a new pre-release will be made available both for physical download and for autoupdate.

As this project moves into the public alpha/beta phases of development, I would personally like to extend my thanks and appreciation to all who have helped and continue to help on the development of this project -- from portions of the programming to graphics and libraries. Also, a special thank you to MateoC and commandblockguy for their work on the C libs and the serial drivers, which while separate from this project entirely, are software that without which this project would not be possible.
Massive Leaps Forward
In the week or so that has elapsed since the first networking build, much progress has been made on introductory aspects of the networking features of this game. Login and registration are now working, the sending of map data is coded but untested due to a serial driver bug. Currently, we are working on defaults for player ships.
First TI-Trek Build with Networking!
At long last, we are happy to report that the project has been successfully built with the "srldrvce" branch of the CE toolchain! While this update still does not give people the ability to connect to servers yet (there is still work to be done on the server and a USB bridge to make this a reality), it is a massive leap forward in a project that has been idled awaiting these features for quite some time. As always, stay tuned for more updates and feel free to support the project through donations or joining the dev team, or even spreading the word about this remarkable endeavor.
Significant Website Updates
Over the past few weeks, the TI-Trek informational website has seen a substantial redesign. There are now fewer pages, less text, and a more space-shooter-game-ish feel to the website. Progress is now indicated on the home page, links are consolidated, the unneeded Disweb, Messenger, and Twitter plugins have been removed and replaced with links, decreasing page load times. Come visit us at http://titrek.us and see what's new!
Welcome to Project TI-Trek
A multiplayer, first-person space combat experience coming soon to your TI-84+ CE graphing calculator!

Yes you read that right. A multiplayer game for your calculator. This game will let you convert your calculator's screen into the viewscreen of a spaceship and explore the hazards of the universe, fight with or ally with other players, complete missions, and much more, within a custom map that employs real-world astrophysics to add a layer of danger and unpredictability.

Want to find out more about the project? Feel free to peruse the website, join the Discord server to chat with the Dev Team, or contribute to the project using the "Donate" button above.
GUI Customizer v1
One of the first Web Deck features is now ready for deployment--the GUI customizer. This widget allows you to replace some of the default UI sprites in your own custom environment. It saves the sprites into your user folder. The "Build GFX" button allows you to create a zip with all the graphics and an ini file for use with MateoC's program, convpng. Feel free to test the feature and report any errors to the Dev team via the Discord widget in the Web Deck.
Welcome to the Feed
Welcome to the Project Updates RSS feed for TI-Trek. This channel will update any time a part of the project is updated, and will provide a link to the new content.