Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Screeps World support #1

Merged
merged 49 commits into from
Nov 28, 2023
Merged

Add Screeps World support #1

merged 49 commits into from
Nov 28, 2023

Conversation

thomasfn
Copy link
Owner

@thomasfn thomasfn commented Nov 28, 2023

  • World API is mostly implemented, notable things missing are power creeps and some more complex structures found in constants
  • Bootloader will always produce outputs suitable for both Arena and World environments, user can simply choose which output to use
  • Very little crossover between Arena and World APIs - room for future improvement (to make it easier to make game agnostic behaviours, e.g. combat code that works for both Arena and World?)
  • Some interop mechanisms are more optimised in the World bindings, e.g. buffer copy found in IRoom.Find, could backport these optimisations to Arena to make it faster
  • Bundler and API packages are updated to 1.1.0

…s (IWithId, IWithName, IWithStore). Added bindings for tower and tombstone. Reworked native object and proxy object tracking to reduce redundant js calls and gc/memory pressure.
…e path. Added some more aggressive caching to commonly used properties.
…root object to IGame. Added api and bindings for terminal structure.
…off by default for now as screeps doesn't seem to be accepting utf16 js files...)
…to have a RoomCoord rather than a RoomName (the name is still accessible via a property by the same name so old code should continue to work). Optimised IRoom.Find to use faster heap copy instead to avoid js interop.
… Added optional init entrypoint to allow better program startup (not instantiating NativeGame during program main, better for unit testing).
…ng and data passed through room object data packet.
…e. Changed IRoom.Look* variants to use new room object packet method. Fixed issues when object id is less than 24 characters long (can happen on private servers). Added dead creep memory cleaning to example.
…ariants to return a lazy (streaming) enumerable rather than a buffered one.
…the following objects: StructureFactory, StructureInvaderCore, StructureKeeperLair, StructureLab, StructureNuker, StructureObserver, StructurePowerBank, StructurePowerSpawn, StructurePortal, Deposit, Nuke, Ruin.
… structure (e.g. an unclaimed controller). Fixed controller owner/my overcache issue. Minor room lookup optimisation.
…ity is restored (previously the object would be marked as dead and become permanently unusable if usage is attempted while visibilty is lost). Fixed crash when trying to retrieve market history when there is none.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant