]> git.tdb.fi Git - libs/game.git/log
libs/game.git
6 months agoPrevent concurrent write access to unbuffered components
Mikko Rasa [Tue, 18 Mar 2025 22:03:04 +0000 (00:03 +0200)]
Prevent concurrent write access to unbuffered components

7 months agoAllow read-only accesses to a component to occur in parallel
Mikko Rasa [Tue, 18 Mar 2025 13:48:17 +0000 (15:48 +0200)]
Allow read-only accesses to a component to occur in parallel

7 months agoAdd test cases for SystemScheduler
Mikko Rasa [Tue, 18 Mar 2025 11:38:56 +0000 (13:38 +0200)]
Add test cases for SystemScheduler

7 months agoTrack individual dependencies in SystemScheduler
Mikko Rasa [Tue, 18 Mar 2025 11:21:10 +0000 (13:21 +0200)]
Track individual dependencies in SystemScheduler

Arranging the systems in groups does not provide enough flexibility for
parallelizing the execution.

7 months agoAdd texture coordinates to generated meshes
Mikko Rasa [Sat, 15 Mar 2025 22:27:21 +0000 (00:27 +0200)]
Add texture coordinates to generated meshes

7 months agoMake temporary copies of component/child vectors when synthesizing events
Mikko Rasa [Sat, 15 Mar 2025 22:24:09 +0000 (00:24 +0200)]
Make temporary copies of component/child vectors when synthesizing events

An event listener might add components or child entities, which can
invalidate iterators to the vectors.

7 months agoAdd an example application for physics
Mikko Rasa [Sat, 15 Mar 2025 18:26:13 +0000 (20:26 +0200)]
Add an example application for physics

7 months agoMinor improvements
Mikko Rasa [Sat, 15 Mar 2025 18:24:34 +0000 (20:24 +0200)]
Minor improvements

7 months agoSupport loading stage contents from files
Mikko Rasa [Sat, 15 Mar 2025 17:39:22 +0000 (19:39 +0200)]
Support loading stage contents from files

7 months agoBasic integration of physics
Mikko Rasa [Sat, 15 Mar 2025 17:36:59 +0000 (19:36 +0200)]
Basic integration of physics

7 months agoAdd an early_tick function to System
Mikko Rasa [Sat, 15 Mar 2025 15:23:49 +0000 (17:23 +0200)]
Add an early_tick function to System

7 months agoAdd utilities for keeping track of entities with specific components
Mikko Rasa [Sat, 15 Mar 2025 15:15:45 +0000 (17:15 +0200)]
Add utilities for keeping track of entities with specific components

7 months agoAdd generation number to BufferedComponent
Mikko Rasa [Sat, 15 Mar 2025 14:49:58 +0000 (16:49 +0200)]
Add generation number to BufferedComponent

7 months agoMake the data members of BufferedComponent private
Mikko Rasa [Sat, 15 Mar 2025 14:49:12 +0000 (16:49 +0200)]
Make the data members of BufferedComponent private

Derived classes should only access them through the provided functions.

7 months agoSet camera to non-VR view
Mikko Rasa [Sat, 15 Mar 2025 13:03:17 +0000 (15:03 +0200)]
Set camera to non-VR view

This accidentally got broken in 503a9c6 while working on the VR stuff.

7 months agoAdjust order of members in Renderer::RenderedEntity
Mikko Rasa [Sat, 15 Mar 2025 12:55:49 +0000 (14:55 +0200)]
Adjust order of members in Renderer::RenderedEntity

Since destroying the DynamicMeshSource triggers the destruction of the
MeshRenderer, it's important that the former is destroyed first or there
will be an invalid access to an already destroyed Owned handle.

7 months agoDrop the shape wrapper statement from ShapeSetup loader
Mikko Rasa [Sat, 15 Mar 2025 10:54:35 +0000 (12:54 +0200)]
Drop the shape wrapper statement from ShapeSetup loader

Instead use an auxiliary loader to allow the shape to be specified
inline with the rest of the setup.

7 months agoMake the shape component available for generated setups
Mikko Rasa [Sat, 15 Mar 2025 10:53:46 +0000 (12:53 +0200)]
Make the shape component available for generated setups

7 months agoEnsure that a Shape's setup actually has a shape
Mikko Rasa [Sat, 15 Mar 2025 10:46:25 +0000 (12:46 +0200)]
Ensure that a Shape's setup actually has a shape

7 months agoSupport declaring external types for generated setups
Mikko Rasa [Sat, 15 Mar 2025 10:44:02 +0000 (12:44 +0200)]
Support declaring external types for generated setups

7 months agoAlways check pool relationships when a new pool is created
Mikko Rasa [Sat, 15 Mar 2025 10:41:48 +0000 (12:41 +0200)]
Always check pool relationships when a new pool is created

7 months agoUse the auto type to hold the result of dynamic_handle_cast
Mikko Rasa [Thu, 6 Mar 2025 13:10:07 +0000 (15:10 +0200)]
Use the auto type to hold the result of dynamic_handle_cast

It's clear enough what the type will be so no need to repeat it.

7 months agoPut simple constructor definitions in headers
Mikko Rasa [Thu, 6 Mar 2025 13:09:04 +0000 (15:09 +0200)]
Put simple constructor definitions in headers

8 months agoRework virtual reality initialization
Mikko Rasa [Wed, 12 Feb 2025 16:48:12 +0000 (18:48 +0200)]
Rework virtual reality initialization

VR mode must now be requested when creating the Application object,
because it may need to interact with graphics initialization.

8 months agoFix .gitignore
Mikko Rasa [Fri, 31 Jan 2025 21:01:31 +0000 (23:01 +0200)]
Fix .gitignore

8 months agoUse the aligned form of operator delete
Mikko Rasa [Fri, 31 Jan 2025 21:00:34 +0000 (23:00 +0200)]
Use the aligned form of operator delete

By the language spec the form of new and delete must match

8 months agoClean up MeshRenderer when DynamicMeshSource is destroyed
Mikko Rasa [Fri, 31 Jan 2025 21:00:08 +0000 (23:00 +0200)]
Clean up MeshRenderer when DynamicMeshSource is destroyed

8 months agoAdd some missing VR calls
Mikko Rasa [Fri, 31 Jan 2025 20:59:45 +0000 (22:59 +0200)]
Add some missing VR calls

8 months agoRewrite the VR code to match changes in mspvr
Mikko Rasa [Thu, 30 Jan 2025 17:34:22 +0000 (19:34 +0200)]
Rewrite the VR code to match changes in mspvr

There now needs to be an entity tagged with a TrackingAnchor component
to designate the location of the tracking area within the game world.
A player character entity or something closely related should generally
be suitable.

8 months agoAdjust to different way of accessing VR::MotionController type constant
Mikko Rasa [Sun, 26 Jan 2025 23:21:17 +0000 (01:21 +0200)]
Adjust to different way of accessing VR::MotionController type constant

8 months agoExport TransformValues in the API
Mikko Rasa [Sun, 26 Jan 2025 20:49:01 +0000 (22:49 +0200)]
Export TransformValues in the API

8 months agoAdd missing includes
Mikko Rasa [Sun, 26 Jan 2025 20:48:19 +0000 (22:48 +0200)]
Add missing includes

8 months agoUse different allocation functions for pools
Mikko Rasa [Sun, 26 Jan 2025 20:47:12 +0000 (22:47 +0200)]
Use different allocation functions for pools

It appears using alignas with new is a gcc extension.

8 months agoExplicitly declare special members of certain classes
Mikko Rasa [Sun, 26 Jan 2025 20:43:06 +0000 (22:43 +0200)]
Explicitly declare special members of certain classes

MSVC tries to generate them for DLL export and that fails because of
vectors of unique pointers.

8 months agoAdjust for changes in mspnet
Mikko Rasa [Sun, 26 Jan 2025 18:43:41 +0000 (20:43 +0200)]
Adjust for changes in mspnet

8 months agoHide thread-local data behind accessor functions
Mikko Rasa [Sun, 26 Jan 2025 20:42:00 +0000 (22:42 +0200)]
Hide thread-local data behind accessor functions

MSVC doesn't like them as static members of classes with DLL interface.

8 months agoAdd a component for creating meshes via geometry definitions
Mikko Rasa [Sun, 26 Jan 2025 16:33:10 +0000 (18:33 +0200)]
Add a component for creating meshes via geometry definitions

8 months agoAdd a missing include and forward declaration
Mikko Rasa [Sun, 26 Jan 2025 16:27:37 +0000 (18:27 +0200)]
Add a missing include and forward declaration

8 months agoAdd virtual reality support
Mikko Rasa [Sun, 26 Jan 2025 16:26:37 +0000 (18:26 +0200)]
Add virtual reality support

8 months agoRework the relationship between renderers and the view
Mikko Rasa [Sun, 26 Jan 2025 16:20:03 +0000 (18:20 +0200)]
Rework the relationship between renderers and the view

A renderer can't just associate itself with the view in its constructor
since stages may get activated multiple times during the application's
lifetime and the renderer for each stage is only created the first time.

8 months agoInclude the input device in the LocalPlayerArrived event
Mikko Rasa [Sun, 26 Jan 2025 15:16:30 +0000 (17:16 +0200)]
Include the input device in the LocalPlayerArrived event

8 months agoAdd factory function from a matrix to TransformValues
Mikko Rasa [Sun, 26 Jan 2025 15:14:15 +0000 (17:14 +0200)]
Add factory function from a matrix to TransformValues

8 months agoRemove more unnecessary uses of std::ref
Mikko Rasa [Sun, 19 Jan 2025 10:08:33 +0000 (12:08 +0200)]
Remove more unnecessary uses of std::ref

These didn't get caught the last time since they lacked the namespace
prefix.

20 months agoAdd polymorphism discovery for systems
Mikko Rasa [Sat, 27 Jan 2024 09:19:54 +0000 (11:19 +0200)]
Add polymorphism discovery for systems

20 months agoCheck bases of intermediate base classes
Mikko Rasa [Sat, 27 Jan 2024 09:13:55 +0000 (11:13 +0200)]
Check bases of intermediate base classes

Without this iterating objects of such an intermediate base type does
not work.

20 months agoAllow reflection to detect polymorphic bases from a type alias
Mikko Rasa [Sat, 27 Jan 2024 08:59:11 +0000 (10:59 +0200)]
Allow reflection to detect polymorphic bases from a type alias

20 months agoImplement queueing for remote calls
Mikko Rasa [Sun, 21 Jan 2024 18:10:50 +0000 (20:10 +0200)]
Implement queueing for remote calls

This allows received calls to be dispatched in a controlled order during
a frame.

20 months agoConsolidate the remote call classes
Mikko Rasa [Sun, 21 Jan 2024 17:47:16 +0000 (19:47 +0200)]
Consolidate the remote call classes

Global and entity calls are now declared using the same class.  If the
entity type is void (the default), the call is global.

21 months agoAdjust network code for changes in the mspnet library
Mikko Rasa [Tue, 16 Jan 2024 21:15:35 +0000 (23:15 +0200)]
Adjust network code for changes in the mspnet library

21 months agoUse iterate_objects in Renderer::tick
Mikko Rasa [Sat, 13 Jan 2024 12:51:53 +0000 (14:51 +0200)]
Use iterate_objects in Renderer::tick

21 months agoCosmetic changes
Mikko Rasa [Sat, 13 Jan 2024 12:50:56 +0000 (14:50 +0200)]
Cosmetic changes

21 months agoCheck that clients only do calls on entities they possess
Mikko Rasa [Sat, 13 Jan 2024 12:30:05 +0000 (14:30 +0200)]
Check that clients only do calls on entities they possess

21 months agoMove an include to where it's actually needed
Mikko Rasa [Sat, 13 Jan 2024 12:10:40 +0000 (14:10 +0200)]
Move an include to where it's actually needed

21 months agoAdd some network state checks
Mikko Rasa [Sat, 13 Jan 2024 12:09:18 +0000 (14:09 +0200)]
Add some network state checks

21 months agoDon't filter by target players when sending from a client
Mikko Rasa [Sat, 13 Jan 2024 12:08:24 +0000 (14:08 +0200)]
Don't filter by target players when sending from a client

21 months agoRequire entity packets to have an entity_id field of correct type
Mikko Rasa [Sat, 13 Jan 2024 10:11:43 +0000 (12:11 +0200)]
Require entity packets to have an entity_id field of correct type

21 months agoAllow a custom protocol to be set for Replicator
Mikko Rasa [Thu, 11 Jan 2024 22:01:56 +0000 (00:01 +0200)]
Allow a custom protocol to be set for Replicator

It needs to derive from StageProtocol, which is now exported from the
library.

21 months agoFix an incorrect argument to key_error
Mikko Rasa [Thu, 11 Jan 2024 22:00:22 +0000 (00:00 +0200)]
Fix an incorrect argument to key_error

21 months agoAdd more kinds of remote calls
Mikko Rasa [Thu, 11 Jan 2024 21:53:34 +0000 (23:53 +0200)]
Add more kinds of remote calls

21 months agoAvoid sending a packet to the same connection more than once
Mikko Rasa [Thu, 11 Jan 2024 21:15:25 +0000 (23:15 +0200)]
Avoid sending a packet to the same connection more than once

To keep things efficient, player IDs are now stored as 32-bit quantities,
with the high 16 bits containing an ID for the client connection.  Only
the lower 16 bits are transmitted on the network to avoid leaking
information on which players share the same connection.

21 months agoStreamline the send functions in Replicator a bit
Mikko Rasa [Thu, 11 Jan 2024 20:55:17 +0000 (22:55 +0200)]
Streamline the send functions in Replicator a bit

Calling the targeted send function with a target of zero will now forward
to the broadcast function, avoiding the need to branch at call sites.

21 months agoTrack the sender of the current packet
Mikko Rasa [Thu, 11 Jan 2024 17:11:25 +0000 (19:11 +0200)]
Track the sender of the current packet

21 months agoAdd facilities to designate entities as player-controlled
Mikko Rasa [Tue, 9 Jan 2024 21:49:59 +0000 (23:49 +0200)]
Add facilities to designate entities as player-controlled

21 months agoFix errors revealed by gcc 13
Mikko Rasa [Sat, 30 Dec 2023 11:00:49 +0000 (13:00 +0200)]
Fix errors revealed by gcc 13

2 years agoRework Landscape to support replication
Mikko Rasa [Sat, 17 Jun 2023 22:09:30 +0000 (01:09 +0300)]
Rework Landscape to support replication

2 years agoAdd a dynamic cast function for Owned
Mikko Rasa [Sat, 17 Jun 2023 21:58:32 +0000 (00:58 +0300)]
Add a dynamic cast function for Owned

2 years agoAdd a callback when an entity is spawned over the network
Mikko Rasa [Sat, 17 Jun 2023 21:54:38 +0000 (00:54 +0300)]
Add a callback when an entity is spawned over the network

It can be used by the owner of the spawner to send additional packets
to initialize the entity.

2 years agoAdd a mechanism for replicating function calls to clients
Mikko Rasa [Sat, 17 Jun 2023 21:53:36 +0000 (00:53 +0300)]
Add a mechanism for replicating function calls to clients

2 years agoSupport custom lookup functions for retrieving setups in Spawner
Mikko Rasa [Sat, 17 Jun 2023 21:40:21 +0000 (00:40 +0300)]
Support custom lookup functions for retrieving setups in Spawner

2 years agoGive IDs to entities replicated over the network
Mikko Rasa [Sat, 17 Jun 2023 21:31:16 +0000 (00:31 +0300)]
Give IDs to entities replicated over the network

2 years agoOnly send spawns to the target players of the replicator
Mikko Rasa [Sat, 17 Jun 2023 21:03:54 +0000 (00:03 +0300)]
Only send spawns to the target players of the replicator

2 years agoSend spawns of newly-created entities in deferred_tick
Mikko Rasa [Sat, 17 Jun 2023 21:02:40 +0000 (00:02 +0300)]
Send spawns of newly-created entities in deferred_tick

Spawn info won't have been set in the component_create event for the
zygote.

2 years agoAdd a mechanism for spawning entities over the network
Mikko Rasa [Sun, 11 Jun 2023 19:22:34 +0000 (22:22 +0300)]
Add a mechanism for spawning entities over the network

2 years agoAdd interfaces for using Networking from the outside
Mikko Rasa [Sun, 11 Jun 2023 14:55:31 +0000 (17:55 +0300)]
Add interfaces for using Networking from the outside

2 years agoEmit events when the other side of a network connection changes stages
Mikko Rasa [Sun, 11 Jun 2023 14:03:11 +0000 (17:03 +0300)]
Emit events when the other side of a network connection changes stages

2 years agoRename Networking::next_id to next_player_id
Mikko Rasa [Sun, 11 Jun 2023 13:22:14 +0000 (16:22 +0300)]
Rename Networking::next_id to next_player_id

2 years agoUse Networking::set_state in start_server and connect_to_server
Mikko Rasa [Sun, 11 Jun 2023 13:21:12 +0000 (16:21 +0300)]
Use Networking::set_state in start_server and connect_to_server

This gets the event appropriately emitted.

2 years agoAdd string interning to the network protocol
Mikko Rasa [Sun, 11 Jun 2023 12:42:25 +0000 (15:42 +0300)]
Add string interning to the network protocol

This allows transmitting commonly used strings using short IDs.

