Commit graph

40 commits

Author SHA1 Message Date
Jakob Gillich fc66b43cb5
fix logo url 2024-02-16 22:08:16 +01:00
Fate-JH b17d699b5f
Decode Packets, Again (#1156)
* fixing issue where the iterator of a closed stream produces no output; added option to include an entire directory of input files; streamlined workflow between gcapy and preprocessed files

* added documentation; restored functionality of the source's iterator; tidied code

* restored functionlaity/reliability of skip-existing and management of duplicate files and file cleanup; added exclusive log for decode error messages

* collects all literal decode errors falling through the logging cracks

* finally eliminating log spam; tidying up the decoded log files's format

* better subclassing and management of the decoy OutStream

* tightening of the noose

* fixing the readme to account for the -f flag
2023-12-19 14:52:12 -05:00
Jakob Gillich 1b367c455f
formatting 2023-04-15 19:02:46 +00:00
Fate-JH a246fd1244
scram-sha-256 (#1003)
* jasync updated to support scram-sha-256; README.md updated

* added README section about becoming a gm; moved a section of the README
2022-07-05 21:03:02 -04:00
Mazo cbb76f929e
Fix TABLE -> DATABASE in readme 2021-02-10 21:44:23 +00:00
Jakob Gillich 407429ee21 Networking
The game uses a UDP-based protocol. Unlike TCP, UDP does not guarantee that
packets arrive, or that they arrive in the correct order. For this reason,
the game protocol implements those features using the following:

* All packets have a sequence number that is utilized for reordering
* Important packets are wrapped in a SlottedMetaPacket with a subslot number
* RelatedA packets ae used to request lost packets using the subslot number
* RelatedB packets are used to confirm received SlottedMetaPackets

All of these go both ways, server <-> client. We used to only partially
implement these features: Outgoing packet bundles used SMPs and could be
resent, but not all packets were bundled and there was no logic for requesting
lost packets from the client and there was no packet reordering, which resulted
in dire consequences in the case of packet loss (zoning failures, crashes and many
other odd bugs). This patch addresses all of these issues.

* Packet bundling: Packets are now automatically bundled and sent as
  SlottedMetaPackets using a recurring timer. All manual bundling functionality
  was removed.

* Packet reordering: Incoming packets, if received out of order, are stashed and
  reordered. The maximum wait time for reordering is 20ms.

* Packet requesting: Missing SlottedMetaPackets are requested from the client.

* PacketCoding refactor: Dropped confusing packet container types. Fixes #5.

* Crypto rewrite: PSCrypto is based on a ancient buggy version of cryptopp.
  Updating to a current version was not possible because it removed the
  MD5-MAC algorithm. For more details, see Md5Mac.scala.
  This patch replaces PSCrypto with native Scala code.

* Added two new actors:
  * SocketActor: A simple typed UDP socket actor
  * MiddlewareActor: The old session pipeline greatly simplified into a
    typed actor that does most of the things mentioned above.

* Begun work on a headless client

* Fixed anniversary gun breaking stamina regen

* Resolved a few sentry errors
2020-09-26 23:58:09 +02:00
Jakob Gillich e34f96ce18 Fixes
* RefreshLoadouts no longer queries loadoads from the database
* /gmtell no longer sends to self
* Set AMS spawn timer to 10 seconds
* Fix medkit cooldown display
* Fix wrong max type being purchased
* Fix implants not being locked when fatigued
* Fix implants progress bar
* Make tells case insensitive
2020-08-27 07:58:05 +02:00
Jakob Gillich ce641cffbd
Test server pls 2020-08-26 22:27:08 +02:00
Jakob Gillich 0429003863 Auto publish docs 2020-08-26 06:19:00 +02:00
Jakob Gillich f4fd78fc5d Restructure repository
* Move /common/src to /src
* Move services to net.psforever package
* Move /pslogin to /server
2020-08-26 06:19:00 +02:00
Jakob Gillich 3345e56b38 Building persistence
Buildings will now persist their faction in the database. At least
that's what I want you to believe this change is.

What it actually is: A rework of InterstellarCluster and groundwork
for further reworks.

InterstellarClusterService: This is the old InterstellarCluster, but
as a service (it has always been one in secret). It was converted to
a typed actor and it now handles all spawn point requests.

ZoneActor: Basically ZoneControl, but as a typed actor. It's more of a
stub right now, the eventual goal is to have it own the `Zone` object
rather than the other way around.

BuildingActor: BuildingControl, but as a typed actor.

Also includes some minor improvements to ChatActor and sets
SupervisorStrategy.restart for all typed actors (which is the default
for classic actors, but not for typed actors - we may want to get more
sophisticated here in the future).
2020-08-22 16:19:13 +02:00
Jakob Gillich 752a195178
Add command line interface
Comes with a flag to run flyway baseline automatically
2020-07-14 19:31:59 +02:00
Jakob Gillich e0defe8240
Persistence #1 featuring quill (#508)
* Add .scalafmt.conf

* Adopt quill for database access

* Removed postgresql-async
* Refactored all instances of database access
* Creating duplicate characters of the same account is no longer possible
* Rewrote large parts of LoginSessionActor

* Implement migrations

* Move overrides into subdirectory

* Make usernames case insensitive

* Use LOWER(?) comparison instead of storing lowercased username

* import scala.util.{Success, Failure}

* Add config and joda-time dependencies

* Add sbt-scalafmt

* Use defaultWithAlign scalafmt preset

* Format all

* Add scalafix

* Remove unused imports

* Don't lowercase username when inserting

* Update readme

* Listen on worldserver.Hostname address

* Remove database test on startup

It could fail when the global thread pool is busy loading zone
maps. Migrations run on the main thread and also serve the
purpose of verifying the database configuration so it's fine to
remove the test altogether.

* Refactor chat message handlers, zones

What started as a small change to how zones are stored turned
into a pretty big effort of refactoring the chat message handler.
The !hack command was removed, the /capturebase commandwas added.

* Expose db ports in docker-compose.yml

* Silence property override log

* Rework configuration

* Unify configuration using the typesafe.config library
* Add configuration option for public address
* Configuration is now loaded from application.conf rather than worldserver.ini
* Refactor PsLogin and remove unnecessary logging
* Move pslogin into net.psforever.pslogin namespace

* Fix coverage
2020-07-13 23:54:05 -04:00
Jakob Gillich 116860b3be
XTools V3
* Use command line interface instead of hard-coded paths
* Takes in both .gcap and parsed gcapy files
* Add pack config to allow system-wide installation
* Slightly change output format from [C|S] -> [C|s] to C [<<<|>>>] S
* Add some documentation to README
2020-06-10 14:26:32 +02:00
Jakob Gillich 6ca72ecb41
Add docker-compose file (#466) 2020-05-26 16:19:44 -04:00
Fate-JH e8fd09aad8
Test fix (#332)
* fix AvatarService tests

* updated README section in regards to PSCrypto

* better wording, imho

* modifying the construction of Building entities so to properly register them with the zone GUID system

* fixed tests
2020-01-19 21:32:14 -05:00
pschord ab625d15c4
Add link to quick start guide in README 2020-01-12 20:51:24 -05:00
pschord dd8b2d8071
README spelling 2020-01-12 13:14:23 -05:00
pschord 66903691d7
Revamp README 2020-01-12 13:13:46 -05:00
Chord a63cfb446d Fix readme instructions on DB creation 2020-01-12 18:22:41 +01:00
pschord d08911d07c Account and Character Database and Config Improvements (#317)
* Create Account/DB abstraction

* Fix crash when removing boomers from deconstructed player

* Extend config to include database and worldserver info

* Improve ConfigParser tests

* Add database setup documentation

* Add xTriad to THANKS file

**

* Increase bcrypt rounds and fix readme link
2020-01-10 11:13:37 -05:00
Chord bf21491859 TravisCI: re-enable coverage, exclude WorldSessionActor
* Update badge to travis-ci.com
* Add artifact upload to S3 testing for future CI based server deploys
2019-12-13 13:48:15 -05:00
pschord 33e4f2b35e
SBT: add support for unified docs (#284)
Unified documentation can be generated with the sbt unidoc command.
2019-10-21 16:29:36 -04:00
Matt Smith faa78d88e2
Update readme for linux and libpscrypto 2018-09-05 20:44:00 -07:00
Mazo 8971addc1e Update readme with clearer instructions for PSCrypto and potential workarounds for the library not being detected properly 2018-05-20 18:37:58 +01:00
King Feraligatr 393a676538 Update README.md
Fixed up some of the changes.
2017-08-09 17:06:37 -05:00
King Feraligatr 2ce66e69ef Update README.md
Updated the readme with some more up to date facts.
2017-08-05 21:51:59 -05:00
L-11 88b6974edc Initial support for server REPL (#68)
* Initial support for server console

* Expand README

* Fix unmanagedClasspath for `sbt pslogin/console`
2016-08-26 23:46:57 -04:00
pschord 10ec61c9a6 Update README.md 2016-08-07 16:53:22 -04:00
Chord f6d8dc3324 Fix Travis PSCrypto version and add some readme notes 2016-07-30 13:07:22 -04:00
Chord 004f36219b Bump and lock PSCrypto version to 1.1 2016-07-29 22:37:22 -04:00
pschord 4fb13fdc57 Update README.md 2016-07-27 21:51:00 -04:00
pschord 92d57d8917 Update README.md 2016-07-26 22:05:57 -04:00
pschord 699bf726ba Update README.md 2016-07-19 22:36:04 -04:00
pschord a0194ba7de Update README.md for how to do release 2016-07-17 18:03:23 -04:00
pschord 39e8a7928b Update README.md
Added help on setting up an development environment
2016-07-16 13:45:35 -04:00
Chord 5fa0610208 Working login to TR Sancuary!
Packet: SetCurrentAvatarMessage

Lots of hacks to get here, but wow, what a milestone.
2016-07-15 01:45:10 -04:00
Chord e0ac823dd6 Add GPLv3 licensing information 2016-05-02 00:08:33 -04:00
Chord 2fc78f49a9 Add banner screenshot to README.md 2016-05-01 04:43:20 -04:00
Chord cc87c15b21 Add minimal readme 2016-03-04 14:47:14 -05:00