2 years agoIdentify stages with a name
Mikko Rasa [Thu, 8 Jun 2023 08:29:07 +0000 (11:29 +0300)]
Identify stages with a name

2 years agoRemove unnecessary std::ref invocations
Mikko Rasa [Thu, 8 Jun 2023 08:26:48 +0000 (11:26 +0300)]
Remove unnecessary std::ref invocations

I got confused by the std::thread constructor, which stores its arguments
in a tuple and creates copies without std::ref.  It's not needed in these
cases since the arguments are just forwarded directly.

2 years agoPlace Networking after event things in Director
Mikko Rasa [Thu, 8 Jun 2023 08:21:08 +0000 (11:21 +0300)]
Place Networking after event things in Director

It uses the event bus, so correct order of destruction must be ensured.

2 years agoRename some events for clarity and consistency
Mikko Rasa [Thu, 8 Jun 2023 08:04:12 +0000 (11:04 +0300)]
Rename some events for clarity and consistency

2 years agoSupport adding prop entities to Landscape
Mikko Rasa [Fri, 19 May 2023 20:38:10 +0000 (23:38 +0300)]
Support adding prop entities to Landscape

2 years agoAdd support for shadows
Mikko Rasa [Mon, 15 May 2023 20:44:38 +0000 (23:44 +0300)]
Add support for shadows

2 years agoTrack destruction of individual components in Renderer
Mikko Rasa [Mon, 15 May 2023 20:38:04 +0000 (23:38 +0300)]
Track destruction of individual components in Renderer

2 years agoAllow clearing an Owned by assigning nullptr
Mikko Rasa [Mon, 15 May 2023 20:38:13 +0000 (23:38 +0300)]
Allow clearing an Owned by assigning nullptr

2 years agoMake Owned friendly to other template specializations
Mikko Rasa [Sun, 7 May 2023 17:34:26 +0000 (20:34 +0300)]
Make Owned friendly to other template specializations

2 years agoMake iterate_objects const
Mikko Rasa [Sun, 7 May 2023 17:32:43 +0000 (20:32 +0300)]
Make iterate_objects const

2 years agoChain certain pool operations to pools of derived objects
Mikko Rasa [Sun, 7 May 2023 17:32:02 +0000 (20:32 +0300)]
Chain certain pool operations to pools of derived objects

2 years agoKeep track of object pools for derived types
Mikko Rasa [Sun, 7 May 2023 15:07:41 +0000 (18:07 +0300)]
Keep track of object pools for derived types

2 years agoMake the destructor of PoolBase virtual
Mikko Rasa [Sun, 7 May 2023 12:54:30 +0000 (15:54 +0300)]
Make the destructor of PoolBase virtual

2 years agoMake pools non-movable
Mikko Rasa [Sun, 7 May 2023 12:53:07 +0000 (15:53 +0300)]
Make pools non-movable

I'm not actually using move semantics for them and they're of dubious
value due to polymorphism anyway.

2 years agoAdd a generation number to Reflector
Mikko Rasa [Sun, 7 May 2023 12:27:46 +0000 (15:27 +0300)]
Add a generation number to Reflector

2 years agoInclude generated headers from the installed location
Mikko Rasa [Sun, 7 May 2023 11:17:56 +0000 (14:17 +0300)]
Include generated headers from the installed location

2 years agoAdd game setup imports as transitive dependencies
Mikko Rasa [Sun, 12 Mar 2023 15:14:13 +0000 (17:14 +0200)]
Add game setup imports as transitive dependencies

2 years agoUpdate location of generated source files
Mikko Rasa [Sun, 12 Mar 2023 15:14:01 +0000 (17:14 +0200)]
Update location of generated source files

2 years agoAdd components and systems for creating terrains
Mikko Rasa [Sat, 11 Feb 2023 13:56:06 +0000 (15:56 +0200)]
Add components and systems for creating terrains

2 years agoMake Presenter store pointers to systems, not just renderers
Mikko Rasa [Sat, 11 Feb 2023 13:19:00 +0000 (15:19 +0200)]
Make Presenter store pointers to systems, not just renderers

2 years agoAdd a component for using dynamic meshes in entities
Mikko Rasa [Sat, 11 Feb 2023 13:18:20 +0000 (15:18 +0200)]
Add a component for using dynamic meshes in entities

2 years agoAdjust Bassteroids for the lighting changes
Mikko Rasa [Sat, 28 Jan 2023 20:54:12 +0000 (22:54 +0200)]
Adjust Bassteroids for the lighting changes