2013-03-01 21:19:16 +00:00
|
|
|
Check Acorn works without a script
|
|
|
|
|
|
2013-02-22 00:30:44 +00:00
|
|
|
Write an EntityKit TypeNode integration test. The addAttributes path needs
|
|
|
|
|
to be tested.
|
|
|
|
|
|
|
|
|
|
Check in EntityRuleHandlertest that things behave correctly if
|
2013-02-22 00:34:52 +00:00
|
|
|
EntityBuilder::installFactory fails. Same in PropertyRuleHandlertest for
|
|
|
|
|
CorePropertyManager::installFactory.
|
2013-02-22 00:30:44 +00:00
|
|
|
|
2013-01-27 01:38:19 +00:00
|
|
|
Fix memory leaks, so we can verify that moving MemMap to using incRef/decRef
|
|
|
|
|
on parents doesn't introduce leaks.
|
|
|
|
|
|
2013-01-25 00:36:21 +00:00
|
|
|
Location and MemEntity both have a timestamp, which do very close, but not
|
|
|
|
|
quite the same thing. See if we can come up with a design to eliminate the
|
|
|
|
|
difference?
|
|
|
|
|
|
|
|
|
|
MemEntity is an ideal case for a memory pool, especially if you include
|
|
|
|
|
the PythonWrapper object.
|
|
|
|
|
|
2013-01-24 20:38:30 +00:00
|
|
|
There may be a compute saving to putting mem entities into their containers
|
|
|
|
|
directly in addContents(), rather than having to do the lookup when we
|
|
|
|
|
get the SIght data in readEntity
|
|
|
|
|
|
2013-01-17 23:19:46 +00:00
|
|
|
MemMap::findByType would be more efficient if we find the TypeNode probably.
|
|
|
|
|
|
2013-01-25 00:36:21 +00:00
|
|
|
Implement parent refcounting in mind code.
|
2013-01-17 10:17:07 +00:00
|
|
|
|
|
|
|
|
Move LocatedEntity to common, and rename
|
|
|
|
|
|
2013-01-14 00:22:48 +00:00
|
|
|
Make LocatedEntity the sole base class for dealing with entities.
|
2013-01-17 10:17:07 +00:00
|
|
|
* Move remaining Property methods into LocatedEntity, de-virt modProperty
|
|
|
|
|
and setProperty
|
2013-01-17 14:00:01 +00:00
|
|
|
* Convert MemMap to store using LocatedEntity maybe?
|
2013-01-18 23:03:06 +00:00
|
|
|
* LocatedEntity::setAttr ignores the class of type properties. It should
|
|
|
|
|
call copy as in Entity::
|
2013-01-14 00:14:15 +00:00
|
|
|
|
2013-01-12 01:05:03 +00:00
|
|
|
traits on property to specify the name simply.
|
|
|
|
|
|
2013-01-10 23:22:41 +00:00
|
|
|
Providing there is no extra deps, move all the property access methods
|
2013-01-25 00:41:43 +00:00
|
|
|
into LocatedEntiy.
|
|
|
|
|
1) MemEntity will need type properties to save RAM, so let it have them
|
2013-02-08 23:01:20 +00:00
|
|
|
(Property<foo> rather than SoftProperty. This is the difference between
|
|
|
|
|
using ClientPropertyManager and CorePropertyManager)
|
2013-01-10 23:22:41 +00:00
|
|
|
|
|
|
|
|
Should entity class children be invisible to the client? Prevents it from
|
|
|
|
|
requesting things it has never seen yet.
|
|
|
|
|
|
2013-01-10 00:20:55 +00:00
|
|
|
See if we can create a Property<Map> class with extra interface, rather
|
|
|
|
|
like the generic methods added to TerrainModProperty
|
|
|
|
|
|
2013-01-08 23:49:30 +00:00
|
|
|
We don't need PropertyManager to be virtual. Just move all the functionality
|
|
|
|
|
into the base class.
|
|
|
|
|
|
2012-12-29 13:13:26 +00:00
|
|
|
Remove libcommon from WorldRouterintegration and
|
2012-12-31 22:59:05 +00:00
|
|
|
Rulesetintegration
|
2012-12-26 00:36:44 +00:00
|
|
|
|
2013-02-09 00:35:01 +00:00
|
|
|
Remove BaseWorld lookup from TeleportAuthenticator, and use isDestroyed
|
|
|
|
|
instead. Requires holding a reference.
|
2012-12-14 19:56:12 +00:00
|
|
|
|
2012-11-28 22:56:19 +00:00
|
|
|
disconnectObject does not remove a non-Account ConnectableRouter from
|
|
|
|
|
the connection. Neither does it remove Characters.
|
|
|
|
|
|
2012-11-27 19:21:56 +00:00
|
|
|
Add checks to ensure unlinkExternalMind has the desired effect on movement.
|
2012-12-11 22:40:16 +00:00
|
|
|
Once these checks are in place, we can do the movement change more directly
|
|
|
|
|
without having to go via the mindMoveOperation phase.
|
2012-11-27 19:21:56 +00:00
|
|
|
|
2012-11-26 21:35:44 +00:00
|
|
|
Make [un]linkExternalMind return success, to indicate if an event should be
|
|
|
|
|
logged. Keeps logging of events cleanly in the server code.
|
|
|
|
|
|
2012-11-20 20:37:33 +00:00
|
|
|
The dynamic_cast, and other logic can be removed from Connection::operation
|
|
|
|
|
if it could be moved into Character::externalOperation. In order for this
|
|
|
|
|
to be possible, Link and ExternalMind move into common, and CommSocket
|
|
|
|
|
would need to move into a library. This removes an expensive dynamic_cast
|
|
|
|
|
from the path of every operation coming into the server.
|
|
|
|
|
|
2012-11-15 23:40:09 +00:00
|
|
|
Rename Script::operation for clarify. Needs to merge C++11 first, to
|
|
|
|
|
reduce chances of error. Then we can see how much operation is actually
|
|
|
|
|
called.
|
|
|
|
|
|
2012-10-04 13:35:59 +01:00
|
|
|
Appropriate clothing buff.
|
|
|
|
|
- match the weather in terms of warmth
|
|
|
|
|
- social bonus for not wearing battle gear
|
|
|
|
|
|
2012-09-20 18:42:34 +01:00
|
|
|
In FooOperation(), avoid calling FooOperation() in a parent class, as it
|
|
|
|
|
re-does the checking.
|
|
|
|
|
|
2012-11-29 01:02:35 +00:00
|
|
|
Ducplicated code in ServerAccount::addNewEntity; very similar to
|
|
|
|
|
Account::addNewCharacter.
|
2012-09-14 21:04:53 +01:00
|
|
|
|
2012-09-14 00:39:57 +01:00
|
|
|
Reverse the flow of the possess key on the server. Have it created on the
|
|
|
|
|
destination based on a secret, and passed back to the source server, and from
|
|
|
|
|
there back to the client.
|
|
|
|
|
|
2012-09-13 15:12:16 +01:00
|
|
|
A solid attempt at i18n, which different l12n for connections?
|
|
|
|
|
|
2012-09-03 23:50:19 +01:00
|
|
|
1. Make sure all retries have exponential backoff.
|
|
|
|
|
2. Make sure all periodic things have jitter.
|
|
|
|
|
a) Metaserver query needs deterministics jitter, to ensure clients drift.
|
|
|
|
|
b) AI needs smaller jitter for now
|
|
|
|
|
c) Trees need bigger jitter, but again deterministic - same offset each
|
|
|
|
|
time for a given instance.
|
|
|
|
|
|
2012-08-14 00:27:50 +01:00
|
|
|
Abstract rules. Tasks are already one type, but we need MOAR! recipes,
|
|
|
|
|
and designs and stuff.
|
|
|
|
|
|
2012-08-14 01:13:05 +01:00
|
|
|
Move Server (base of ServerRouting) reference into Link.
|
|
|
|
|
It needs to actually handle lobby dispatch first.
|
|
|
|
|
|
2012-08-13 22:08:22 +01:00
|
|
|
There are only very few places where ConnectedRouter::m_connection is used
|
|
|
|
|
as anything other than Link - should be possible to weaken the coupling.
|
|
|
|
|
|
2012-08-09 01:38:17 +01:00
|
|
|
Motion only ever uses locatio, so doesn't need entity ref
|
|
|
|
|
|
2012-08-06 14:59:45 +01:00
|
|
|
When coverage tells us 0% in a header, that is because the header had to
|
|
|
|
|
generate implicit default code - probably destructor.
|
|
|
|
|
|
|
|
|
|
Design a general purpose constraints mechanism, and have it inform
|
|
|
|
|
the physics system.
|
|
|
|
|
|
2012-08-02 14:07:05 +01:00
|
|
|
See if we can test CommStreamClient with null_stream
|
|
|
|
|
|
2012-07-31 20:27:39 +01:00
|
|
|
Move logic for reply ops from CommClient::objectArrived to Connection?
|
|
|
|
|
Would probably clean up the logic in CommClient, and allow send()
|
|
|
|
|
to be removed.
|
|
|
|
|
|
2012-07-31 20:21:58 +01:00
|
|
|
Name of server for negotiation purposes is done _every_ connection
|
|
|
|
|
in CommClient. Calculate it centrally.
|
|
|
|
|
|
2012-07-30 09:10:55 +01:00
|
|
|
Client connection can be made way more efficient by embedding the objects
|
|
|
|
|
as members, rather than using pointers. To this end, make Negotiate
|
|
|
|
|
a member, using a template arg. Make the stream type also a member.
|
|
|
|
|
Move all explicit listener related functionality to a subclass
|
|
|
|
|
of CommClient, leaving CommClient as the common, template base class
|
|
|
|
|
for CommPeer and the new class. Encoder could also be embedded, except for
|
|
|
|
|
the need to pass in the codec on construction - arguably bad design.
|
|
|
|
|
|
2012-07-02 23:04:47 -07:00
|
|
|
Now that the client is getting an info response to create, get rid of the
|
|
|
|
|
need to see?
|
|
|
|
|
|
2012-07-26 12:30:01 +01:00
|
|
|
On account connection, the call to MTRand to salt and encrypt the password
|
|
|
|
|
looks a bit expensive. Syscalls opening dev/urandom, which could block.
|
2012-07-26 00:41:27 +01:00
|
|
|
|
2012-07-23 22:09:19 +01:00
|
|
|
Intetionally surrender as many capabilities as we can in order to avoid
|
|
|
|
|
security issues.
|
|
|
|
|
|
2012-07-19 18:56:37 +01:00
|
|
|
Peer should probably store a lower level version of the hostname, rather
|
|
|
|
|
than the input to the resolver, thus ensuring the other party can connect
|
|
|
|
|
to the right place. Juncture stores the high level representation, and uses
|
|
|
|
|
DNS to resolve. This is correct, as it may need to re-resolve
|
|
|
|
|
later - the other server may have moved. Peer will get deleted if the other
|
|
|
|
|
servers address changes, and has to express an accurate version to the client.
|
|
|
|
|
|
2012-07-19 12:46:29 +01:00
|
|
|
In Juncture - tighten up detecting the failed socket condition.
|
|
|
|
|
Once we are connected to Peer, probably shouldnt have the m_socket pointer
|
|
|
|
|
any more, and need to make sure we are no longer connected to the signals.
|
|
|
|
|
Can we clear the socket signals?
|
|
|
|
|
|
2012-07-27 16:50:16 +01:00
|
|
|
Separate out CommPeer::connect into two trivial inline functions
|
2012-07-18 23:24:40 +01:00
|
|
|
|
2012-07-18 11:32:55 +00:00
|
|
|
There are many ways in which MemMap does the same job as WorldRouter.
|
|
|
|
|
Common base class?
|
|
|
|
|
|
2012-06-22 23:45:38 -07:00
|
|
|
Fix up WorldLoader so it can work with IG only. Requires support for
|
|
|
|
|
GetOperation in Creator
|
|
|
|
|
|
2012-06-13 18:40:13 -07:00
|
|
|
Optionally report back success in the form of Info on in-game ops with
|
|
|
|
|
serialno?
|
|
|
|
|
|
2012-05-22 00:49:04 +01:00
|
|
|
Improve Interactive to use serialno for responses
|
|
|
|
|
|
2012-05-21 09:36:24 +01:00
|
|
|
Bug: Not listening for IPv6 any more
|
|
|
|
|
Bug: Connecting doesn't fail over
|
|
|
|
|
|
2012-05-18 14:30:14 +01:00
|
|
|
Why isn't ExternalMind a ConnectedRouter
|
|
|
|
|
|
2012-04-30 17:45:23 +01:00
|
|
|
Re-factor login code so Session is the unique class rather than Account.
|
|
|
|
|
Constraining logins to be one per account may be sound policy, but it
|
|
|
|
|
should be policy rather than a hard constraint of the architecture.
|
|
|
|
|
|
2012-03-06 23:18:42 +00:00
|
|
|
BaseWorld, Property, TypeNode and Inheritance into rulesets? Everything else
|
|
|
|
|
in common is lower level.
|
|
|
|
|
|
2012-01-19 19:34:20 +00:00
|
|
|
Need to work out what to do with sections, vs rulesets when uploading and
|
|
|
|
|
storing rules at the server end.
|
|
|
|
|
|
2012-01-11 19:44:00 +00:00
|
|
|
Probably cleaner, and less globals to initiate ruleset load from the config
|
|
|
|
|
phase in main()
|
|
|
|
|
|
2012-01-10 20:51:44 +00:00
|
|
|
Why isn't trailblaze working?
|
|
|
|
|
|
2012-01-03 01:18:28 +00:00
|
|
|
Look into if installcheck-local can be used usefully to ensure all is in
|
|
|
|
|
order.
|
|
|
|
|
|
2011-12-28 13:58:38 +01:00
|
|
|
It's possible to add permissions and possibly even protection against
|
|
|
|
|
CPU overload into the scripting API. Permissions could be controlled by a
|
|
|
|
|
global context as well is flags on the objects
|
|
|
|
|
|
2011-12-27 10:49:20 +01:00
|
|
|
Consider moving WorldTime back to Python, or making it way more data driven
|
|
|
|
|
|
2011-12-23 22:22:42 +00:00
|
|
|
Create inherited types in the script API for common operations - actually
|
|
|
|
|
cheaper believe it or not
|
|
|
|
|
|
2011-12-21 16:40:21 +00:00
|
|
|
A given owning entity (Account/Admin) needs to keep track of the work it is
|
|
|
|
|
doing when doing a ruleset upload. The whole ruleset change should be
|
|
|
|
|
encapsulated into a transaction, with its own instance of RuleHandler etc,
|
|
|
|
|
and once done it should be possible to check for errors, commit, or not.
|
|
|
|
|
Writing rules to database should only be done if transaction succeeds, so
|
|
|
|
|
all pending writes need to be encapsulated too. This requires the handler
|
|
|
|
|
and builder code not to be in server.
|
|
|
|
|
|
|
|
|
|
These class belong at the simulator layer (above rulesets,
|
|
|
|
|
but not server specific):
|
|
|
|
|
EntityBuilder, CorePropertyManager, *RuleHandler
|
|
|
|
|
|
|
|
|
|
Add a Server config class in server/ which adds all the base EntityFactories
|
|
|
|
|
to the builder, and the PropertyFactories to the CorePropertyManager. Then
|
|
|
|
|
both those can be made independant of server. It could also handle all the
|
|
|
|
|
really core types being added to Inheritance.
|
|
|
|
|
|
2011-12-22 19:35:34 +00:00
|
|
|
Is PyCreator/PyCharacter still needed in the client side? It seems to have
|
|
|
|
|
been abandoned before being fully introduced.
|
2011-12-21 00:34:56 +00:00
|
|
|
|
2011-12-19 23:26:34 +00:00
|
|
|
Add Arithmetic functionality to all scripts. Cos you know.
|
|
|
|
|
Add the concept of the Property script in general and use it to replace the
|
|
|
|
|
un-flexible concept of a specific Arithmetic script type.
|
|
|
|
|
It may be just more efficient to ignore this concept for most scripts,
|
|
|
|
|
but will almost certainly simplify the code to add it to many.
|
|
|
|
|
A more flexible concept of scripting attributes might make sense too.
|
|
|
|
|
|
2011-12-19 10:37:53 +00:00
|
|
|
Move to a mechanism like the new mind property for statistics
|
|
|
|
|
|
2011-12-15 10:35:29 +00:00
|
|
|
Ensure PythonClass checks base on reload
|
2011-12-18 21:09:48 +00:00
|
|
|
- What happens when package changes?
|
|
|
|
|
- What happens when class _name_ changes?
|
2011-12-15 10:35:29 +00:00
|
|
|
|
2011-12-14 02:02:20 +00:00
|
|
|
Make all PyProperties into an inheritance tree, and all scripts to
|
|
|
|
|
inherit from them
|
|
|
|
|
- add tp_base
|
|
|
|
|
- one aspect is that the property value itself is typically important
|
|
|
|
|
as_number/as_seq/as_map ?
|
|
|
|
|
- make properties scriptable and the move common code from Entity, Task
|
|
|
|
|
and Property into Scriptable base class for multiple inheritance
|
2011-12-27 16:06:37 +01:00
|
|
|
- It should be possible to simplify Py_Property.cpp function now
|
2011-12-14 02:02:20 +00:00
|
|
|
|
2011-12-09 13:22:28 +00:00
|
|
|
Add tests which trigger possible crash conditions in the script interface
|
2011-12-09 00:27:07 +00:00
|
|
|
|
2011-12-06 14:04:33 +00:00
|
|
|
Make m_target private in TaskFactory, and change the sort function for the
|
|
|
|
|
target map in activations to sort on how deep the target is in the
|
|
|
|
|
type tree, so we can try and get the closest match first.
|
|
|
|
|
|
2011-11-22 23:53:27 +00:00
|
|
|
Include doxygen docs in http self-served docs.
|
|
|
|
|
|
2011-12-29 12:57:21 +01:00
|
|
|
De-dup code in Py_Thing and Py_Mind and Py_CreatorClient
|
2011-10-29 05:50:49 -07:00
|
|
|
|
2011-10-22 15:24:28 -07:00
|
|
|
Make it possible to forget
|
|
|
|
|
|
2011-10-21 09:51:01 -07:00
|
|
|
Allow target to be "foo.bar" where foo is the entity type, and bar is property
|
|
|
|
|
name, allowing either to be unspecified. That way activation can be constrained
|
|
|
|
|
to a particular entity, a paricular property or both.
|
|
|
|
|
|
2011-10-20 01:25:31 +01:00
|
|
|
In NPCMind need to sort what is going on. Probably only need to hold onto
|
|
|
|
|
weak references using WeakValueDict
|
|
|
|
|
|
2011-10-13 13:52:45 +01:00
|
|
|
Use "name" as the property that is supposed to get an operation
|
|
|
|
|
|
2011-10-12 15:47:40 +01:00
|
|
|
It looks like weak reference is being broken way late in Logging. Probably
|
|
|
|
|
because the op queue is holding a reference to the tree, and so deleting
|
|
|
|
|
the tree wrapper is being delayed. Need to look into when we delete that.
|
|
|
|
|
|
2011-09-21 10:26:27 +01:00
|
|
|
EntityBuilder shouldn't need a permenent reference to the world.
|
|
|
|
|
|
2011-08-26 11:03:23 +01:00
|
|
|
Allow long cut and cross cut with saws. Long cut is along grain, bisecting by longest dimension. cross cut is across both grains
|
|
|
|
|
|
2011-09-15 00:04:44 +01:00
|
|
|
Sort out a better way to handle materials. We shouldn't have a base class
|
|
|
|
|
the same as an attribute without the entity hierarchy, but being able to
|
|
|
|
|
declare attributes, and have definition data would be necessary. Good sample
|
|
|
|
|
case for having proper data driven, scriptable properties.
|
|
|
|
|
|
2011-08-15 10:22:12 +01:00
|
|
|
use boost intrusive containers for op queues
|
|
|
|
|
|
2011-09-15 08:50:53 +01:00
|
|
|
Check out _GLIBCXX_DEBUG
|
|
|
|
|
Turns out to be useful to detect usage issues with STL, but requires full
|
|
|
|
|
rebuild of everything that uses stdc++, including non WF deps.
|
2011-08-07 12:46:05 +01:00
|
|
|
|
2011-08-01 14:50:52 +01:00
|
|
|
Macro todo list
|
|
|
|
|
Get server physics kicked off
|
|
|
|
|
Re-work Atlas to be more secure, client driven encrypted
|
|
|
|
|
Make server more modular, scalable
|
|
|
|
|
|
2011-06-24 11:22:52 +01:00
|
|
|
Protocol revision:
|
|
|
|
|
Stop announcing by server, request at client instead
|
|
|
|
|
Consolidate negotiation, and allow other undefined headers
|
|
|
|
|
Allow for multiple exchanges during negotiation
|
|
|
|
|
Put Unseen and other common ops (between Eris/cuphesis) into the spec
|
|
|
|
|
|
2010-09-11 01:36:09 +01:00
|
|
|
Use SCMS like scheme to ensure no grey goo. entities cannot create other
|
|
|
|
|
entities which can create further persistent entities.
|
|
|
|
|
|
2010-08-16 00:21:36 +01:00
|
|
|
Bullet Physics Ideas:
|
|
|
|
|
There are two suitable bullet world objects for us to use:
|
|
|
|
|
btCollisionWorld and btDynamicsWorld
|
|
|
|
|
|
|
|
|
|
The former should be pretty simple to use, the latter gives way more.
|
|
|
|
|
|
|
|
|
|
The former we can use by adding collision objects for the static world
|
|
|
|
|
content, then use convexSweepTest to calculate collisions for single
|
|
|
|
|
moving avatars which themselves do not need to be in the collisionWorld.
|
|
|
|
|
It can also be used to avoid object intersection at movement and creation
|
|
|
|
|
time if desirable.
|
|
|
|
|
|
|
|
|
|
In a more advanced implementation, perhaps using btDynamicsWorld a bunch
|
|
|
|
|
of interesting stuff can be simulated without us having to change the
|
|
|
|
|
way we handle basic avatar collisions. In addition as things get more
|
|
|
|
|
tricky we can use the bit field and matric features to define what collides
|
|
|
|
|
with what, all under the control of the designer/builder.
|
|
|
|
|
|
2011-04-28 01:08:29 +01:00
|
|
|
Frontends, backends, routers based architecture
|
|
|
|
|
|
2011-03-30 19:09:00 +01:00
|
|
|
Use 64bit milliseconds everywhere. Merge SECONDS and STAMP into a single
|
|
|
|
|
attribute. Get rid of FUTURE_SECONDS in favor of things being able to set
|
|
|
|
|
STAMP/SECONDS in advance. Use time for STAMP instead of incrementing integer.
|
|
|
|
|
|
2011-03-29 15:43:02 +01:00
|
|
|
Character should inherit from and implement the Agent interface, which
|
|
|
|
|
the server code uses when talking to it. This de-couples server from most
|
|
|
|
|
of the rulesets directory.
|
|
|
|
|
|
2011-03-13 11:04:53 +00:00
|
|
|
If we want to support loading data and config over network, make the loader
|
|
|
|
|
classes abstract so the underlying implementation for getting data can vary.
|
|
|
|
|
|
2011-03-04 16:21:56 +00:00
|
|
|
Add config option which allows server owner to control the type of account
|
|
|
|
|
created by default. If they want "admin"/"builder" then they should have it.
|
|
|
|
|
In fact "builder" is a smashing idea for a new account type.
|
|
|
|
|
|
2011-03-02 19:44:58 +00:00
|
|
|
Use weak references to allow players to assist other players. Activating some
|
|
|
|
|
kind of assist task installs a reference in the other task, which breaks
|
|
|
|
|
automatically when the task breaks.
|
|
|
|
|
|
2011-02-23 13:33:46 +00:00
|
|
|
Harmonize Atlas repr of Areas with mods, and also fix bindings and properties
|
|
|
|
|
to make exchanging data easier.
|
|
|
|
|
|
2011-02-21 18:27:28 +00:00
|
|
|
Add new kind of marker area, only used internally to track things about
|
|
|
|
|
bits of terrain, like ownership. Requires new class in Mercator probably.
|
|
|
|
|
|
2011-01-14 20:27:50 +00:00
|
|
|
We should say "circle" to reference WFMath::Ball in 2D. Pick a different name
|
|
|
|
|
depending in dinension. "rectangle" instead of "box" perhaps.
|
|
|
|
|
|
2010-12-08 11:19:41 +00:00
|
|
|
Consider Entity:destroyed and Entity:containered to interrupt tasks
|
|
|
|
|
|
2010-12-07 22:01:55 +00:00
|
|
|
Allow Admin to use an op - perhaps Login - to claim any object on the server.
|
|
|
|
|
|
2010-12-06 14:56:21 +00:00
|
|
|
Use Java object builder/aspect pattern for Property factories in
|
|
|
|
|
CorePropertyManager
|
|
|
|
|
|
2010-11-26 22:49:13 +00:00
|
|
|
It looks as though Look FROM account is required to activate a possess key,
|
|
|
|
|
which I was not expecting. Are clients expecting this?
|
|
|
|
|
|
2010-11-12 14:08:43 +00:00
|
|
|
Add database stuff to store server metadata like version of server,
|
|
|
|
|
(to detect rolling back to earlier versions).
|
|
|
|
|
|
2010-10-28 19:31:11 +01:00
|
|
|
TerrainModProperty:
|
2010-11-11 17:43:36 +00:00
|
|
|
Do the same for areas.
|
|
|
|
|
We need op post-processing rather than pre-processing for move updates.
|
2010-10-28 19:31:11 +01:00
|
|
|
|
2010-10-18 15:11:42 +01:00
|
|
|
Abstract entities for tracking non-physical concepts such as quests, trade
|
|
|
|
|
transactions, entity recipes, contruction blueprints etc.
|
|
|
|
|
See http://www.igda.org/newsletter/?p=483 for how to do trading.
|
|
|
|
|
|
2010-09-19 00:28:20 +01:00
|
|
|
Extend Mercator to allow terrain mod volume calculations. Use these to work
|
|
|
|
|
out when a quarry should work, and how much it should be extended.
|
|
|
|
|
|
2010-09-14 01:42:24 +01:00
|
|
|
Sort InnerTerrainMod with very thorough tests (check pre/post), then try
|
|
|
|
|
and refactor.
|
|
|
|
|
|
2010-09-13 00:26:05 +01:00
|
|
|
Delve goal established pattern for picking up existing terrin mods.
|
|
|
|
|
Add additional parallel mechanism for picking up areas.
|
|
|
|
|
Use areas and mods a whole load more for construction projects.
|
|
|
|
|
Returning the entities will be vastly more useful, so do that.
|
|
|
|
|
|
2010-07-28 13:52:04 +01:00
|
|
|
CommPythonClient should probably execute python in dispath rather than read()
|
|
|
|
|
|
2010-07-13 16:15:48 +01:00
|
|
|
Rename ArithmeticScript as Arithmetic
|
|
|
|
|
|
2010-03-30 02:02:52 +01:00
|
|
|
Inheritance::isTypeOf(TypeNode) can have a tighter loop
|
|
|
|
|
|
2009-12-30 10:01:24 +00:00
|
|
|
What are we doing with spawns?
|
|
|
|
|
Set location
|
|
|
|
|
Restrict classes
|
|
|
|
|
Setup inventory
|
2009-12-30 11:43:56 +00:00
|
|
|
Filter and modify character names.
|
2009-12-30 10:01:24 +00:00
|
|
|
|
2009-12-15 15:51:52 +00:00
|
|
|
Implement a null Atlas::Bridge which just does nothing.
|
|
|
|
|
|
2009-12-01 17:55:42 +00:00
|
|
|
Note that the SystemAccount will probably cause problems during character
|
|
|
|
|
creation, as the system will try and persist characters, and referential
|
|
|
|
|
integretiy will be bad, as the account itself is not persisted.
|
|
|
|
|
|
2009-11-26 19:46:18 +00:00
|
|
|
Make cycmd stop dumping all ops to output unless monitoring is on,
|
|
|
|
|
and stop it re-writing the prompt so much.
|
|
|
|
|
|
2009-11-23 15:43:45 +00:00
|
|
|
cyclient - add interactive
|
|
|
|
|
- add args on commandline
|
|
|
|
|
|
2009-10-25 12:06:48 -07:00
|
|
|
Constrain movement if not directly in a movement domain.
|
|
|
|
|
|
|
|
|
|
Tower defense game.
|
|
|
|
|
|
2009-09-19 19:19:53 +01:00
|
|
|
Use PGconnectStart for async db stuff.
|
|
|
|
|
|
2009-09-01 02:43:03 +01:00
|
|
|
Internal "perceptive" property, which stores a set of currently visible IDs,
|
|
|
|
|
and can be used to send appearance/disappearance ops. Should cut down to cost
|
|
|
|
|
but increase storage.
|
|
|
|
|
|
|
|
|
|
A Dungeon Master like play style, where lots of minions are available to
|
|
|
|
|
dig and build dungeons, which a classic dungeon crawl mechanic for heros
|
|
|
|
|
in the Diablo style.
|
|
|
|
|
|
2009-08-27 23:23:16 +01:00
|
|
|
We really need to expose mind state better.
|
|
|
|
|
|
2009-08-22 21:04:24 +01:00
|
|
|
Add functionality to handle ids in blocks or ranges.
|
|
|
|
|
|
2009-08-22 04:47:10 +01:00
|
|
|
Does _anyone_ use Atlas::Objects iterators?
|
|
|
|
|
|
2009-08-22 03:02:02 +01:00
|
|
|
EntityFactory::m_children is only used in updating children properties, and
|
|
|
|
|
probably could be done by look up the children in Inheritance.
|
|
|
|
|
|
2009-08-17 23:13:03 +01:00
|
|
|
Separate the rulesets loading code out of EntityBuilder, making EntityBuilder
|
2009-08-19 03:01:45 +01:00
|
|
|
vastly simpler. Remove unused headers from EnittyBuilder and Ruleset.
|
2009-08-17 23:13:03 +01:00
|
|
|
|
2009-08-02 20:58:48 +01:00
|
|
|
It makes increasing sense to make the python subsystem behave a little
|
|
|
|
|
differently in the client:
|
|
|
|
|
1) Allow all operation types in client, but error on unknown in server.
|
|
|
|
|
2) Redirect Python output via logging mechanism in server, but not in client.
|
|
|
|
|
Needs to be done to make things sane.
|
|
|
|
|
|
2009-08-02 18:31:42 +01:00
|
|
|
FOO_NO numbers for operation classes are currently initialised to zero,
|
|
|
|
|
meaning they get missed in valgrind tests for non-initialised data.
|
|
|
|
|
Remove the initialisation and see what happens with valgrind now.
|
|
|
|
|
|
2009-08-02 18:30:36 +01:00
|
|
|
Minds which are asleep currently ignore all updates. This is a bit mad,
|
|
|
|
|
as it means we waste storage on what is inevitably going to be an outdated
|
|
|
|
|
world view. Either keep it updated, or just purge it completely.
|
|
|
|
|
|
2009-07-31 18:45:18 +01:00
|
|
|
Use a hidden property giving a list of worker IDs to establish common
|
|
|
|
|
state with tasks.
|
|
|
|
|
|
2009-07-28 19:50:24 +01:00
|
|
|
It might be useful to expose task attributes so they can be modified by
|
|
|
|
|
the task script itself, and ensure this propagates immediately back to
|
|
|
|
|
the client UI.
|
|
|
|
|
|
2009-07-30 17:57:22 +01:00
|
|
|
Add a single function for handling all those mind ops which just need
|
|
|
|
|
TO setting.
|
2009-07-10 12:07:07 +01:00
|
|
|
|
2009-07-07 01:16:44 +01:00
|
|
|
Check all Python for InstanceType, as that is what C++ objects used to be,
|
|
|
|
|
but not any more.
|
|
|
|
|
|
2009-07-04 19:45:12 +01:00
|
|
|
Client bindings don't belong in server module, and server module should
|
|
|
|
|
not be available at all in the client bindings.
|
|
|
|
|
|
2009-07-04 19:11:53 +01:00
|
|
|
Look into loudmouth for XMPP stuff.
|
|
|
|
|
|
2009-07-02 17:56:44 +01:00
|
|
|
Fix Arithmetic and Mind code so the factory is not created every time,
|
2009-08-05 02:11:18 +01:00
|
|
|
nor the type looked up every time. Python related factories need to be way
|
|
|
|
|
more consistent.
|
2009-07-02 17:56:44 +01:00
|
|
|
|
2009-05-26 18:47:37 +01:00
|
|
|
Look through dynamic casts and consider when it would be cleaner to
|
|
|
|
|
extend the interface in the base class.
|
|
|
|
|
|
2009-05-25 02:05:23 +01:00
|
|
|
Go through Python types sorting out where tp_methods can be used.
|
|
|
|
|
Sort out weak references for Entity and related wrappers,
|
|
|
|
|
Move Location into server, and isLocation somwhere else.
|
2009-06-04 14:53:42 +01:00
|
|
|
Many types have their own tp_new, but could be using _GenericNew.
|
2009-05-25 02:05:23 +01:00
|
|
|
|
2009-05-19 16:25:07 +01:00
|
|
|
Mind interface is pretty simple, so it should be possible to have a hive or
|
|
|
|
|
herd mind at either core or python layer. One significant goal will be to
|
|
|
|
|
eliminate the copy of the world per individual, but this is being done
|
|
|
|
|
already. It will probably e a major bonus to have a single view of the
|
|
|
|
|
world from all the entities, so that if one entity has seen something, they
|
|
|
|
|
are all considered to have seen it implicitly. In order for many things to
|
|
|
|
|
work these still need to make their own decissions though there is
|
|
|
|
|
collectivism to their movement decisions.
|
|
|
|
|
|
|
|
|
|
Touched on before, but why not break down clustering by the kind of computation,
|
|
|
|
|
so the physics layer is separated, and can only be talked to by RPC?
|
2009-06-03 21:21:07 +01:00
|
|
|
Another idea - separate the frontend with it's checks and socket handling
|
|
|
|
|
from the worldprocessing code. Connection, Account, Lobby etc would all be
|
|
|
|
|
handled in a frontend server with multiple processes. They share one listen
|
|
|
|
|
socket, and use herd of elephents prevention to listen to sockets. The then
|
|
|
|
|
send operations to a backend server which has the world processing.
|
2009-05-19 16:25:07 +01:00
|
|
|
|
2009-05-07 02:33:59 +01:00
|
|
|
WorldTime and DateTime need to be purely data driven
|
|
|
|
|
|
2009-05-06 00:14:51 +01:00
|
|
|
Implement connection limits.
|
|
|
|
|
|
2009-05-01 15:49:45 +01:00
|
|
|
Ensure that distance functions mark results as invalid if there
|
|
|
|
|
is a broken entity hierarchy.
|
|
|
|
|
|
2009-04-28 08:51:35 +01:00
|
|
|
Ways to hold territory:
|
|
|
|
|
NPC manned towner foritifications. No door or ladder at ground level.
|
|
|
|
|
Must be frequently re-supplied.
|
|
|
|
|
|
2009-04-19 00:39:21 -07:00
|
|
|
Define class properties that generate a random instance value per entity.
|
|
|
|
|
This is another type which must be added to every instance, and can never
|
|
|
|
|
be used as a default.
|
|
|
|
|
|
2009-04-14 04:08:34 +01:00
|
|
|
Look up launchd.plist man page for details of how to manage a unix daemon
|
|
|
|
|
under OS-X.
|
|
|
|
|
http://developer.apple.com/technotes/tn2005/tn2083.html
|
|
|
|
|
|
2009-04-09 23:10:25 +01:00
|
|
|
Add daily option to the create_release file, and work out where the hell to
|
|
|
|
|
put them.
|
|
|
|
|
|
2009-04-09 01:41:14 +01:00
|
|
|
--conf=<file> for specifying config. Simple.
|
|
|
|
|
|
2009-03-31 02:40:54 +01:00
|
|
|
Add a class for the movement domain which is a property of the movement
|
|
|
|
|
parent. Point to it from the Motion object. (safe reference).
|
|
|
|
|
Encapsulate most data related to movement in Motion rather than leaving
|
|
|
|
|
it to clog up Location.
|
|
|
|
|
|
2009-03-22 19:57:34 +00:00
|
|
|
Fix up cycmd to work more like cydb.
|
|
|
|
|
|
2009-03-20 16:58:29 +00:00
|
|
|
Move account update functionality into AccountBase. Keep cypasswd as the
|
|
|
|
|
user facing tool.
|
|
|
|
|
|
2009-03-12 00:02:32 +00:00
|
|
|
Look up using ares for asynch DNS. Possibly is skstream once that
|
|
|
|
|
does other stuff.
|
|
|
|
|
|
2009-02-25 20:03:44 +00:00
|
|
|
Look up Proactor pattern, Bloom filter.
|
|
|
|
|
|
2009-09-07 00:24:19 +01:00
|
|
|
How to support phasing? (Instancing so that the same place changes
|
|
|
|
|
fundamentally only to a subset of players)
|
2009-02-24 23:33:27 +00:00
|
|
|
|
2009-02-12 19:02:14 +00:00
|
|
|
Paxos algorithm for consensus (master election) in an unreliable distributed
|
|
|
|
|
system.
|
|
|
|
|
|
|
|
|
|
Modify metaserver to allow DNS queries.
|
|
|
|
|
|
2009-02-09 19:14:03 +00:00
|
|
|
Strip out the hierarchical movements domains. Flat!
|
2009-02-10 17:20:04 +00:00
|
|
|
The movement domain then handles collisions and line of sight
|
|
|
|
|
checking.
|
2009-02-09 19:14:03 +00:00
|
|
|
|
2009-02-09 05:31:38 +00:00
|
|
|
Areas of world with an associated in-game chat channel.
|
|
|
|
|
|
|
|
|
|
Connection, Master and Peer (and implicitly TrustedConnection) have members
|
|
|
|
|
in common, and could probably stand to inherit from a common parent.
|
|
|
|
|
Connection would make sense as the parent, moving stuff related to being
|
|
|
|
|
connected to a client to a child class UserConnection.
|
|
|
|
|
|
2009-02-01 04:50:22 +00:00
|
|
|
Add a way to extend the terrain base on where someone is walking.
|
|
|
|
|
Probably should sit on top of a general mechanism for modifying the
|
|
|
|
|
world based on player activity.
|
|
|
|
|
|
2009-01-15 18:48:20 +00:00
|
|
|
Fix out type updates in Eris. Need to be picked up in the special place
|
|
|
|
|
where serverinfo updates are picked up no.
|
|
|
|
|
|
2009-01-15 02:27:49 +00:00
|
|
|
Python console will make everything so much more introspective.
|
|
|
|
|
|
|
|
|
|
Remove the implicit bbox. Replace with coding the bbox property to set up
|
|
|
|
|
the visibility metric when applied.
|
|
|
|
|
|
|
|
|
|
OpQueEntry could be a conventional C style queue. Would be more efficient as
|
|
|
|
|
we are searching by hand already.
|
|
|
|
|
|
2008-11-29 Al Riddoch <alriddoch@googlemail.com>
* rulesets/Character.cpp, rulesets/Character.h: Remove all traces
of the hard coded statistics property from Character.
* rulesets/Py_Property.cpp: Don't use Py_StatisticsProperty as the
default wrapper for a statistics property because it will no
longer work this way.
* rulesets/Python_API.cpp: Remove the setup for the Statistics
wrapper.
* rulesets/StatisticsProperty.cpp, rulesets/StatisticsProperty.h:
Change the footprint of this class so it is no longer hooked
into part of the Character class, and instead handles looking
up values from the script directly, and owns the script itself.
* server/ArithmeticFactory.cpp, server/ArithmeticFactory.h,
server/EntityFactory.cpp, server/EntityFactory.h,
server/PersistantThingFactory.cpp: Remove setup of hard coded
statistics property.
* rulesets/Statistics.h, rulesets/Statistics.cpp,
rulesets/Py_Statistics.h, rulesets/Py_Statistics.cpp,
rulesets/Makefile.am: Remove clases that are no longer used.
2008-11-29 23:17:38 +00:00
|
|
|
As noted before, ArithmeticFactory ScriptFactory and TaskFactory contain
|
|
|
|
|
much common code. Use inheritance.
|
|
|
|
|
|
2008-11-27 02:01:02 +00:00
|
|
|
Move the functionality from Statistics into StatisticsProperty, getting
|
|
|
|
|
rid of the class completely. Make it the simplest possible interface for the
|
|
|
|
|
python script, then see if this can be generalised for more broadly
|
|
|
|
|
applicable stuff. Python properties?
|
|
|
|
|
|
2008-11-21 16:11:18 +00:00
|
|
|
Allow generic simulated entities which have a real ID, but are not yet in
|
|
|
|
|
the world. The server will track them for you, and control varies depending
|
|
|
|
|
on privs. e.g. admin can create arbitrary simulated entities, and then insert
|
|
|
|
|
them for real. simulated is a bad term because in fact the difference is that
|
|
|
|
|
they are _NOT_ simulated.
|
|
|
|
|
|
2008-11-20 19:59:17 +00:00
|
|
|
seq is not restored.
|
|
|
|
|
|
2008-11-18 02:27:55 +00:00
|
|
|
Properties added by requirePropertyClass and perhaps related functions
|
|
|
|
|
are not getting installed or applied.
|
|
|
|
|
|
2008-11-17 19:42:49 +00:00
|
|
|
Currently properties are being installed early before all Entity IDs have been
|
|
|
|
|
restored. Need to delay. This will be a problem if there are Entity properties
|
|
|
|
|
around linking things together by pointers.
|
|
|
|
|
|
2008-11-16 22:51:43 +00:00
|
|
|
Make operations that depend on newId generation failable, so that a
|
|
|
|
|
database issue does not cause an assertion to fail.
|
|
|
|
|
|
2008-11-13 02:17:55 +00:00
|
|
|
Make sure property names are limited to 32, and also class names to the same
|
2008-11-13 03:13:41 +00:00
|
|
|
length. Make this 32 limit a compile time constant. Also check ruleset name
|
2008-11-13 02:17:55 +00:00
|
|
|
length.
|
|
|
|
|
|
|
|
|
|
Fix abort() in newId() when Database connection is down. Probably best done
|
|
|
|
|
with an ID pool.
|
|
|
|
|
|
2008-10-16 20:03:19 +00:00
|
|
|
Make non-value related members of a TerrainModProperty mutable, so
|
|
|
|
|
they can be modified without having to get a non-const pointer.
|
|
|
|
|
|
2008-10-14 00:18:23 +00:00
|
|
|
modProperty should handle setting the flag_unsent flag on properties.
|
|
|
|
|
|
2008-10-01 15:31:47 +00:00
|
|
|
Central Knowledge, available to all NPCs without being taught.
|
|
|
|
|
|
2008-10-01 10:42:12 +00:00
|
|
|
Add SIGINT handler to cycmd to cancel tasks.
|
|
|
|
|
|
2008-09-30 20:29:35 +00:00
|
|
|
Doxygen TODO lists!
|
|
|
|
|
|
|
|
|
|
All the in-place property mods are not handling apply()
|
|
|
|
|
Should this be done in Update()?
|
|
|
|
|
updateOperation could handle setting clearing the per_clean flag, the
|
|
|
|
|
entity_clean flag, and apply the properties.
|
|
|
|
|
|
2008-09-29 02:51:09 +00:00
|
|
|
add_map really has no code in it
|
|
|
|
|
update_map contains very little and is probably obsolete as it never gets
|
|
|
|
|
called
|
|
|
|
|
Review hooks and see if they really are needed.
|
|
|
|
|
Note that:
|
|
|
|
|
in sight_create_operation all that is being checked for is if we created it
|
|
|
|
|
If we did create it, this is going to be a special interest to any mind
|
|
|
|
|
so we could look at supporting it in the core base class.
|
|
|
|
|
|
|
|
|
|
in sight_move_operation we are looking for changes to the inventory
|
|
|
|
|
and taking ownership. Could this again be supported in the base code?
|
|
|
|
|
|
|
|
|
|
Both sight_move and sight_create update the map via the Python API
|
|
|
|
|
when this could be more efficiently done in the C++ if the op
|
2016-09-06 22:29:36 -04:00
|
|
|
handler wasn't overridden. Why not assume the python handler does not
|
2008-09-29 02:51:09 +00:00
|
|
|
override?
|
|
|
|
|
|
|
|
|
|
The overall concept of overriding from scripts and also from handlers
|
|
|
|
|
probably needs to be looked at.
|
|
|
|
|
|
2008-09-27 16:29:35 +00:00
|
|
|
Num property to implement stuff. Only works if it is installed as a class
|
|
|
|
|
property, otherwise does nothing. (Resets to one).
|
|
|
|
|
Value of one means nothing is sent.
|
|
|
|
|
Installing class causes instance property to be placed, but install is
|
|
|
|
|
not called on it.
|
|
|
|
|
|
|
|
|
|
Purge stackable.
|
|
|
|
|
|
|
|
|
|
Fix the stamina property, currently commented out.
|
|
|
|
|
|
2008-09-26 21:10:22 +00:00
|
|
|
Clear set ops out of tasks (in Character) and combat.
|
|
|
|
|
Can probably get rid of the hard Task pointer while at it.
|
|
|
|
|
|
|
|
|
|
In Plant.cpp a lot of properties are directly updated. Need to review
|
|
|
|
|
whether apply() and install have to be called on them.
|
|
|
|
|
|
|
|
|
|
Add an entity flag to indicate that the entity has been modified in
|
|
|
|
|
the python API, and on returning to core context an update needs to
|
|
|
|
|
be triggered.
|
|
|
|
|
|
|
|
|
|
Move requireSpecificProperty() and have it check on the defaults for
|
|
|
|
|
a default value.
|
|
|
|
|
|
|
|
|
|
Update Thing::updateProperties so it checks all properities to see whether
|
|
|
|
|
they've been written to the database. May need to trigger a database update.
|
|
|
|
|
|
|
|
|
|
Re-work the python wrappers to handle generating the necessary update flags
|
|
|
|
|
when modifying an IG entity. Complete different from the wrapper behavior
|
|
|
|
|
in the mind, which should probably no implement setattr at all.
|
|
|
|
|
It may need to generate Update or perhaps even Set operations as necessary.
|
|
|
|
|
|
2008-09-22 23:46:48 +00:00
|
|
|
Use a property flag for removing properties.
|
|
|
|
|
|
2008-09-22 20:57:40 +00:00
|
|
|
Fix up OutfitProperty to work with the modified API and conventions.
|
|
|
|
|
It can't really be a class property as it has entity refs, so I guess
|
|
|
|
|
it must be instance only. install() might like TerrainModPropery()
|
|
|
|
|
detect the case of a class version, and ensure that it is added as
|
|
|
|
|
an instance property.
|
|
|
|
|
|
2008-09-17 15:28:33 +00:00
|
|
|
Cutting down simulation cost when nothing is watching.
|
|
|
|
|
Gorgious. Send out a ping, and get back an estimate. at the simplest level
|
|
|
|
|
the simulation can continue, but decline to send out update ops. Kick off
|
|
|
|
|
an update in response to any subsequent look ops. Seq is being incremented
|
|
|
|
|
so Appearance will tell minds they need an update.
|
|
|
|
|
|
2008-09-16 18:44:52 +00:00
|
|
|
Make the overall movement model configurable. If a flat world is all that is
|
|
|
|
|
needed, there is no need to add more. In a fantasy MMO there is probably very
|
|
|
|
|
little need for more. There is a strong link here between this and the need
|
|
|
|
|
for persistence. If we only need character persistence, we can't really deal
|
|
|
|
|
with them having something other than the world as their LOC.
|
|
|
|
|
|
2008-12-11 18:27:11 +00:00
|
|
|
Define an operation which went sent returns the count of entities which
|
2008-09-15 11:15:11 +00:00
|
|
|
can see something, so we can suspend simulation.
|
|
|
|
|
|
2008-09-12 01:26:43 +00:00
|
|
|
If properties are responsible for their own serialisation, the represations
|
|
|
|
|
can be much more efficient.
|
|
|
|
|
|
2008-09-11 16:53:33 +00:00
|
|
|
Re-enable mapping of character to account.
|
|
|
|
|
|
2008-12-11 18:27:11 +00:00
|
|
|
Design a way to make only the starting POS and ORIENATION of an entity
|
2008-09-11 16:53:33 +00:00
|
|
|
storable.
|
|
|
|
|
|
|
|
|
|
Sort out enable_persitence. Purge the old code.
|
|
|
|
|
|
2008-09-10 14:18:10 +00:00
|
|
|
TerrainModProperty needs state, so it must be an instance property.
|
|
|
|
|
This can be handled in ::instal() once class properties are flagged.
|
|
|
|
|
|
2008-09-09 17:24:26 +00:00
|
|
|
Use database to allow characters to go offline.
|
|
|
|
|
|
2008-09-09 12:29:30 +00:00
|
|
|
Location is stil adding bbox data to RootEntity or MapType representations.
|
|
|
|
|
Stop, as this should be handled by the property.
|
|
|
|
|
|
2008-09-08 23:24:33 +00:00
|
|
|
Make sure all the places properties are set use one single way to do
|
|
|
|
|
it, ensuring the right calls get made to set it up.
|
|
|
|
|
|
|
|
|
|
Some entities (Character) may end up updating a class property and
|
|
|
|
|
then we get an error when the Update op arrives for an undiscovered
|
|
|
|
|
property. This also corrupts the class.
|
|
|
|
|
|
2008-09-08 12:03:15 +00:00
|
|
|
requireSpecificProperty installs new properties. Need to make sure it does
|
|
|
|
|
it correctly.
|
|
|
|
|
|
2008-09-08 11:49:22 +00:00
|
|
|
Think carefully about what happens when EntityBuilder::installFactory
|
|
|
|
|
calls Inheritance::addChild. If add child returns NULL, there
|
|
|
|
|
was something wrong with the factory installation and it should fail.
|
|
|
|
|
|
2008-09-08 Al Riddoch <alriddoch@googlemail.com>
* rulesets/ActivePropertyFactory_impl.h: Re-work the active property
factories so they just pass handler information to the property
classes rather than installing it themselves, so the property
can now handle installing the handlers each time they are installed
on an entity, making class default properties work.
* client/ClientPropertyManager.cpp, client/ClientPropertyManager.h,
common/PropertyFactory.h, common/PropertyFactory_impl.h,
common/PropertyManager.h, rulesets/ActivePropertyFactory.h,
server/CorePropertyManager.cpp, server/CorePropertyManager.h:
Modify the property manager and property factory interfaces so they
do not take a pointer to the owner, as this is never required any
more.
* rulesets/Character.cpp, rulesets/Entity.cpp: Modify code that uses
property managers to use the new interface.
* rulesets/SolidProperty.cpp, rulesets/SolidProperty.h: Make use of
the bool flag to implement this, preventing it from being tied to
having a pointer to the owner at creation time.
* rulesets/StatusProperty.cpp, rulesets/StatusProperty.h: Remove
the need for an owner pointer at construction time by using the
apply method.
* rulesets/TerrainModProperty.cpp, rulesets/TerrainModProperty.h:
Use new MultiActivePropertyManager and install method to handle
installing handlers rather than relying on the factory to do it.
* server/CorePropertyManager.cpp: Change many of the property
factories now that none get get an owner pointer.
* server/EntityFactory.cpp: Set up default properties on all type
nodes when a new class is installed, and don't apply instance
properties based on class defaults, relying on class properties.
* rulesets/Entity.cpp: Remove hard coded BBox property now that the
functionality is handled by a more special property.
2008-09-08 00:17:08 +00:00
|
|
|
isSimple() and isSolid() should be entity flags, once the collision
|
|
|
|
|
stuff is sorted.
|
|
|
|
|
|
|
|
|
|
Modify client code which inherits from Entity so it uses LocatedEntity
|
|
|
|
|
or summink instead, removing the need for ClientPropertyManager.
|
|
|
|
|
|
|
|
|
|
Fix the insert properry count. Incremented in the wrong place.
|
|
|
|
|
|
|
|
|
|
Use return value of Property::get to ensure we are not storing
|
|
|
|
|
worthless data in the properties table.
|
|
|
|
|
|
|
|
|
|
Check use of the property manager in Character when adding status property.
|
|
|
|
|
|
2008-09-06 19:06:53 +00:00
|
|
|
Implement flag_class in EntityBuilder.
|
|
|
|
|
|
2008-09-04 15:49:12 +00:00
|
|
|
Once things are sorted for the new property mechanism, with install and apply
|
|
|
|
|
implemented,
|
|
|
|
|
|
2008-09-04 09:41:06 +00:00
|
|
|
insertEntity and updateEntity are returning the bool result of scheduleCommand
|
|
|
|
|
incorrectly.
|
|
|
|
|
|
2008-09-03 23:12:14 +00:00
|
|
|
Perhaps we can use property flags for Update ops, rather then the cludgy
|
|
|
|
|
going through strings?
|
|
|
|
|
|
|
|
|
|
Remove assertion from CorePropertyManager that a property called objtype
|
|
|
|
|
can't be created.
|
|
|
|
|
|
2008-09-03 18:45:17 +00:00
|
|
|
Implement transient to avoid Database traffic.
|
|
|
|
|
|
2008-08-31 04:33:56 +00:00
|
|
|
Make sure the select fallback code handles congested and busy ok.
|
|
|
|
|
|
2008-08-29 16:06:59 +00:00
|
|
|
Sort out http connection with a configurable port.
|
|
|
|
|
|
2008-08-27 16:54:14 +00:00
|
|
|
Make it so classes inherit python scripts, now that the factory is independant
|
|
|
|
|
of atlas type name.
|
|
|
|
|
|
2008-08-22 19:35:08 +00:00
|
|
|
Need a property flag to indicate that it is new, rather than just dirty.
|
|
|
|
|
|
|
|
|
|
Make update interval has jitter on it, so we don't get spikey load.
|
|
|
|
|
|
2008-08-20 17:29:08 +00:00
|
|
|
Types should have integer IDs. Bootstrap type queries with well know IDs for basic types.
|
|
|
|
|
|
2008-01-28 Al Riddoch <alriddoch@googlemail.com>
* client/BaseClient.cpp, common/BaseEntity.cpp, common/BaseEntity.h,
common/Identified.cpp, common/Identified.h, common/Makefile.am,
common/OOGThing.cpp, common/OOGThing.h, common/OperationRouter.cpp,
common/OperationRouter.h, rulesets/Character.h, rulesets/Entity.h,
rulesets/LocatedEntity.cpp, rulesets/LocatedEntity.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/CommClient.cpp, server/CommClient.h, server/Connection.cpp,
server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
server/ExternalProperty.cpp, server/ExternalProperty.h,
server/Lobby.cpp, server/Lobby.h, server/Master.cpp, server/Master.h,
server/Peer.cpp, server/Peer.h, server/ServerRouting.cpp,
server/ServerRouting.h, server/SlaveClientConnection.cpp,
server/SlaveClientConnection.h: Factor out the more pointless base
classes, in favor of simple interface. Move destroyed signal to
Entity, which is the only place it is needed.
2008-01-28 23:48:30 +00:00
|
|
|
Admin Creator avatatar gets destroyed once it is no longer connected, but
|
|
|
|
|
it then calls Connection::removeObject() despite the Connection being
|
|
|
|
|
long gone.
|
|
|
|
|
|
2008-01-17 19:52:24 +00:00
|
|
|
Use a broadcast cost heuristic to determine how often movement updates should
|
|
|
|
|
done for an entity.
|
|
|
|
|
|
2008-01-17 16:42:23 +00:00
|
|
|
Migrate everything out of BaseEntity until nothing remains, at which point
|
|
|
|
|
rename it to IdentifiedRouter or something like that, inheriting from
|
|
|
|
|
Identified. LocatedEnity should eventually not inherit from it.
|
|
|
|
|
|
2008-01-12 18:08:03 +00:00
|
|
|
rename removePlayer to something more suitable.
|
|
|
|
|
|
2008-01-08 21:59:57 +00:00
|
|
|
Once defaults work, handle pulling from defaults in the SpecificProperty
|
|
|
|
|
templates.
|
|
|
|
|
|
2008-01-06 21:46:26 +00:00
|
|
|
Fix the issue of leaked sigc++ connections, as connections to tool.containered
|
|
|
|
|
are added, but never disconnected.
|
|
|
|
|
|
2008-01-06 14:59:17 +00:00
|
|
|
Fix the rest of defaults on the TypeNode.
|
|
|
|
|
|
|
|
|
|
Use onFoo() methods to implement some of the signals we expect.
|
|
|
|
|
|
2008-01-04 23:31:23 +00:00
|
|
|
Quaternion and BBox need to be more like Vector3D and Point3D, and all 4 should
|
|
|
|
|
really be in physics.
|
|
|
|
|
|
2007-12-31 13:48:57 +00:00
|
|
|
In a compound object, that contains sub-objects, COMPONENTS can be like
|
|
|
|
|
CONTAINS, but COMPONENTS do not have a separate existence. They are destroyed
|
|
|
|
|
if the entity is destroyed, and do not have globally addressable IDs.
|
|
|
|
|
They can still be represented by Entity, but won't be in the global ID
|
|
|
|
|
dictionary. This leads to the idea of a component property interface whcih
|
|
|
|
|
abstracts looking up component IDs. An accompanying stamp can reduce the
|
|
|
|
|
frequency with which clients need to inspect the components, as they should
|
|
|
|
|
change very infrequently.
|
|
|
|
|
|
|
|
|
|
SEQ is not being used in the memmap code, as it is not being set.
|
|
|
|
|
|
|
|
|
|
Re-write plant using properties when we can write scripts for property
|
|
|
|
|
handlers.
|
|
|
|
|
|
2007-12-31 02:13:07 +00:00
|
|
|
Character::m_rightHandWield needs to stop being hard coded. Should
|
|
|
|
|
be really easy to do. Make it a dynamic property always, add install
|
|
|
|
|
it as required.
|
|
|
|
|
|
2007-12-19 21:30:06 +00:00
|
|
|
B&W style village construction. Nursery, plus schools for training.
|
|
|
|
|
|
2007-12-09 22:22:05 +00:00
|
|
|
Re-factor abstract factories to be called Kits, and high level factories that
|
|
|
|
|
assemble arrangements of objects as Builders. Concrete factories can then
|
|
|
|
|
use the suffix factory.
|
|
|
|
|
|
2007-12-06 02:46:32 +00:00
|
|
|
Put locks around writing the user config file.
|
|
|
|
|
|
2007-12-04 00:26:48 +00:00
|
|
|
Move bbox out of Location, and make it a soft property only.
|
2007-12-02 Al Riddoch <alriddoch@zepler.org>
* client/CreatorClient.cpp, client/CreatorClient.h,
client/Py_CreatorClient.cpp, common/BaseWorld.h, common/types.h,
modules/Location.cpp, modules/Location.h,
rulesets/AtlasProperties.cpp, rulesets/AtlasProperties.h,
rulesets/BaseMind.cpp, rulesets/Character.cpp, rulesets/Character.h,
rulesets/Entity.cpp, rulesets/Entity.h,
rulesets/EntityProperties.cpp, rulesets/LocatedEntity.cpp,
rulesets/LocatedEntity.h, rulesets/MemEntity.cpp,
rulesets/MemEntity.h, rulesets/MemMap.cpp, rulesets/Motion.cpp,
rulesets/Motion.h, rulesets/Py_Location.h, rulesets/Py_Mind.cpp,
rulesets/Py_Thing.cpp, rulesets/Py_Thing.h,
rulesets/PythonMindScript.h, rulesets/PythonScript.h,
rulesets/PythonThingScript.cpp, rulesets/PythonThingScript.h,
rulesets/Python_API.cpp, rulesets/Script.cpp, rulesets/Script.h,
rulesets/Thing.cpp, rulesets/World.cpp, server/WorldRouter.cpp,
server/WorldRouter.h: Refactor all the entity code so there is now
a new base class for entities in the world simulation, and in the
mind which only contains things which are trully common to both.
This moves a lot of functionality which should not have been
present in mind entities away, and makes that code safer and more
efficient.
* tests/TestWorld.h: Update the test world API to match the base
class.
2007-12-02 23:49:05 +00:00
|
|
|
|
2007-12-04 19:18:17 +00:00
|
|
|
Add instance configuration support to tools and clients.
|
2007-12-07 00:31:37 +00:00
|
|
|
|
2007-12-04 19:18:17 +00:00
|
|
|
Add setting for config file.
|
2007-12-07 00:31:37 +00:00
|
|
|
|
|
|
|
|
openID, libopkele
|
2007-12-05 02:52:53 +00:00
|
|
|
echo -n 'username:phpMyID:password' | openssl md5
|
2007-12-02 Al Riddoch <alriddoch@zepler.org>
* client/CreatorClient.cpp, client/CreatorClient.h,
client/Py_CreatorClient.cpp, common/BaseWorld.h, common/types.h,
modules/Location.cpp, modules/Location.h,
rulesets/AtlasProperties.cpp, rulesets/AtlasProperties.h,
rulesets/BaseMind.cpp, rulesets/Character.cpp, rulesets/Character.h,
rulesets/Entity.cpp, rulesets/Entity.h,
rulesets/EntityProperties.cpp, rulesets/LocatedEntity.cpp,
rulesets/LocatedEntity.h, rulesets/MemEntity.cpp,
rulesets/MemEntity.h, rulesets/MemMap.cpp, rulesets/Motion.cpp,
rulesets/Motion.h, rulesets/Py_Location.h, rulesets/Py_Mind.cpp,
rulesets/Py_Thing.cpp, rulesets/Py_Thing.h,
rulesets/PythonMindScript.h, rulesets/PythonScript.h,
rulesets/PythonThingScript.cpp, rulesets/PythonThingScript.h,
rulesets/Python_API.cpp, rulesets/Script.cpp, rulesets/Script.h,
rulesets/Thing.cpp, rulesets/World.cpp, server/WorldRouter.cpp,
server/WorldRouter.h: Refactor all the entity code so there is now
a new base class for entities in the world simulation, and in the
mind which only contains things which are trully common to both.
This moves a lot of functionality which should not have been
present in mind entities away, and makes that code safer and more
efficient.
* tests/TestWorld.h: Update the test world API to match the base
class.
2007-12-02 23:49:05 +00:00
|
|
|
|
|
|
|
|
Separate functionality for removing from container, and adding to new
|
|
|
|
|
container.
|
2007-11-28 21:28:47 +00:00
|
|
|
|
2007-11-23 12:28:07 +00:00
|
|
|
Modify security in NPCMind so we can do the goals without broadcasting the
|
|
|
|
|
talk ops. Use the TO on the Talk op to determine if this is an admin op,
|
|
|
|
|
so that clients can redirect ops easily. Need to verify that checking
|
|
|
|
|
Sound.FROM is the only reason interlinguish functions need the op. It
|
|
|
|
|
may be possible to get rid of passing in orignal_op completely.
|
|
|
|
|
|
2007-11-23 11:46:48 +00:00
|
|
|
New Atlas-C++ has no inheritance tree, just one class in Objects. Instead
|
|
|
|
|
it has function to create the instances, which create the defaults object
|
|
|
|
|
if required, pass it in, and return a smartptr to an instance from the pool.
|
|
|
|
|
Convenience versions of these function could take op arguments for operations,
|
|
|
|
|
or IDs or the like for entities.
|
|
|
|
|
|
|
|
|
|
Activations should use type nodes perhaps.
|
|
|
|
|
|
|
|
|
|
Check if SECONDS is set before using it? All ops in basemind should do this.
|
2007-11-23 11:19:41 +00:00
|
|
|
|
2007-11-22 01:14:47 +00:00
|
|
|
Add an argument to Location::addToEntity which specifies which need to be
|
|
|
|
|
set as zero values of they are not set. This should make it easier to
|
|
|
|
|
deal with the concept of POSless entities, and perhaps entities without
|
|
|
|
|
velocity. Would be nice to get rid of any situation where something has
|
|
|
|
|
zero velocity, as this is annoying to have to check for.
|
|
|
|
|
|
2007-11-22 00:43:40 +00:00
|
|
|
Fix new PythonArithmeticScript() from being leaked. ArithmeticFactory(124)
|
|
|
|
|
Shader surfaces are being leaked from TerrainProperty::set(130)
|
|
|
|
|
|
2007-11-15 02:07:04 +00:00
|
|
|
Switch over to using Atlas::Objects as the fundamental unit in the objects
|
|
|
|
|
code. Needs AtlasFileLoader to be converted over. This is the best first step
|
|
|
|
|
before we have a type tree. Done. Now get rules loading from the Database once
|
2007-11-15 15:56:30 +00:00
|
|
|
more, as the database code insists on MapType. Could we store the attribute
|
|
|
|
|
defaults in the Atlas default type thingy? Would this cause problems?
|
2007-11-16 02:41:38 +00:00
|
|
|
So, when we are creating a Atlas::Objects::Anonymous instances, need to
|
2007-11-22 01:14:47 +00:00
|
|
|
be able to set up the default object so it just works. A barrier to this being
|
|
|
|
|
really useful is the way Atlas-C++ currently handles defaults. It does not send
|
|
|
|
|
them at all. Need to modify so it sends them if they have been flagged on
|
|
|
|
|
the defaults object. Default to not flagging, and then modify sending behavoir.
|
|
|
|
|
Think about using an inherited interface to prevent calling getName()
|
|
|
|
|
which might cause a crash.
|
2007-11-15 02:07:04 +00:00
|
|
|
|
2007-11-02 17:02:11 +00:00
|
|
|
Core cyphesis daemon is very simple and robust. Never crashes. It launches
|
|
|
|
|
and monitors and number of child daemons. Simplest configuration is a single
|
|
|
|
|
child daemon. It reads and parses the config mostly for checking purposes.
|
|
|
|
|
Write common infrastructure which can check the contents of the config
|
|
|
|
|
for errant values, and report them. Use the current help data structures.
|
|
|
|
|
There should in the eventual configuration be one watcher daemon, one
|
|
|
|
|
simulation daemon, one persistor daemon, and one spatial processing daemon per
|
|
|
|
|
CPU. Simulation should be network bound, peristence should be disk bound, and
|
|
|
|
|
spatial should be CPU bound.
|
|
|
|
|
|
|
|
|
|
Experiment with factory base classes. Can we have a base class for BaseEntity,
|
|
|
|
|
inherit from it overriding with a function that returns Entity.
|
|
|
|
|
|
2007-10-17 22:20:47 +00:00
|
|
|
Datagram classes in skstream, Address classes in skstream. Datagram can be
|
|
|
|
|
sent to an address, without re-encoding. Datagram can be treated as stream.
|
|
|
|
|
Address can encapsulate getaddrinfo results, or stand alone endpoints.
|
|
|
|
|
|
2007-10-01 04:57:15 +00:00
|
|
|
There need to be two different filters on movement. The first pass should
|
|
|
|
|
determine what is possible given the desired input. The second should
|
|
|
|
|
determine side effects of the movement. Can we really separate them, given
|
|
|
|
|
that the side effects modify the effort and possibility of the movement?
|
|
|
|
|
|
|
|
|
|
Blocking movement thingies are going to have to go. Handling move ops should
|
|
|
|
|
just schedule the move. We pass to some collision subsystem, and then send
|
|
|
|
|
the result once the result it back.
|
|
|
|
|
|
2007-09-25 09:12:16 +00:00
|
|
|
Make IGEntityExerciser succeed in stimulating the Create op.
|
|
|
|
|
Make IGEntityExerciser succeed in stimulating the Move op.
|
|
|
|
|
|
2007-09-24 13:00:41 +00:00
|
|
|
Create a simple class that fully encapsulates having a python script in
|
|
|
|
|
a general way, which can then be used by entity, task, statistics etc.
|
|
|
|
|
|
2007-07-30 11:27:34 +00:00
|
|
|
EntityFactory has got really convoluted. Try and verify that the same things
|
|
|
|
|
are done when a tool is updated as when it is loaded. May be good to break
|
|
|
|
|
things down into smaller functions.
|
|
|
|
|
|
2007-07-30 01:54:25 +00:00
|
|
|
script_factory->refreshClass is called before populateFactory(). Seems weird.
|
|
|
|
|
Surely the script might have been changed? If it has, what causes it to be
|
|
|
|
|
loaded?
|
|
|
|
|
|
2007-07-17 17:13:25 +00:00
|
|
|
Fill out auto activation op stuff. Now that operations is automatic,
|
|
|
|
|
need to ensure children inherit the behavior as well as the value, which
|
|
|
|
|
requires some work on the activations.
|
2007-07-17 02:26:43 +00:00
|
|
|
|
|
|
|
|
In EntityFactory, we should abort a task install if the target does not exist.
|
|
|
|
|
|
2007-07-16 22:56:34 +00:00
|
|
|
Add unit tests to make sure rule install order with multiple dependencies
|
|
|
|
|
is okay.
|
|
|
|
|
|
2007-07-08 19:55:28 +00:00
|
|
|
Write a task to beat down fire with shovel.
|
|
|
|
|
|
|
|
|
|
Specify contents of the house in the class rule, rather than using the script
|
|
|
|
|
to create it. Contained entity data format again, just like blueprint.
|
|
|
|
|
CONSTITUANTS?
|
|
|
|
|
|
|
|
|
|
Add a transient property which indicates that something does not last, and
|
|
|
|
|
should not be persisted. This would allow most of the seed scripts to be
|
|
|
|
|
removed.
|
|
|
|
|
|
2007-07-07 03:04:05 +00:00
|
|
|
There is a chance something could get screwed up in waitingRules.
|
|
|
|
|
If something depends on two classes, and the second is not present the first
|
|
|
|
|
time it fires, m_waitingRules will get modified mid iteration, and then
|
|
|
|
|
the waiting item will get removed despite the fact that is has not been
|
|
|
|
|
installed.
|
|
|
|
|
|
2007-07-06 16:36:12 +00:00
|
|
|
When a task cannot be installed because of pre-reqs, record the error so
|
|
|
|
|
it can be reported.
|
|
|
|
|
|
2007-07-06 14:58:28 +00:00
|
|
|
Push to remove the world class, making it all more driven by data behavior.
|
|
|
|
|
|
2007-07-04 22:00:14 +00:00
|
|
|
POS can't change in Dig and Delve, so make them irrelevant if its not the right
|
|
|
|
|
kind of terrain.
|
|
|
|
|
|
2007-07-04 21:21:34 +00:00
|
|
|
Add range check to Dig and Delve, and see if it can be done more generally.
|
|
|
|
|
|
2007-07-02 18:18:10 +00:00
|
|
|
Re-write goals for butcher so they now interact correctly with the task
|
|
|
|
|
implementation.
|
|
|
|
|
|
2007-06-20 15:28:30 +00:00
|
|
|
GetOp is not part of IG, so illustrates for OOG dispatch to be different from
|
|
|
|
|
IG.
|
|
|
|
|
|
2007-06-18 17:46:14 +00:00
|
|
|
Apply behavior to newly created skellys. Now that the mind classes have been
|
|
|
|
|
removed, skeletons need goals to do anything.
|
|
|
|
|
|
2007-06-15 10:11:40 +00:00
|
|
|
Implement blocking rules until all associated rules can be verified so
|
|
|
|
|
tasks can't get installed without their activation ops and classes existing.
|
|
|
|
|
|
2007-06-12 19:34:48 +00:00
|
|
|
self.progress seems to start out at -2 in Slice. Uninitialised?
|
|
|
|
|
|
2007-05-03 11:13:10 +00:00
|
|
|
Add a way to handle per-host config in a single config file.
|
|
|
|
|
|
2007-05-02 00:17:52 +00:00
|
|
|
Fix parameter lookup in varconf.
|
|
|
|
|
|
2007-04-28 15:11:10 +00:00
|
|
|
Add a call to Atlas-C++ which takes a bit field of attribute bits, and returns
|
|
|
|
|
a bitfield of attribute bits that was requested but not present. Reduces
|
|
|
|
|
error checking complexity loads.
|
|
|
|
|
|
2007-04-14 16:14:25 +00:00
|
|
|
Pig seller seems to assume he is being given coins when actually they
|
|
|
|
|
are being handed round by other people.
|
|
|
|
|
|
2007-04-23 23:42:38 +00:00
|
|
|
Look up in Python Nutshell and read up on ref-counting + exceptions. Read
|
2007-03-22 20:19:23 +00:00
|
|
|
whole section on embedding.
|
|
|
|
|
|
2007-02-20 01:12:48 +00:00
|
|
|
ServerRouting owns accounts currently, so have it encapsulate the whole
|
|
|
|
|
database thing. Check if the findAccount test is a good reason not to do
|
|
|
|
|
this.
|
|
|
|
|
|
2007-02-15 02:18:45 +00:00
|
|
|
metaserver needs to reinitialise if bind is lost.
|
|
|
|
|
|
2007-02-13 15:15:06 +00:00
|
|
|
Make sure autopackage uses /var/tmp rather than PREFIX/var/tmp
|
|
|
|
|
|
2007-02-06 17:09:40 +00:00
|
|
|
Instrument BaseMind/MemMap to detect mutiple additions of the same thing
|
|
|
|
|
to the same mind.
|
|
|
|
|
|
|
|
|
|
Make it easier to use cypasswd to elevate privs.
|
|
|
|
|
|
|
|
|
|
Add ability to create other types of avatar.
|
|
|
|
|
|
2007-02-06 15:53:10 +00:00
|
|
|
Investigate -static-libgcc for partially static version of binaries for
|
|
|
|
|
distribution.
|
|
|
|
|
|
2007-01-29 03:43:22 +00:00
|
|
|
autopackage should start server
|
|
|
|
|
|
2007-01-29 01:08:51 +00:00
|
|
|
Set up python environment during test, so they import from the source tree.
|
|
|
|
|
|
2007-01-22 19:01:01 +00:00
|
|
|
Find out why locks up when it can't load ruleset.
|
|
|
|
|
|
2007-01-19 14:23:40 +00:00
|
|
|
Add a new kind of programmable mind, for babysitting player characters.
|
|
|
|
|
|
2007-01-19 14:20:50 +00:00
|
|
|
Provide python access to the game config.
|
|
|
|
|
|
2007-01-17 23:00:56 +00:00
|
|
|
Prevent soft attributes being set with the names of known properties.
|
|
|
|
|
|
|
|
|
|
Set name from client.
|
|
|
|
|
|
2007-01-16 01:07:46 +00:00
|
|
|
Setting attributes needs to be re-done more complex. Reporting divided
|
|
|
|
|
into scopes, and reporting done based on what really happened, not what
|
|
|
|
|
the Set wanted to happen.
|
|
|
|
|
|
2007-01-14 21:55:21 +00:00
|
|
|
Move the stuff that generates vast quantity of test Atlas data into
|
|
|
|
|
its own class, so other things can use it.
|
|
|
|
|
|
2007-01-11 23:52:14 +00:00
|
|
|
Complete the work on property exercising tests.
|
|
|
|
|
|
|
|
|
|
Fix python code which uses PyMem_DEL to use PyObject_Del which is the
|
|
|
|
|
right thing now.
|
|
|
|
|
|
|
|
|
|
Minds are getting properties from the core factory, because it is now accessed
|
|
|
|
|
as a singleton. This cannot stand.
|
|
|
|
|
|
2007-01-11 00:27:40 +00:00
|
|
|
Add a humanoid base class, putting default character bbox and the like in
|
|
|
|
|
there, plus decays="skull".
|
|
|
|
|
|
|
|
|
|
If I attach a property that listens out for delete ops, and creates things,
|
|
|
|
|
do the returned ops still work okay? Ie does the deleted entity stick
|
|
|
|
|
around long enough for the operation to get dispatched, even though it has
|
|
|
|
|
been removed from the world map. If so, could use this to handle creating
|
|
|
|
|
corpse, bones etc.
|
|
|
|
|
|
|
|
|
|
Implement some kind of helper mechanism which monitors ops going to the client
|
|
|
|
|
and if some match a certain template, it sends hints in the form of emotes.
|
|
|
|
|
|
2007-01-08 03:28:07 +00:00
|
|
|
Move metabolism into a property, ensuring that Character becomes a cleaner
|
|
|
|
|
class. Implement death better, creating a skeleton with a named skull.
|
|
|
|
|
Mod the lich code to use the name on the skull when creating the skeleton.
|
|
|
|
|
|
2007-01-05 03:17:08 +00:00
|
|
|
Take another look at the scheme used in mind code to purge entities
|
|
|
|
|
it thinks are bad.
|
|
|
|
|
|
2007-01-05 00:05:45 +00:00
|
|
|
Add an operation to account allowing the client to add a mind to its
|
|
|
|
|
Character. When a Character has internal and external mind, ops from the
|
|
|
|
|
internal mind should go only to the externalMind.
|
|
|
|
|
|
2007-01-02 20:34:49 +00:00
|
|
|
Add an option to put a python console on stdio. See PyRun_InteractiveOneFlags
|
|
|
|
|
to see an example of a functio which takes a line, and executes it in
|
|
|
|
|
the way that the interactive interpretter does.
|
|
|
|
|
|
2007-01-03 21:55:30 +00:00
|
|
|
Implement GUISE property.
|
2007-01-01 23:46:22 +00:00
|
|
|
|
2006-12-30 23:13:32 +00:00
|
|
|
Atlas::Message::Element has TYPE_NONE, so we have a conceivable way
|
|
|
|
|
to signal clearing of an attribute. Basically only possible soft attributes
|
|
|
|
|
unless we want to make the Atlas::Objects code hideous. If we are going to
|
|
|
|
|
find a way to signal this to the client, we need to add it to Atlas-C++.
|
|
|
|
|
|
2006-12-30 03:55:37 +00:00
|
|
|
How do we clear a Property if it is specified by Update arg, but is no
|
|
|
|
|
longer set to anything? Need a way for force it.
|
|
|
|
|
|
2006-12-29 18:48:04 +00:00
|
|
|
Make updateProperties read-only perhaps? Needs to clean out properties.
|
|
|
|
|
|
2006-12-29 01:16:54 +00:00
|
|
|
In GuiseProperty, need to ensure that Set operation is simply a trigger
|
|
|
|
|
for an update, so we can do things efficiently. A signal triggered
|
|
|
|
|
by destruction or container change should trigger a Set(guis={}) which
|
|
|
|
|
once it gets to the SetOperation handler gets its arg re-written, I guess
|
|
|
|
|
the only option is the complete value.
|
|
|
|
|
|
2006-12-26 Al Riddoch <alriddoch@zepler.org>
* client/CharacterClient.cpp, client/ClientConnection.h,
rulesets/Character.cpp, rulesets/Character.h, tools/cyaddrules.cpp,
tools/cyconfig.cpp, tools/cyconvertrules.cpp, tools/cyctrl.cpp,
tools/cydumprules.cpp, tools/cyloadrules.cpp, tools/cypasswd.cpp:
Add inline documentation.
* client/CharacterClient.h, client/CharacterClient.cpp: Remove
overriden sight operation handlers, as they are no longer
present in the base class, and will never be called.
* client/ClientConnection.h: Remove obsolete unimplemented template
declaration.
* rulesets/Entity.cpp: Remove documentation for an argument that was
never there.
* tools/cyctrl.cpp: Mark as removed from the build.
* Add a FIXME about removing hard coded gender property
2006-12-26 18:24:24 +00:00
|
|
|
Strip most operations out of the mindFooOperation() interface, as all soft
|
|
|
|
|
ops now go via scripts, if at all.
|
|
|
|
|
|
2006-12-26 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h,
client/ClientConnection.cpp, common/AtlasFileLoader.cpp,
common/AtlasFileLoader.h, common/BaseEntity.cpp, common/BaseEntity.h,
common/Property.h, common/accountbase.cpp, common/accountbase.h,
rulesets/ActivePropertyFactory.h,
rulesets/ActivePropertyFactory_impl.h, rulesets/Area.cpp,
rulesets/Area.h, rulesets/AreaProperty.cpp, rulesets/AreaProperty.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h, server/Account.cpp,
server/Admin.cpp, server/Admin.h, server/ArithmeticFactory.h,
tests/Makefile.am, tools/AdminClient.cpp, tools/AdminClient.h,
tools/cycmd.cpp: Add inline documentation.
* rulesets/ActivePropertyFactory.h: Use handler function pointer
typedef for readability.
* rulesets/AreaProperty.cpp, rulesets/AreaProperty.h: Fix PropertyBase
overriding by adding const to the right methods.
2006-12-26 14:30:42 +00:00
|
|
|
Make sure all properties override correctly. Check const.
|
|
|
|
|
|
2006-12-24 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.h, client/Py_CreatorClient.h,
common/BaseEntity.cpp, common/PropertyFactory.h,
common/PropertyManager.cpp, common/PropertyManager.h,
rulesets/ArithmeticScript.h, rulesets/Py_BBox.h,
rulesets/Py_EntityWrapper.h, rulesets/Py_Location.h,
rulesets/Py_Map.h, rulesets/Py_Mind.h, rulesets/Py_Object.h,
rulesets/Py_Operation.h, rulesets/Py_Oplist.h, rulesets/Py_Point3D.h,
rulesets/Py_Property.h, rulesets/Py_Quaternion.h,
rulesets/Py_RootEntity.h, rulesets/Py_Task.h, rulesets/Py_Thing.h,
rulesets/PythonArithmeticScript.cpp,
rulesets/PythonArithmeticScript.h, rulesets/PythonThingScript.cpp,
rulesets/PythonThingScript.h, server/Account.h,
server/ArithmeticFactory.cpp, server/ArithmeticFactory.h,
server/Player.h, server/ServerRouting.cpp, server/ServerRouting.h,
server/TaskFactory.h: Add more inline documentation. Harmonise
argument names, and move documentation comments into base classes
as necessary.
* FIXME: More notes on a factory related fixme.
* TODO: Add more stuff to do.
2006-12-24 17:18:54 +00:00
|
|
|
Look at PyOplist and see if it would be better to embed the object rather than
|
|
|
|
|
have a pointer.
|
|
|
|
|
|
2006-12-13 00:00:10 +00:00
|
|
|
Consider, can we pre-fetch and cache the python object involved in calling a
|
|
|
|
|
hook?
|
|
|
|
|
|
2006-12-11 23:03:20 +00:00
|
|
|
Plough field, grow veggies. Carrot turnip.
|
|
|
|
|
|
2006-12-05 06:48:57 +00:00
|
|
|
Add code to EntityPropertytest to cover setting by ID.
|
|
|
|
|
|
2006-11-05 21:32:47 +00:00
|
|
|
Can we make client connection code more generic, getting rid of the
|
|
|
|
|
nasty merged TCP / UNIX stuff, and sharing code between tools and client.
|
|
|
|
|
Perhaps even totally generic for server and client.
|
|
|
|
|
|
2006-10-25 22:10:31 +00:00
|
|
|
Add log rotation /etc/logrotate.d/foo to rpm.
|
|
|
|
|
|
2006-10-25 18:06:39 +00:00
|
|
|
Improve pig death handling. Death is effectively just removing the mind
|
|
|
|
|
state, so do so. Also think about disconnecting the incoming side
|
|
|
|
|
of external mind. Perhaps interact in some way with the movement state?
|
|
|
|
|
|
2006-10-19 22:05:35 +00:00
|
|
|
Ad physical constraints system, which if move op comes, it is filtered
|
|
|
|
|
or transformed by it. For example, in a structure, elements of that
|
|
|
|
|
structure would be contrained so that they translated move ops into
|
|
|
|
|
move ops of their parent entity, the structure itself. This should be
|
|
|
|
|
possible using the generic idea of properties that handle operations,
|
|
|
|
|
and gives us a use case example for how a given property might need
|
|
|
|
|
to filter or override an operation.
|
|
|
|
|
|
2006-10-16 00:52:45 +00:00
|
|
|
datagram notes: see skstream TODO. Idea: When a broadcast op arrives at
|
|
|
|
|
the Connection, route it to an object handling datagram comms for a given
|
|
|
|
|
set of clients, and it caches the object, and notes the target address.
|
|
|
|
|
It then builds a pool of target addresses for the cached op as the
|
|
|
|
|
op is broadcast around the clients, and then later, in the socket loop
|
|
|
|
|
code, it then handles sending the data out. Alternatively it could
|
|
|
|
|
serialise when it first gets the op, and cache the serialised data
|
|
|
|
|
in the stream, noting the identity of the operation so that it can
|
|
|
|
|
resend it. As long as it holds the operation smart pointer, no
|
|
|
|
|
other operation can arrive with the same address, although another one
|
|
|
|
|
later may easily have the same address once the smartptr releases to the
|
|
|
|
|
memory pool. As soon as another op arrives for transmission, it should be
|
|
|
|
|
okay to release the previous one, as it is not coming back.
|
|
|
|
|
|
2006-10-09 18:30:23 +00:00
|
|
|
Why handle sight_create_operation in NPCMind when the implementation in
|
|
|
|
|
BaseMind does everything fine, and we can handle the ownership in the
|
|
|
|
|
add_map() hook?
|
|
|
|
|
|
|
|
|
|
Should Unseen be handled in BaseMind -> MemMap rather than taking the
|
|
|
|
|
hit in the python code?
|
|
|
|
|
|
2006-10-09 02:07:29 +00:00
|
|
|
Replace hasAttrFlag which isDefaultFoo for efficiency.
|
|
|
|
|
|
|
|
|
|
rootWorldId should be a parameter to WorldRouter, not hardcoded.
|
|
|
|
|
|
|
|
|
|
Make ServerRouting pluggable by replacing with NodeRouting subclass, or
|
|
|
|
|
something, which might contain more stuff to handle being a node in a
|
|
|
|
|
distributed server. Might also be necessary to replace WorldRouter, which
|
|
|
|
|
will be no problem, as everything currently refers to it by its base class.
|
|
|
|
|
|
2006-09-17 22:45:38 +00:00
|
|
|
Fix appear disappear for instantaneous edit move ops.
|
|
|
|
|
|
2006-08-15 14:21:19 +00:00
|
|
|
map and list attributes on python objects are a problem, because the
|
|
|
|
|
wrappers copy then in getattr, meaning that modifications are lost.
|
|
|
|
|
|
2006-08-09 00:42:43 +00:00
|
|
|
Key player owned property, like houses and mounts should perhaps be listed
|
|
|
|
|
in the account charlist, and thus in the connection objects list, allowing
|
|
|
|
|
direct external control.
|
|
|
|
|
|
2006-08-08 11:36:49 +00:00
|
|
|
Read readline docs, and sort out good way of ensuring output does
|
|
|
|
|
not mess up prompt.
|
|
|
|
|
|
2006-08-07 15:57:22 +00:00
|
|
|
Make sure client can't get the impression it has taken over a non character
|
|
|
|
|
entity.
|
|
|
|
|
|
2006-08-07 11:08:39 +00:00
|
|
|
In next series, PARENTS on Atlas objects should be a vector.
|
|
|
|
|
|
2006-07-22 19:24:34 +00:00
|
|
|
Make logging task rotate the tree to flat over a tick interval, which
|
|
|
|
|
removes the issue of the progress glitching half way through the task,
|
|
|
|
|
as long as the rate is set to zero for the tick while the tree falls.
|
|
|
|
|
|
2006-08-01 13:49:48 +00:00
|
|
|
When dispatching a unicast op`to an entity, check if its
|
2006-07-20 20:36:26 +00:00
|
|
|
flags change for zero to non-zero as a result, and if so, add it to a queue
|
|
|
|
|
to be commited to database later. This even allows for immediate effect
|
|
|
|
|
ops to be grouped into a transaction perhaps. It might be necessary or
|
|
|
|
|
apropriate to guarantee that immediate ops are dispatched immediatly
|
|
|
|
|
rather than returning to idle if a certain number of ops occur.
|
|
|
|
|
|
2006-07-15 00:43:15 +00:00
|
|
|
Implement stacking basics with the active code in a property, and wrappers
|
|
|
|
|
in a base C++ class. Once properties can directly handle ops, less of a
|
|
|
|
|
problem, and the base class goes away. Stacking is explicit and driven by
|
|
|
|
|
mind and client.
|
|
|
|
|
|
2006-07-11 14:24:26 +00:00
|
|
|
Remove scriptSubscribe functions.
|
|
|
|
|
|
2006-07-03 01:29:07 +00:00
|
|
|
Get rid of Entity::m_attributes by making a SoftProperty class for adding
|
|
|
|
|
arbitrary properties to entities. Saves some lookups I think.
|
|
|
|
|
|
2006-06-22 23:39:59 +00:00
|
|
|
Combine and Divide need to ensure the atomicity of the operation, ensuring
|
|
|
|
|
that if creation fails, the whole thing fails. Without its not safe. Should
|
|
|
|
|
either allow changes to the original entities to be specified?
|
2006-06-21 01:45:18 +00:00
|
|
|
|
2006-06-21 01:44:29 +00:00
|
|
|
Add a task to cut things in half, to be used on materials.
|
|
|
|
|
Take a unit vector vertically upwards, transform by the entities transform
|
|
|
|
|
and use the resulting vector to determine which way is up. This axis and
|
|
|
|
|
the axis which closely matches the direction of the acting entity to the
|
|
|
|
|
centre of the material will be used. The position of the cut is defined by
|
|
|
|
|
the position clicked on, and the width of the cut should be defined in the
|
|
|
|
|
script somewhere.
|
|
|
|
|
|
2006-06-19 17:21:46 +00:00
|
|
|
Add trenching rule, and perhaps think about a generic task that can allow
|
|
|
|
|
someone to help someone else do the task they are doing.
|
|
|
|
|
|
2006-06-16 21:47:11 +00:00
|
|
|
Add property system, with property classes registered with entity factory,
|
|
|
|
|
and stored in the entity class object. Implementation should avoid looking up
|
|
|
|
|
excessively in dictionaries at entity instance time. Instead the work should
|
|
|
|
|
be done at class creation time. In the long term, properties defined by
|
|
|
|
|
scripts should be required. Reduce the role of C++ inheritance in what
|
|
|
|
|
properties things have, and instead put more on the bass class, and perhaps
|
|
|
|
|
use flags to indicate whether they are in use.
|
|
|
|
|
|
2006-05-24 20:29:32 +00:00
|
|
|
Make use of wrapTask().
|
|
|
|
|
|
2006-05-16 21:44:26 +00:00
|
|
|
Hmm, when logging out an account, the characters from that account, do
|
2006-07-11 00:09:24 +00:00
|
|
|
they remain in the connections dictionary? Is this bad?
|
2006-05-16 21:44:26 +00:00
|
|
|
|
2006-05-15 01:31:13 +00:00
|
|
|
Separate out IG_OP_SWITCH from OOG_OP_SWITCH. Very little overlap.
|
2006-08-02 09:59:02 +00:00
|
|
|
IG Does not have: GET, ERROR, INFO, LOGIN, LOGOUT, USE??? (should fix),
|
|
|
|
|
ADD, CUT
|
|
|
|
|
OOG Does not have: ACTION, APPEARANCE, DISAPPEARANCE, COMBINE, DELETE,
|
|
|
|
|
DISAPPEARANCE, DIVIDE, ERROR, INFO, MOVE, SIGHT,
|
|
|
|
|
SOUND, TOUCH, USE, WIELD, ADD, ATTACK, BURN,
|
|
|
|
|
CHOP, CUT, EAT, NOURISH, SETUP, TICK, UPDATE
|
2006-05-15 01:31:13 +00:00
|
|
|
|
2006-05-14 02:26:17 +00:00
|
|
|
The w2m*Operation code does only 2 things:
|
|
|
|
|
It checks for Setup and Tick ops whether they are for the mind, which
|
|
|
|
|
we can do in the mind code.
|
|
|
|
|
|
|
|
|
|
It filters based on drunkness.
|
|
|
|
|
Both can go, removing the mechanism altogether.
|
|
|
|
|
|
2006-05-31 17:43:39 +00:00
|
|
|
STUN can be used for NAT detection. Useful? UDP only. Still useful.
|
2006-05-14 02:26:17 +00:00
|
|
|
|
2006-05-09 00:14:34 +00:00
|
|
|
Perhaps it should be possible to specify class data about the hard coded
|
|
|
|
|
classes in data/*,xml.
|
|
|
|
|
|
2006-05-09 00:11:48 +00:00
|
|
|
In order to store class related stuff without having to store it on
|
|
|
|
|
the instance, might need to have a type class which each Entity has
|
|
|
|
|
a pointer to. Should it also be possible to specifiy different statistics
|
|
|
|
|
classes in data/*.xml?
|
|
|
|
|
|
2006-05-09 00:04:36 +00:00
|
|
|
Add a base class for all active mobile characters in mason.xml, and set
|
|
|
|
|
up the essential statistics values. I am not sure but there may still be
|
|
|
|
|
issues with specifying class inheritance in the rules.
|
|
|
|
|
|
2006-05-06 Al Riddoch <alriddoch@zepler.org>
* common/Database.cpp, common/newid.cpp, server/server.cpp:
Modify new ID checks so that code still runs when database is
unavailable, and events requiring new IDs fail cleanly.
* server/Connection.cpp: Report a failure to create a player
account if no ID available.
* rulesets/BaseMind.cpp: When processing appearance ops, handle
stamp more efficiently, report an error if ID is missing
from argument.
* server/IdlePSQLConnector.cpp, server/IdlePSQLConnector.h:
Implement re-connecting to the Database if connection is lost.
* rulesets/Character.cpp, rulesets/Entity.cpp, rulesets/Thing.cpp:
Ensure STAMP is present on appearance op args.
* server/CommListener.cpp, server/CommListener.h,
server/CommPeerListener.cpp, server/CommPeerListener.h,
server/CommSlaveListener.cpp, server/CommSlaveListener.h,
server/CommUnixListener.cpp, server/CommUnixListener.h:
Add a return value to method for creating new client socket
objects, and use it to return failure if no ID is available
from the database for a new object.
* rulesets/Py_Point3D.cpp, rulesets/Py_Vector3D.cpp,
rulesets/Python_API.cpp: Add "new" method for class wrappers, and
call the in place constructor from new rather than init. Re-write
internal function for creating new instances so it uses the "new"
method.
* rulesets/Py_Statistics.cpp: Remove some obsolete code inadvertedly
copied from another file. Comment out some unused code to get rid
of a warning.
* server/CommPSQLSocket.cpp: Clear the database connection from
destructor.
* tests/python_class.cpp: A new test for experimenting with new
Python wrappers.
2006-05-06 21:36:57 +00:00
|
|
|
Test account and avatar creation from client when database is down.
|
|
|
|
|
|
|
|
|
|
Once SEQ has replaced STAMP in Atlas-C++, use it instead of serialno
|
|
|
|
|
in Tick op args.
|
|
|
|
|
|
|
|
|
|
Note that tp_new should do essential non-repeatable initialisation, like
|
|
|
|
|
calling in place constructor. Current newFoo() functions in the Python
|
|
|
|
|
API code do not cause the types tp_new or tp_init to be called. Need to
|
|
|
|
|
work out why, and see if changes are needed.
|
|
|
|
|
|
2006-04-26 15:21:15 +00:00
|
|
|
Add media for boots, bowl, cow, flower, hat, knife, leaf, loaf, statue, stool,
|
|
|
|
|
and longtable
|
|
|
|
|
|
2006-03-25 10:55:53 +00:00
|
|
|
Need to work out a sane way to handle udp socket for sending to multiple
|
|
|
|
|
clients quickly and efficiently.
|
|
|
|
|
|
2006-02-12 02:52:51 +00:00
|
|
|
Add short varconf args.
|
|
|
|
|
|
2006-02-11 04:09:16 +00:00
|
|
|
Make gobos rob after ganking.
|
|
|
|
|
|
2006-02-08 02:32:30 +00:00
|
|
|
Perhaps entities can have an Atlas Anonymous attached to avoid newly
|
|
|
|
|
constructing one every time look is called. Ref counting objects mean
|
|
|
|
|
no copy is required.
|
|
|
|
|
|
2006-01-26 01:43:58 +00:00
|
|
|
Add pickaxes, and trowels, and knowledge about tools to the tool merchant.
|
|
|
|
|
|
2006-01-22 18:07:43 +00:00
|
|
|
Sequence of events when database goes down:
|
|
|
|
|
|
|
|
|
|
2006:01:22 17:58:23 NOTICE DATABASE: FATAL: terminating connection due to administrator command
|
|
|
|
|
2006:01:22 17:58:23 ERROR Got database query complete when no query was pending
|
|
|
|
|
2006:01:22 17:58:37 ERROR newId(): Database query error.
|
|
|
|
|
2006:01:22 17:58:37 ERROR DATABASE: server closed the connection unexpectedly
|
|
|
|
|
This probably means the server terminated abnormally
|
|
|
|
|
before or while processing the request.
|
|
|
|
|
cyphesis: WorldRouter.cpp:288: virtual Entity* WorldRouter::addNewEntity(const std::string&, const Atlas::Objects::Entity::RootEntity&): Assertion `!id.empty()' failed.
|
|
|
|
|
2006:01:22 17:58:37 CRITICAL Aborted
|
|
|
|
|
|
|
|
|
|
Notice there is often a deley before the third event, but even so it might
|
|
|
|
|
be possible to bridge a gap in database availability with some kind of
|
|
|
|
|
local ID generation. Anyway, clearly we are notified that the database
|
|
|
|
|
is going down quite some time before it causes, so we should be able to do
|
|
|
|
|
something about trying to reconnect. Might need to separate the
|
|
|
|
|
server Database Idler from the Database socket, so the idler can manage
|
|
|
|
|
attempting to re-connect.
|
|
|
|
|
|
2006-01-22 02:13:52 +00:00
|
|
|
Code using "unit_vector_to.." is probably only working in the same
|
|
|
|
|
container, and should probably be fixed to work with distance_to().
|
|
|
|
|
|
2006-01-20 15:03:33 +00:00
|
|
|
In operation_new, and other places where keywords are used, iterate
|
|
|
|
|
over the keywords rather than checking for a number of values. Should be
|
|
|
|
|
more efficient, especially when the kwds are empty. Also allows errors to
|
|
|
|
|
be detected better.
|
|
|
|
|
|
2006-01-19 18:06:17 +00:00
|
|
|
Make more things emit suitable action operations, especially picking up,
|
|
|
|
|
dropping, and combat.
|
|
|
|
|
|
2006-01-12 17:58:14 +00:00
|
|
|
Character.statistics from python needs to use the statistics script to wrap
|
|
|
|
|
it.
|
2006-01-06 21:14:33 +00:00
|
|
|
|
|
|
|
|
Should be able to use PyModule_New() to add submodules to existing modules,
|
|
|
|
|
rather than the messy dictionary hack now used for some.
|
|
|
|
|
|
2006-01-04 15:06:46 +00:00
|
|
|
When checking type of a python object, use PyObject_TypeCheck() new in 2.2
|
|
|
|
|
especially when inheritance is involved.
|
|
|
|
|
|
2005-12-26 18:49:14 +00:00
|
|
|
With the new way python types are defined, it may be possible to get
|
|
|
|
|
rid of separate wrapper and script objects, and have the script inherit from
|
2005-12-30 Al Riddoch <alriddoch@zepler.org>
* rulesets/Character.cpp, rulesets/StatisticsProperty.h,
rulesets/StatisticsProperty.cpp: Add a property handler for
statistics.
* rulesets/Character.cpp: When setting task, check if an existing
task needs to be cleared first. When clearing a task, check
whether a task exists or not.
* rulesets/Character.cpp: When initiating combat task from task
factory, check to see if the task is successfully created before
using it.
* rulesets/Py_Property.cpp, rulesets/Py_Property.h: New python wrapper
class for entity properties.
* rulesets/Py_Mind.cpp: Re-work getattr logic to make it clearer.
* rulesets/Py_Object.cpp: Return Py_None when an Atlas Element cannot
be converted to python. This ensures that this function never returns
null.
* rulesets/Py_Statistics.cpp: Add temporary handlers for hardcoded
statistics for "attack", "defence", and "strength".
* rulesets/Py_Task.cpp: Add wrappers for methods Task.irrelevant and
Task.obsolete, as these are now required in combat scripts.
* rulesets/Py_Task.h: Fix the PyTask_Check macro, which was miscoded.
* rulesets/Py_Thing.cpp: Add wrapper for Entity.send_world so that
scripts can channel ops through entities.
* rulesets/Py_Thing.h, rulesets/Py_Thing.cpp: Add an addition structure
for directlty wrapping Character in a type safe way. Add method
structure pointer to Entity and Character wrappers so that
the same getattr method is used for both. Add new method table for
Character including wrappers for set_task and clear_task, allowing
task scripts to add themselves and remove themselves from
characters. Modify wrapEntity() to ensure that Character entities
get the right wrapper.
* rulesets/Py_Thing.cpp: Re-work getattr code so that properties and
soft attributes are checked individually, rather than in a single
call to Entity.get. Use new python property wrappers to wrap
properties explicitly if required rather than converting to Atlas
then to generic Python data.
* rulesets/TerrainProperty.h: Fix incorrect class description in
documentation.
* rulesets/mason/world/tasks/Combat.py: Complete implementation of
simple example combat.
* server/TaskFactory.cpp: Remove debug output.
2005-12-30 18:02:40 +00:00
|
|
|
the wrapper directly. The C++ pointer would have to be added to the structure
|
|
|
|
|
later, once the script object which inherits from the wrapper base class
|
|
|
|
|
has been returned. This means no access to the core object allowed during
|
|
|
|
|
__init__(). Problem may arrise when checking the type of the script to
|
|
|
|
|
see if it inherits from the wrapper class. Is this possible?
|
2005-12-26 18:49:14 +00:00
|
|
|
|
|
|
|
|
Py_Location now holders pointer to owning Entity if any. Now we need to
|
|
|
|
|
incref and decref in the important places.
|
|
|
|
|
|
2005-12-18 03:08:25 +00:00
|
|
|
We need to be able to check if things are visible from goal scripts, so
|
2007-12-02 Al Riddoch <alriddoch@zepler.org>
* client/CreatorClient.cpp, client/CreatorClient.h,
client/Py_CreatorClient.cpp, common/BaseWorld.h, common/types.h,
modules/Location.cpp, modules/Location.h,
rulesets/AtlasProperties.cpp, rulesets/AtlasProperties.h,
rulesets/BaseMind.cpp, rulesets/Character.cpp, rulesets/Character.h,
rulesets/Entity.cpp, rulesets/Entity.h,
rulesets/EntityProperties.cpp, rulesets/LocatedEntity.cpp,
rulesets/LocatedEntity.h, rulesets/MemEntity.cpp,
rulesets/MemEntity.h, rulesets/MemMap.cpp, rulesets/Motion.cpp,
rulesets/Motion.h, rulesets/Py_Location.h, rulesets/Py_Mind.cpp,
rulesets/Py_Thing.cpp, rulesets/Py_Thing.h,
rulesets/PythonMindScript.h, rulesets/PythonScript.h,
rulesets/PythonThingScript.cpp, rulesets/PythonThingScript.h,
rulesets/Python_API.cpp, rulesets/Script.cpp, rulesets/Script.h,
rulesets/Thing.cpp, rulesets/World.cpp, server/WorldRouter.cpp,
server/WorldRouter.h: Refactor all the entity code so there is now
a new base class for entities in the world simulation, and in the
mind which only contains things which are trully common to both.
This moves a lot of functionality which should not have been
present in mind entities away, and makes that code safer and more
efficient.
* tests/TestWorld.h: Update the test world API to match the base
class.
2007-12-02 23:49:05 +00:00
|
|
|
a MemEntity version of the Entity wrapper is required.
|
2005-12-18 03:08:25 +00:00
|
|
|
This would mean we could make buy_thing goal expire when seller goes out
|
2006-01-02 01:08:17 +00:00
|
|
|
of sight.
|
2005-12-18 03:08:25 +00:00
|
|
|
|
|
|
|
|
The getTickAddtion calculation is almost certainly redundant. We almost
|
|
|
|
|
certainly worked in out in previous call to generateMove().
|
|
|
|
|
|
2005-12-16 03:01:21 +00:00
|
|
|
Add face() to buy_livestock and related goals.
|
|
|
|
|
|
2005-12-13 01:38:08 +00:00
|
|
|
Modify mindMap so that entities are visible if they get updated.
|
|
|
|
|
|
2005-12-11 03:28:18 +00:00
|
|
|
Once Script returns an int which differentiates between an error, and
|
|
|
|
|
a missing method, then mind reference in PythonMindScript can got, and
|
|
|
|
|
error can be reported in BaseMind or somewhere similar.
|
|
|
|
|
|
2005-12-15 23:05:27 +00:00
|
|
|
Once stored python wrapper is done, the wrapper can be specialised for
|
|
|
|
|
Character so that task related code is exposed.
|
2005-12-05 16:22:35 +00:00
|
|
|
|
|
|
|
|
Don't do the same bullshit help every time the user clicks on a helping NPC.
|
2005-12-15 23:05:27 +00:00
|
|
|
Bugs: Crash when fire burns. (sear)
|
2005-12-05 16:22:35 +00:00
|
|
|
|
2005-12-05 Al Riddoch <alriddoch@zepler.org>
* rulesets/Py_BBox.cpp, rulesets/Py_Optime.cpp,
rulesets/Py_Statistics.cpp, rulesets/Py_Thing.cpp: Ensure that
setattr returns an exception if the attribute is not a valid one.
* rulesets/Py_Map.cpp, rulesets/Py_Point3D.cpp,
rulesets/Py_Quaternion.cpp, rulesets/Py_World.cpp,
rulesets/Py_WorldTime.cpp: Remove setattr, as no attributes can
be set on this type.
* rulesets/Py_Mind.cpp, rulesets/Py_Oplist.cpp,
rulesets/Py_Vector3D.cpp: Clean up type structure.
* rulesets/basic/mind/goals/common/move.py: Remove attempt
to set "rotation" attribute on location, as its obsolete
and pointless.
2005-12-05 04:01:11 +00:00
|
|
|
Look up upgrading the python API usage to 2.2 spec. In particular
|
|
|
|
|
look at generic attribute handling, PyType_Ready, inheritance etc.
|
|
|
|
|
Method doc strings.
|
|
|
|
|
|
2005-12-04 04:09:05 +00:00
|
|
|
Use getProperty to implement a surface property, and integrate into the
|
|
|
|
|
height adjustment code.
|
|
|
|
|
|
2005-12-03 03:07:30 +00:00
|
|
|
Do any Python types with have an _attr member initialise it before
|
|
|
|
|
they have to in setattr? Py_Entity/Thing used to.
|
|
|
|
|
|
2005-11-30 18:04:28 +00:00
|
|
|
Character jumps to the bottom when swimming.
|
|
|
|
|
Jumping to bottom is because when the character rises above water
|
2005-11-26 01:48:01 +00:00
|
|
|
the movement code assumes it is walking, and then height is constrained
|
|
|
|
|
accordingly to terrain.
|
2005-11-30 18:04:28 +00:00
|
|
|
Character/Pedestrian needs to handle surface properties, so it can't walk
|
|
|
|
|
up steep slopes. Also need to handle jump, to get down steep slopes the quick
|
|
|
|
|
way.
|
2005-11-25 03:21:09 +00:00
|
|
|
|
2005-11-23 11:55:08 +00:00
|
|
|
Lobby accounts still indexed on string IDs. Good or bad?
|
|
|
|
|
|
2005-11-21 02:24:17 +00:00
|
|
|
Should ImmutableProperty inherit from Property, or the other way round so
|
2005-11-30 18:04:28 +00:00
|
|
|
that implementations of get and add can be shared? Yeah.
|
2005-11-21 02:24:17 +00:00
|
|
|
|
|
|
|
|
Write test for SignalProperty.
|
|
|
|
|
|
2005-11-19 04:18:55 +00:00
|
|
|
In cycmd, use flag to indicate when output is written, so it is possible to
|
|
|
|
|
identify when at prompt, and move to next, and also possible to more cleanly
|
|
|
|
|
redraw prompt, rather than forcing it every time codec->poll() is called.
|
|
|
|
|
|
2005-11-18 01:52:10 +00:00
|
|
|
ForbiddenThingFactory::duplicateFactory could return PersistantThingFactory
|
|
|
|
|
so its possible to add more abstract factories.
|
|
|
|
|
|
2005-11-16 21:17:24 +00:00
|
|
|
In order to have attribute defaults inherit from parent classes,
|
|
|
|
|
the code must first store the unmodified defaults direct from the rule
|
|
|
|
|
in a separate place. Its main attributes should then be the result of merging
|
|
|
|
|
those with its parent. This ensures that the result is always right, without
|
|
|
|
|
having to walk all the way up to GameEntity. It is also makes propagating
|
|
|
|
|
modified attributes down the tree easier, as long as a factory stores
|
|
|
|
|
a list of its children. This means we have two compelling reasons why the
|
|
|
|
|
parent factory needs to be available when the child is being installed.
|
|
|
|
|
|
2005-11-15 18:15:00 +00:00
|
|
|
Handle SQL escaping of attributes encoded string before persisting.
|
|
|
|
|
|
2005-11-14 15:53:19 +00:00
|
|
|
Implement tracking terrain surface, and preventing climbing of steep terrain.
|
|
|
|
|
|
|
|
|
|
Implement data driven gui dialogues, in Sear and perhaps equator.
|
|
|
|
|
|
|
|
|
|
<map>
|
|
|
|
|
<list name="parents><string>dialogue</string></list>
|
|
|
|
|
<string name="label">Dialogue</string>
|
|
|
|
|
<list name="contents">
|
|
|
|
|
<map>
|
|
|
|
|
<list name="parents"><string>vbox</string></list>
|
|
|
|
|
<list name="contents">
|
|
|
|
|
<map>
|
|
|
|
|
<list name="parents"><string>label</string></list>
|
|
|
|
|
<string name="label">This is a dialogue</string>
|
|
|
|
|
</map>
|
|
|
|
|
<map>
|
|
|
|
|
<list name="parents"><string>hbox</string></list>
|
|
|
|
|
<list name="contents">
|
|
|
|
|
<map>
|
|
|
|
|
<list name="parents"><string>button</string></list>
|
|
|
|
|
<string name="label">Okay</string>
|
|
|
|
|
</map>
|
|
|
|
|
<map>
|
|
|
|
|
<list name="parents"><string>button</string></list>
|
|
|
|
|
<string name="label">Cancel</string>
|
|
|
|
|
</map>
|
|
|
|
|
</list>
|
|
|
|
|
</map>
|
|
|
|
|
</list>
|
|
|
|
|
</map>
|
|
|
|
|
</list>
|
|
|
|
|
<map>
|
|
|
|
|
|
|
|
|
|
|
2006-08-02 09:59:02 +00:00
|
|
|
-------------------------Dialogue------------------------
|
2005-11-14 15:53:19 +00:00
|
|
|
| |
|
|
|
|
|
| A dialogue |
|
|
|
|
|
| |
|
|
|
|
|
| -------------------- ------------------- |
|
|
|
|
|
| | Okay | | Cancel | |
|
|
|
|
|
| -------------------- ------------------- |
|
|
|
|
|
| |
|
|
|
|
|
---------------------------------------------------------
|
|
|
|
|
|
2005-11-09 01:00:35 +00:00
|
|
|
Are attributes inherited? I think not. Need to be.
|
|
|
|
|
|
2005-11-02 02:06:38 +00:00
|
|
|
Carefully use flags to check for illegal stuff from client/mind ops.
|
|
|
|
|
|
|
|
|
|
Walking army of the undead, daily.
|
|
|
|
|
|
|
|
|
|
Spatial iterators, for map have a reference to a const_iterator, and filter
|
|
|
|
|
while incrementing. Iterate between space(bot_left, top_right) and end().
|
|
|
|
|
|
|
|
|
|
Don't update POS in database if VELOCITY is non-zero.
|
|
|
|
|
|
|
|
|
|
strlen.com
|
|
|
|
|
|
2005-11-15 16:57:01 +00:00
|
|
|
Predators should now use combat code to defeat prey before eating, and
|
2005-10-24 16:11:59 +00:00
|
|
|
then Eat op on character should only work on incapacitated characters.
|
2005-10-20 21:47:51 +00:00
|
|
|
|
2005-10-20 16:18:55 +00:00
|
|
|
A bunch of stuff in Character::externalOperation can go if we don't care
|
|
|
|
|
about ops having serialnos.
|
|
|
|
|
|
2005-10-20 13:43:04 +00:00
|
|
|
Move contents of mindUseOperation to UseOperation, and have mindUseOperation
|
|
|
|
|
filter ops like it should.
|
|
|
|
|
|
2005-10-16 20:58:25 +00:00
|
|
|
Combat system needs to depend on character stats, armour, clothing and
|
|
|
|
|
weapon at very least. Probably need a class to encapsulate important
|
|
|
|
|
processed stat information for a character. This makes it harder to
|
|
|
|
|
have a fully configurable combat system.
|
|
|
|
|
|
2005-10-06 23:25:40 +00:00
|
|
|
Define new class Volume which contains the set of points and normals
|
|
|
|
|
required by the collision code. Cache the volume, and bounding radius
|
|
|
|
|
of entities in Location. bounding radius is very easy. Add a course
|
|
|
|
|
collision check based on bounding radius.
|
|
|
|
|
|
2005-10-01 17:34:21 +00:00
|
|
|
Not sure destination based movement is working right if destination pos
|
|
|
|
|
changes due to LOC change.
|
|
|
|
|
|
2005-09-27 00:00:17 +00:00
|
|
|
Fix collisions. Leaving needs to be the inverse of entering, and this
|
|
|
|
|
implicitly means we need to check collisions with the parents' children.
|
|
|
|
|
We could also probably do with a very course check to make the whole thing
|
|
|
|
|
cheaper.
|
|
|
|
|
|
2005-09-23 11:24:05 +00:00
|
|
|
Collision code would be more reliable if collisions were check with
|
|
|
|
|
current parent's siblings, as well as entities siblings.
|
|
|
|
|
|
2005-09-22 23:06:45 +00:00
|
|
|
Make sure all Property classes have add(Entity)
|
|
|
|
|
|
2005-09-20 00:26:42 +00:00
|
|
|
Task tick ops need to embed the ident of the task, to ensure a replacement
|
|
|
|
|
does not cause a problem.
|
|
|
|
|
|
2005-09-19 22:36:14 +00:00
|
|
|
Modify Attack handler so it is the attackee that creates the task object,
|
|
|
|
|
so attacking a pointless target has no effect without any smarts required
|
|
|
|
|
in mindAttackOperation().
|
2005-09-18 02:03:37 +00:00
|
|
|
|
2005-09-18 Al Riddoch <alriddoch@zepler.org>
* rulesets/PythonMindScript.cpp, rulesets/PythonMindScript.h,
rulesets/PythonThingScript.cpp, rulesets/PythonThingScript.h
rulesets/PythonScript.h, rulesets/Script.cpp, rulesets/Script.h:
Clean up script API.
* rulesets/BaseMind.cpp, rulesets/Character.cpp, rulesets/Entity.cpp,
rulesets/Food.cpp, rulesets/Plant.cpp, rulesets/Stackable.cpp,
rulesets/Thing.cpp: Modify script calls to new API.
* rulesets/BaseMind.cpp, rulesets/BaseMind.h: All sub_op calls now
take const ref for sub_op argument.
2005-09-18 00:55:58 +00:00
|
|
|
We can probably block all ops to mind when its unconcious from
|
2006-08-01 09:23:13 +00:00
|
|
|
the Character class.
|
|
|
|
|
|
2005-09-18 02:03:37 +00:00
|
|
|
Make Connect and Attack standard Atlas op.
|
2005-08-27 23:18:48 +00:00
|
|
|
|
2005-07-03 13:23:33 +00:00
|
|
|
Sort out issue where carrying a living tree kills people. Caused by
|
|
|
|
|
eat op from tree.
|
|
|
|
|
|
2005-07-01 00:31:00 +00:00
|
|
|
Attribute modifiers should be a new low-level primitive on Entity,
|
|
|
|
|
like property. They should be done before attributes are set from data,
|
|
|
|
|
but after default attributes are set. Scale control variables should
|
|
|
|
|
be assumed to be 1 initially for the purposes of scaling.
|
|
|
|
|
A function like merge should be used to apply scalars. It needs to be
|
|
|
|
|
able to copy the modded data into Atlas for reporting back to the client.
|
|
|
|
|
|
2005-06-28 21:42:18 +00:00
|
|
|
Fix dodgey collision code which causes structures with complex parts to cause
|
|
|
|
|
tight loop conditions.
|
|
|
|
|
|
2005-06-28 15:11:40 +00:00
|
|
|
It should be possible to make trees fall so that they are parallel with
|
|
|
|
|
the terrain, if a mechanism is available to determine normal of the
|
|
|
|
|
supporting surface.
|
|
|
|
|
|
|
|
|
|
Does it matter if World gets a delete op when status becomes < 0? It
|
|
|
|
|
shouldn't, as the delete op should be ingored, so World does not need
|
|
|
|
|
a Set op implementation.
|
|
|
|
|
|
|
|
|
|
Sort out a way to move world functionality into a script.
|
|
|
|
|
|
2005-06-25 08:37:23 +00:00
|
|
|
On #python talk to deltab TFK or #pyrex.
|
|
|
|
|
|
|
|
|
|
When reloading a python module, try to load it even if it didn't load before.
|
|
|
|
|
|
2005-06-20 16:48:47 +00:00
|
|
|
Prevent forbidden attribute from leaking through in move ops from client.
|
|
|
|
|
|
2005-06-19 14:16:23 +00:00
|
|
|
Re-code chickens so they flee on contact, rather than on sight.
|
|
|
|
|
Fix lych and skellys.
|
|
|
|
|
|
2005-06-08 01:08:39 +00:00
|
|
|
Implement swimming, which requires constraining the updated pos in the movement
|
|
|
|
|
code to be sure of getting the right Z. Try and do some direction stuff in
|
|
|
|
|
the sear interface.
|
|
|
|
|
|
|
|
|
|
Clean up old movement code, get rid of Movement::m_velocity, and perhaps
|
|
|
|
|
m_orient.
|
|
|
|
|
|
2005-06-06 01:09:43 +00:00
|
|
|
When getMoveUpdate is first called in moveMoveOperation, it doesn't really
|
|
|
|
|
want an operation, just an update of the position.
|
|
|
|
|
|
2005-06-05 13:38:16 +00:00
|
|
|
Add swimming to Pedestrian. Try and add floating by default to non aquatic
|
|
|
|
|
creatures.
|
|
|
|
|
|
2005-06-04 15:35:07 +00:00
|
|
|
Move Create handler from Entity into Thing, as everything IG inherits from
|
|
|
|
|
Thing.
|
|
|
|
|
|
2005-06-03 01:08:21 +00:00
|
|
|
Make an Atlas encoding to describe basic layers.
|
|
|
|
|
|
|
|
|
|
Implement buying clothes to be worn. Garment base class, use wield operations
|
|
|
|
|
to use.
|
|
|
|
|
|
2005-05-29 01:38:46 +00:00
|
|
|
Implement spawnpoints, and separate mason and werewolf locations.
|
2005-05-26 23:21:30 +00:00
|
|
|
|
2005-05-24 23:19:13 +00:00
|
|
|
Make sure python object references aren't leaked in script factories.
|
2005-05-15 12:43:02 +00:00
|
|
|
|
2005-05-14 20:07:38 +00:00
|
|
|
Implement subsystems on server object. Allow Admin to fetch the subsystems,
|
|
|
|
|
like "configuration", "policy" etc.
|
|
|
|
|
|
|
|
|
|
policy should include things like:
|
|
|
|
|
Account creation on the fly.
|
|
|
|
|
Number of characters per account.
|
|
|
|
|
Number of character played at the same time per account.
|
|
|
|
|
Visibility of player on character and character on player.
|
|
|
|
|
Character removal from world on logout.
|
|
|
|
|
|
2005-05-15 12:43:02 +00:00
|
|
|
Installed types from the client need to be persisted in the database.
|
2005-05-14 13:05:41 +00:00
|
|
|
|
2005-05-10 15:52:51 +00:00
|
|
|
Create harness device which is a number of entities connected by ropes.
|
|
|
|
|
Consists of hook, and a number of ends to be held by people. Each end is
|
|
|
|
|
attached by a rope entity to the thing to be moved. To attach the hook,
|
|
|
|
|
it is wielded and used on the target. Each person the wields and uses
|
|
|
|
|
their ends. When enough people pull, the target moves. Vector of travel
|
|
|
|
|
is the average of the distances to the people pulling.
|
|
|
|
|
|
|
|
|
|
Add use of pickaxe to split rocks. Initial rock in ground could be huge,
|
|
|
|
|
and require splitting, or heavy equipment to move. Rock can be shaped into
|
|
|
|
|
stone billet for use in building using a chisel.
|
|
|
|
|
|
2005-05-05 18:21:58 +00:00
|
|
|
Add operation Increment which allows deltas to be made to attributes.
|
|
|
|
|
Important for atomicity in delayed events. Propagated as Sight(Set).
|
|
|
|
|
|
|
|
|
|
Grass should dry out.
|
|
|
|
|
Earth and sand should return to the soil.
|
|
|
|
|
Sand can be made into a sandy area using a tamper.
|
|
|
|
|
Digging earth could create a field area.
|
2005-05-06 01:41:17 +00:00
|
|
|
Might need to notify entities when their parent changes.
|
2005-05-05 18:21:58 +00:00
|
|
|
|
2005-05-02 11:46:26 +00:00
|
|
|
Code up projectile movement as a first test of entity movement.
|
|
|
|
|
|
|
|
|
|
Sort out so lobby had a real ID.
|
|
|
|
|
|
|
|
|
|
Code up allowing accounts to create rooms, and guilds.
|
|
|
|
|
|
2005-05-01 18:05:52 +00:00
|
|
|
Optimise down the number of calls to iterator::end in mindUseOperation
|
|
|
|
|
|
2005-04-22 01:09:55 +00:00
|
|
|
Add a reach attribute to tools which tells the client how far the NPC must
|
|
|
|
|
be from the target before they can use it on something.
|
|
|
|
|
|
2005-04-21 01:57:16 +00:00
|
|
|
Fix Creator::LookOperation so that it doesn't return anything if no
|
|
|
|
|
match can be found. Also it should probably not accept ops with TO already
|
|
|
|
|
set.
|
|
|
|
|
|
2005-04-13 17:48:33 +00:00
|
|
|
Add cydumprules to the man pages.
|
|
|
|
|
|
2005-04-10 18:56:48 +00:00
|
|
|
Clean out Python operation API, as its full of unused and useless functions.
|
|
|
|
|
|
2005-03-19 18:53:41 +00:00
|
|
|
Slave or Peer servers need to negotiate types at startup.
|
|
|
|
|
|
2005-02-03 20:51:22 +00:00
|
|
|
Make the butcher more helpful to n00bs.
|
|
|
|
|
|
2005-01-23 19:58:18 +00:00
|
|
|
Implement a Tool base class which eliminates the need for tool scripts -
|
|
|
|
|
handles the necessary op conversions driven by data.
|
|
|
|
|
|
2005-02-05 02:26:32 +00:00
|
|
|
Make sure stamp is updated in MemMap and checked, and implement Unseen.
|
2005-01-11 01:35:53 +00:00
|
|
|
|
2005-01-07 14:21:06 +00:00
|
|
|
Implement trivial combat, and code up a bunny bashing quests for the hard
|
|
|
|
|
of thinking.
|
|
|
|
|
|
2004-12-27 17:54:00 +00:00
|
|
|
Add ticker callback mechanism to WorldRouter, which calls callback whenever
|
|
|
|
|
a tick is required. Will reduce the cost of the op queue by making it smaller,
|
|
|
|
|
and should be cheaper than tick ops. Needs to be carefully designed. Can handle
|
|
|
|
|
stuff like one-shots, as well as regular ticks.
|
|
|
|
|
|
2004-12-21 23:00:10 +00:00
|
|
|
Spec an op similar to use, but for things which are just used by themselves,
|
2005-01-17 10:56:28 +00:00
|
|
|
like buttons, valves, levers etc. Target has operations=[...] just the same,
|
2004-12-21 23:00:10 +00:00
|
|
|
and the arg of the new op specifies what op to do, but the Character just
|
|
|
|
|
needs the one gateway.
|
|
|
|
|
|
2004-12-19 02:59:40 +00:00
|
|
|
Implement Task interface, which represent enduring tasks, including combat.
|
2005-01-09 21:24:57 +00:00
|
|
|
Could also include destination based movement. Task needs a name, and an
|
|
|
|
|
accessor for it, so it can be used as a private Property.
|
2004-12-19 02:59:40 +00:00
|
|
|
|
2004-12-19 01:46:23 +00:00
|
|
|
When calling NPCMind.face when buying an item, for some reason the velocity
|
|
|
|
|
of Pedestrian is valid and set to a weird value. This is because the
|
|
|
|
|
target position where the merchant wants to be is at a different z value
|
2004-12-19 12:21:11 +00:00
|
|
|
from where the character ends up. This is a general problem with moving
|
|
|
|
|
to pre-defined positions.
|
2004-12-15 01:42:14 +00:00
|
|
|
|
2004-12-03 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h,
client/CharacterClient.cpp, client/CharacterClient.h,
client/ClientConnection.cpp, client/ClientConnection.h,
client/CreatorClient.cpp, client/CreatorClient.h,
client/Py_CreatorClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/BaseWorld.h, common/custom.cpp,
common/inheritance.cpp, common/inheritance.h,
common/inheritance_impl.h, common/op_switch.h, common/type_utils.h,
common/types.h, common/utility.cpp, common/utility.h,
modules/Location.cpp, rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h, rulesets/Creator.cpp,
rulesets/Creator.h, rulesets/Entity.cpp, rulesets/Entity.h,
rulesets/EntityProperties.cpp, rulesets/Entity_getLocation.h,
rulesets/Food.cpp, rulesets/Food.h, rulesets/MemMap.cpp,
rulesets/MemMap.h, rulesets/Missile.h, rulesets/Pedestrian.cpp,
rulesets/Plant.cpp, rulesets/Plant.h, rulesets/Py_Mind.cpp,
rulesets/Py_Object.cpp, rulesets/Py_Operation.cpp,
rulesets/Py_Operation.h, rulesets/Py_Thing.cpp,
rulesets/PythonMindScript.h, rulesets/PythonScript.h,
rulesets/PythonThingScript.h, rulesets/Python_API.cpp,
rulesets/Script.cpp, rulesets/Script.h, rulesets/Stackable.cpp,
rulesets/Stackable.h, rulesets/Thing.cpp, rulesets/Thing.h,
rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h server/Admin.cpp, server/Admin.h,
server/CommClient.cpp, server/Connection.cpp, server/Connection.h,
server/EntityFactory.cpp, server/EntityFactory.h, server/Lobby.cpp,
server/Lobby.h, server/Persistance.cpp, server/Persistance.h,
server/Persistor.cpp, server/Player.cpp, server/Player.h,
server/ServerRouting.cpp, server/ServerRouting.h,
server/TrustedConnection.cpp, server/TrustedConnection.h,
server/WorldRouter.cpp, server/WorldRouter.h, tests/Areatest.cpp,
tests/Charactertest.cpp, tests/Creatortest.cpp,
tests/EntityExerciser.h, tests/Entitytest.cpp, tests/Foodtest.cpp,
tests/IGEntityExerciser.h, tests/Linetest.cpp, tests/Planttest.cpp,
tests/Stackabletest.cpp, tests/Structuretest.cpp, tests/Thingtest.cpp,
tests/Worldtest.cpp, tests/allOperations.h, tests/inheritancetest.cpp,
tests/utilitytest.cpp, tools/cycmd.cpp:
Modify the entity interface so that all Operation methods
take references to RootOperation, as its cleaner, and requires
less nasty casts. Clean up operations in headers generally.
2004-12-03 14:49:13 +00:00
|
|
|
Does sightFooOperation etc. in BaseMind.h have to be virtual? I think not.
|
2016-09-06 22:29:36 -04:00
|
|
|
Yes it does, as its overridden in some client code.
|
2004-12-03 Al Riddoch <alriddoch@zepler.org>
* client/BaseClient.cpp, client/BaseClient.h,
client/CharacterClient.cpp, client/CharacterClient.h,
client/ClientConnection.cpp, client/ClientConnection.h,
client/CreatorClient.cpp, client/CreatorClient.h,
client/Py_CreatorClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/BaseWorld.h, common/custom.cpp,
common/inheritance.cpp, common/inheritance.h,
common/inheritance_impl.h, common/op_switch.h, common/type_utils.h,
common/types.h, common/utility.cpp, common/utility.h,
modules/Location.cpp, rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h, rulesets/Creator.cpp,
rulesets/Creator.h, rulesets/Entity.cpp, rulesets/Entity.h,
rulesets/EntityProperties.cpp, rulesets/Entity_getLocation.h,
rulesets/Food.cpp, rulesets/Food.h, rulesets/MemMap.cpp,
rulesets/MemMap.h, rulesets/Missile.h, rulesets/Pedestrian.cpp,
rulesets/Plant.cpp, rulesets/Plant.h, rulesets/Py_Mind.cpp,
rulesets/Py_Object.cpp, rulesets/Py_Operation.cpp,
rulesets/Py_Operation.h, rulesets/Py_Thing.cpp,
rulesets/PythonMindScript.h, rulesets/PythonScript.h,
rulesets/PythonThingScript.h, rulesets/Python_API.cpp,
rulesets/Script.cpp, rulesets/Script.h, rulesets/Stackable.cpp,
rulesets/Stackable.h, rulesets/Thing.cpp, rulesets/Thing.h,
rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h server/Admin.cpp, server/Admin.h,
server/CommClient.cpp, server/Connection.cpp, server/Connection.h,
server/EntityFactory.cpp, server/EntityFactory.h, server/Lobby.cpp,
server/Lobby.h, server/Persistance.cpp, server/Persistance.h,
server/Persistor.cpp, server/Player.cpp, server/Player.h,
server/ServerRouting.cpp, server/ServerRouting.h,
server/TrustedConnection.cpp, server/TrustedConnection.h,
server/WorldRouter.cpp, server/WorldRouter.h, tests/Areatest.cpp,
tests/Charactertest.cpp, tests/Creatortest.cpp,
tests/EntityExerciser.h, tests/Entitytest.cpp, tests/Foodtest.cpp,
tests/IGEntityExerciser.h, tests/Linetest.cpp, tests/Planttest.cpp,
tests/Stackabletest.cpp, tests/Structuretest.cpp, tests/Thingtest.cpp,
tests/Worldtest.cpp, tests/allOperations.h, tests/inheritancetest.cpp,
tests/utilitytest.cpp, tools/cycmd.cpp:
Modify the entity interface so that all Operation methods
take references to RootOperation, as its cleaner, and requires
less nasty casts. Clean up operations in headers generally.
2004-12-03 14:49:13 +00:00
|
|
|
|
2004-11-29 21:45:11 +00:00
|
|
|
CONTAINS could be some kind of spatial set of buckets for efficiency
|
|
|
|
|
when doing collision detection, but if this is not to be true for all entities
|
|
|
|
|
then the mechanism for modifying CONTAINS needs to be virtualised, and
|
|
|
|
|
made a method on the container/LOC. If the spatial stuff is to work then
|
|
|
|
|
the entity needs to be removed while it still has its old coords, and added
|
|
|
|
|
to its new container with its new coords.
|
2004-11-24 08:34:28 +00:00
|
|
|
|
2004-11-29 21:45:11 +00:00
|
|
|
We should be able to look at the attributes of an python instance to
|
|
|
|
|
determine what operations it needs to be subbed to. It doesn't have a
|
|
|
|
|
dictionary, but it does have the methods as attributes.
|
2004-11-24 01:19:31 +00:00
|
|
|
|
2004-11-29 21:45:11 +00:00
|
|
|
Make sure that goals involving movement don't issue a move op unless its
|
|
|
|
|
necessary. ie check to see if we are already moving in the right direction.
|
2004-11-24 01:19:31 +00:00
|
|
|
|
2004-11-29 21:45:11 +00:00
|
|
|
Fix Movement/Pedestrian to handle destination based movement where LOC
|
|
|
|
|
changes. Just use distanceTo as the velocity vector.
|
2004-11-18 22:07:10 +00:00
|
|
|
|
2004-11-18 14:48:32 +00:00
|
|
|
The spot_something goal is a hack - need something better. Probably need
|
2004-11-29 21:45:11 +00:00
|
|
|
some kind of Knowledge about target entity. Give the Knowledge predicate
|
|
|
|
|
as an argument to spot_something(), and add Knowledge with that predicate
|
|
|
|
|
once something has been spotted. For example
|
|
|
|
|
spot_something('lumber', 'spotted_lumber')
|
2004-11-18 01:57:17 +00:00
|
|
|
|
2004-11-18 01:51:40 +00:00
|
|
|
mind.things in NPCMind seems to be completely based on the name attribute,
|
|
|
|
|
though it seems like it would make more sense for it to use type some of
|
|
|
|
|
the time.
|
|
|
|
|
|
2004-11-17 15:57:04 +00:00
|
|
|
Each entity could have a Mode object which controls how its movement/position
|
|
|
|
|
is simulated, including the effect of gravity etc. This would be associated
|
|
|
|
|
with a mode string.
|
|
|
|
|
|
2004-11-16 21:44:04 +00:00
|
|
|
If the character moves an entity into another similar entity, then
|
|
|
|
|
we should create a Pile. This can be detected in mindMoveOp().
|
2004-11-13 16:42:55 +00:00
|
|
|
|
2004-11-02 18:07:41 +00:00
|
|
|
Currently no mechanism to inform client/mind that the ID they just
|
|
|
|
|
specified is gone. Need to think of something, and make sure mind
|
2004-11-29 21:45:11 +00:00
|
|
|
deals correctly. Something like Unseen operation.
|
2004-11-02 18:07:41 +00:00
|
|
|
|
2004-11-02 17:12:03 +00:00
|
|
|
Can Property mechanism be used to handle raw Python data as properties?
|
|
|
|
|
|
2004-11-05 16:19:21 +00:00
|
|
|
Sort out the issue of un-initialised POS, ORIENTATION and BBOX in the
|
|
|
|
|
database.
|
2004-11-02 17:12:03 +00:00
|
|
|
|
2004-10-10 01:16:08 +00:00
|
|
|
MemEntity needs some kind of reference flag/count if a python object
|
2004-11-07 03:59:22 +00:00
|
|
|
is holding a reference. Probably as well to ref-count all IG entities,
|
|
|
|
|
then we can hold a reference in the op queue, and avoid lookup up the
|
|
|
|
|
FROM at dispatch time. Would also allow entities to hold pointers.
|
2004-10-10 01:16:08 +00:00
|
|
|
|
2004-10-03 03:32:16 +00:00
|
|
|
Fix unit_vector_to in python interface to make sure it doesn't cause
|
|
|
|
|
a normalise() abort(). Probably re-write to use relativePosition() which
|
|
|
|
|
may need to be fixed to give the right direction. The correct direction
|
|
|
|
|
should be the coordinate space that the observer's position is in. It
|
|
|
|
|
is probably currently returning it in the entities local coords.
|
|
|
|
|
|
2004-09-28 00:47:18 +00:00
|
|
|
Stop creator characters for getting filed into the accounts_entity_ent
|
|
|
|
|
table.
|
|
|
|
|
|
2004-09-24 00:55:29 +00:00
|
|
|
Transforming with an invalid quaternion creates an invalid vector or point.
|
2004-10-24 01:38:59 +00:00
|
|
|
We must not do it. See FIXME in WorldRouter.cpp.
|
2004-09-24 00:55:29 +00:00
|
|
|
|
2004-09-22 01:12:14 +00:00
|
|
|
Is it necessary to copy new_coords in Pedestrain::genMoveOperation()?
|
|
|
|
|
|
2004-09-20 17:07:45 +00:00
|
|
|
Sort out trees thrashing database. Postpone until we have done something
|
|
|
|
|
about database transactions.
|
2004-09-18 21:00:43 +00:00
|
|
|
|
2004-09-05 14:36:53 +00:00
|
|
|
Centralise serialno assigment on IG ops, checking for 0 to see if we should?
|
|
|
|
|
|
2004-09-03 Al Riddoch <alriddoch@zepler.org>
* client/CharacterClient.cpp, client/CharacterClient.h,
client/CommClient.cpp, common/BaseEntity.cpp,
common/BaseEntity.h, common/OOGThing.cpp,
common/OOGThing.h, common/op_switch.h,
rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/Character.cpp, rulesets/Character.h,
rulesets/Creator.cpp, rulesets/Creator.h, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/Food.cpp, rulesets/Food.h,
rulesets/Missile.h, rulesets/Plant.cpp, rulesets/Plant.h,
rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
rulesets/Stackable.cpp, rulesets/Stackable.h, rulesets/Thing.cpp,
rulesets/Thing.h, rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/Admin.h, server/CommClient.cpp, server/Connection.cpp,
server/Connection.h, server/ExternalMind.cpp, server/ExternalMind.h,
server/Lobby.cpp, server/Lobby.h, server/Player.cpp,
server/Player.h, server/WorldRouter.cpp:
Re-work basic op dispatch mechanism so result is passed by
a reference argument rather than returning by value.
2004-09-03 00:33:19 +00:00
|
|
|
Sort out FIXME in Creator::operation().
|
|
|
|
|
|
2004-08-27 14:59:11 +00:00
|
|
|
Character creation should not fail if creating its bootstrap inventory fails.
|
2004-09-25 12:34:12 +00:00
|
|
|
Errors from coin creation are confusing clients.
|
2004-08-27 14:59:11 +00:00
|
|
|
|
2004-08-07 11:25:30 +00:00
|
|
|
Convert FormatedXMLWriter into a templat that can drive any Atlas codec.
|
|
|
|
|
Thus we can have any Atlas Codec output in formatted human readable form.
|
2004-08-07 Al Riddoch <alriddoch@zepler.org>
* common/BaseEntity.cpp, common/BaseEntity.h, common/BaseWorld.h,
common/Database.cpp, common/Database.h, common/FormattedXMLWriter.cpp,
common/FormattedXMLWriter.h, common/accountbase.cpp,
common/accountbase.h, common/custom.cpp, common/inheritance.cpp,
common/inheritance.h, common/operations.h, common/type_utils.h,
common/utility.cpp, common/utility.h, modules/Location.cpp,
modules/Location.h, rulesets/Area.cpp, rulesets/Area.h,
rulesets/BaseMind.cpp, rulesets/Character.cpp, rulesets/Character.h,
rulesets/Creator.cpp, rulesets/Entity.cpp, rulesets/Entity.h,
rulesets/Entity_getLocation.h, rulesets/Food.cpp, rulesets/Line.cpp,
rulesets/Line.h, rulesets/MemMap.cpp, rulesets/MemMap.h,
rulesets/Pedestrian.cpp, rulesets/Plant.cpp, rulesets/Plant.h,
rulesets/Py_Mind.cpp, rulesets/Py_Object.cpp, rulesets/Py_Object.h,
rulesets/Py_Operation.cpp, rulesets/Py_Thing.cpp,
rulesets/Python_API.cpp, rulesets/Stackable.cpp, rulesets/Stackable.h,
rulesets/Thing.cpp, rulesets/World.cpp, rulesets/World.h,
server/Account.cpp, server/Account.h, server/Admin.cpp,
server/Admin.h, server/CommClient.cpp, server/CommClient.h,
server/CommListener.cpp, server/CommListener.h,
server/CommLocalClient.cpp, server/CommLocalClient.h,
server/CommMetaClient.h, server/CommPSQLSocket.h,
server/CommRemoteClient.cpp, server/CommRemoteClient.h,
server/CommServer.cpp, server/CommServer.h, server/CommSocket.cpp,
server/CommSocket.h, server/CommUnixListener.cpp,
server/CommUnixListener.h, server/Connection.cpp,
server/Connection.h, server/EntityFactory.cpp,
server/EntityFactory.h, server/Lobby.cpp, server/Lobby.h,
server/Persistance.cpp, server/Persistance.h,
server/PersistantThingFactory.h, server/Persistor.cpp,
server/Player.cpp, server/Player.h, server/Restorer.h,
server/Restorer_impl.h, server/ServerRouting.cpp,
server/ServerRouting.h, server/TrustedConnection.cpp,
server/TrustedConnection.h, server/WorldRouter.cpp,
server/WorldRouter.h: Convert code to using Atlas Message
typedefs as found in Atlas-C++ 0.6 to aid conversion later.
2004-08-16 14:26:47 +00:00
|
|
|
Formatter can be a generic non-template Brige that sits between Encoder
|
|
|
|
|
and Codec.
|
2004-08-07 11:25:30 +00:00
|
|
|
|
2004-07-28 20:58:41 +00:00
|
|
|
It might make sense to keep a pointer to the entity an operation is from
|
2004-08-27 13:41:00 +00:00
|
|
|
in the queue, if its available at the point when we store it. How do we
|
2004-07-28 20:58:41 +00:00
|
|
|
then make sure we don't hold bad references?
|
|
|
|
|
|
2004-07-21 13:34:49 +00:00
|
|
|
Report error properlly in MemEntity when clock skew is detected.
|
|
|
|
|
|
|
|
|
|
Try and avoid removing stuff from the mind as soon as its been added. Perhaps
|
|
|
|
|
by checking the iterator ID on insert?
|
|
|
|
|
|
2004-07-14 Al Riddoch <alriddoch@zepler.org>
* common/BaseEntity.h, common/BaseEntity.cpp, common/refno.h,
server/Account.cpp, rulesets/Creator.cpp, server/WorldRouter.cpp:
Move refno functions which don't need to be methods into
their own header.
* common/BaseWorld.h, common/BaseWorld.cpp, rulesets/Character.cpp,
rulesets/Creator.cpp, server/WorldRouter.cpp, server/WorldRouter.h:
Make BaseWorld no longer inherit from anything, as we were not
using this inheritance at all.
2004-07-14 10:16:54 +00:00
|
|
|
Try out dynamic cast rather than string test to identify ops in WorldRouter.
|
|
|
|
|
|
2004-07-13 20:01:50 +00:00
|
|
|
It would probably be easier to move extraction of parents from a new entity
|
|
|
|
|
to world.addNewObject() to avoid duplication.
|
|
|
|
|
|
2004-07-13 01:37:00 +00:00
|
|
|
Use "REFERENCES foo ON DELETE CASCADE" SQL to make sure character table
|
2004-07-12 11:00:44 +00:00
|
|
|
relations are removed when a character is deleted, or an account is deleted.
|
|
|
|
|
|
2004-07-12 10:58:20 +00:00
|
|
|
So, we have skill, which is a way of mapping tool use into actions.
|
|
|
|
|
How about tasks, which are a way of giving persistence and state to actions?
|
|
|
|
|
|
2004-07-05 20:14:59 +00:00
|
|
|
Sort out deer animations.
|
|
|
|
|
|
|
|
|
|
Add grasing.
|
|
|
|
|
|
2004-07-02 23:11:34 +00:00
|
|
|
By adding a skill class to be referenced by character, and defining Teach
|
|
|
|
|
(transfer skill) Sling (stop wielding tool, and place somewhere convenient)
|
|
|
|
|
we can have almost a complete system. Implicitly, the click action when a tool
|
|
|
|
|
is wielded is to use that tool.
|
|
|
|
|
|
2004-07-01 22:57:15 +00:00
|
|
|
Re-work the way PyEntity and PyMind are defined so the inheritence is
|
|
|
|
|
available, and open up the scope for exposing more directly the functionality
|
|
|
|
|
of other entity classes.
|
|
|
|
|
|
2004-06-27 14:11:52 +00:00
|
|
|
Stop creating new objects from causing so much activity. Perception of the
|
|
|
|
|
new object must be based on its visibility. Perception of its deletion
|
|
|
|
|
should also be limited. Implement LRU in mind.
|
2004-06-26 13:29:16 +00:00
|
|
|
|
2004-06-26 06:56:35 +00:00
|
|
|
Upsidedown chickens suck!
|
|
|
|
|
|
|
|
|
|
Use tool, Wield op and Use op.
|
|
|
|
|
|
|
|
|
|
Add beet.
|
|
|
|
|
|
|
|
|
|
Look at me Swimming!
|
|
|
|
|
|
|
|
|
|
Debug skellys.
|
|
|
|
|
|
|
|
|
|
Make lych move. Construct skeleton nearby.
|
|
|
|
|
|
|
|
|
|
Handle modifying bbox proportionally to parameters.
|
|
|
|
|
|
|
|
|
|
Linears and stuff.
|
|
|
|
|
|
|
|
|
|
Path finder based roads and stuff.
|
|
|
|
|
|
|
|
|
|
Create pig pen.
|
|
|
|
|
|
|
|
|
|
Generalise money_transfers in mind to store general information about
|
|
|
|
|
all transfers of ownership. Preferably in knowledge.
|
2004-06-24 14:46:46 +00:00
|
|
|
|
2004-06-24 12:23:14 +00:00
|
|
|
Make chickens afraid of wolf.
|
|
|
|
|
|
|
|
|
|
Make vis re-calculated on bbox change.
|
|
|
|
|
|
|
|
|
|
Make walking speed depend on height.
|
|
|
|
|
|
2004-06-21 15:57:32 +00:00
|
|
|
Make cyclient more robust about receiving random ops.
|
|
|
|
|
|
2004-06-21 08:44:53 +00:00
|
|
|
Implement spawn points in the EntityFactory.
|
|
|
|
|
|
2004-06-21 06:37:01 +00:00
|
|
|
Verify that the persistant code does not insert entities into the world with
|
|
|
|
|
invalid location data. It shouldn't.
|
2004-06-15 14:39:33 +00:00
|
|
|
|
2004-06-06 16:27:52 +00:00
|
|
|
Fix movement bug with destination based movement after collision. Ammend
|
|
|
|
|
find target to be derived from velocity.
|
|
|
|
|
|
2004-05-28 14:11:14 +00:00
|
|
|
Fix or get rid of cyphesis-setup
|
|
|
|
|
|
2004-05-17 21:58:31 +00:00
|
|
|
Fix usage of map.get in BaseMind and NPCMind
|
|
|
|
|
|
|
|
|
|
Make ExternalMind inherit from something higher that BaseMind. It has so
|
|
|
|
|
few features.
|
|
|
|
|
|
2004-05-14 00:35:59 +00:00
|
|
|
It may be possible to get rid of getXyz() (crappy absolute position)
|
|
|
|
|
|
|
|
|
|
Its really not necessary for WorldRouter and its base to be so virtual, or
|
|
|
|
|
inherit from BaseEntity. Get rid of that, shift all the serialno stuff into
|
|
|
|
|
base.
|
|
|
|
|
|
|
|
|
|
Add time to location, so we can stamp update time, and always calculate pos.
|
|
|
|
|
|
|
|
|
|
We can neglect to send appearance if we are about to send Sight Move.
|
|
|
|
|
|
2004-05-14 00:03:49 +00:00
|
|
|
distanceTo does not take into account orientation.
|
|
|
|
|
|
2004-05-12 23:45:02 +00:00
|
|
|
Sort out putting everything at terrain height. This may require some strange
|
|
|
|
|
stuff.
|
|
|
|
|
|
2004-05-11 Al Riddoch <alriddoch@zepler.org>
* client/CommClient.cpp, rulesets/Entity.cpp, rulesets/Entity.h,
rulesets/Entity_getLocation.h, server/EntityFactory.cpp:
Make Entity::getLocation a template, so it works with maps on
types other than entity.
* rulesets/BaseMind.cpp, rulesets/BaseMind.h,
rulesets/MemEntity.cpp, rulesets/MemEntity.h,
rulesets/MemMap.cpp, rulesets/MemMap.h, rulesets/Py_Map.cpp:
Make MemEntity inherit from Entity, and BaseMind inherit from
MemEntity, and use MemEntity for all objects in MemMap, so we
can have extra functionality on MemEntity.
2004-05-11 18:10:36 +00:00
|
|
|
Invesitage interaction between mind/body WRT type. We shouldn't ever use
|
|
|
|
|
the type string in Atlas.
|
|
|
|
|
|
|
|
|
|
Get rif of Entity::m_name, and other related pointless static attrs.
|
|
|
|
|
|
2004-05-11 10:06:38 +00:00
|
|
|
Fix Entity::addToObject to be more efficient with contlist
|
|
|
|
|
|
|
|
|
|
Make the server easier to kill.
|
|
|
|
|
|
2004-05-10 19:56:52 +00:00
|
|
|
Enforce well-formed args and parents on IG ops centrally.
|
|
|
|
|
|
2004-05-08 18:44:34 +00:00
|
|
|
Real sight ranges
|
|
|
|
|
|
2004-05-10 10:05:29 +00:00
|
|
|
Do minds delete stuff from memory? Replace Entity with a special class
|
|
|
|
|
for memory entities, includin some kind of LRU thingy.
|
2004-05-08 18:44:34 +00:00
|
|
|
Implement LRU culling to minds, only for things with empty contains.
|
2004-05-10 13:07:39 +00:00
|
|
|
MemMap::lookId should probably not be exposed to the python API
|
2004-05-08 18:44:34 +00:00
|
|
|
|
2004-04-23 17:50:38 +00:00
|
|
|
Add Restore op if required which does the same as Setup, but for restore.
|
|
|
|
|
|
|
|
|
|
Make sure we don't schedule database maintenence if its already doing it.
|
2004-04-22 12:50:23 +00:00
|
|
|
|
2004-04-21 22:02:25 +00:00
|
|
|
There is probably a problem with getLocation bailing if LOC is not of the
|
|
|
|
|
data from the mind code's point of view.
|
|
|
|
|
|
|
|
|
|
Why the hell is there so much mind activity on database restore.
|
|
|
|
|
|
|
|
|
|
Take precautions to ensure multiple looks don't get stacked up in the MindMap.
|
|
|
|
|
Probably best done by making additionsById a map.
|
|
|
|
|
|
2004-04-19 10:14:17 +00:00
|
|
|
Add some simple sound op examples
|
|
|
|
|
|
2004-03-20 12:15:56 +00:00
|
|
|
Make Forest a non-solid bbox
|
|
|
|
|
|
2003-12-22 15:16:53 +00:00
|
|
|
Fix problem with vertical movement. (See BUGS)
|
|
|
|
|
|
2003-11-24 23:19:58 +00:00
|
|
|
Debug collision with sty.
|
|
|
|
|
|
2003-11-24 21:11:50 +00:00
|
|
|
Make cyphesis less reluctant to shutdown. Check for exit_flag in more
|
2008-12-11 18:27:11 +00:00
|
|
|
places. Add second flag set if other signals are used other than interrupt
|
|
|
|
|
or term, or if those signals are used twice. This could bypass all the
|
|
|
|
|
memory freeing to ensure clean fast stop.
|
2003-11-24 02:09:58 +00:00
|
|
|
|
|
|
|
|
Need to profile why startup takes so long - we are chewing a lot of ops.
|
|
|
|
|
|
2003-11-21 01:48:09 +00:00
|
|
|
Can we run our own RDBMS in the event that root access is not available.
|
|
|
|
|
|
|
|
|
|
Modify var dir for socket so it is actually the right place.
|
|
|
|
|
|
2003-11-19 16:01:19 +00:00
|
|
|
Run "SET autocommit TO 'off';" on connection to database, and run "COMMIT;"
|
|
|
|
|
every 30 seconds (or so).
|
2003-11-14 02:02:45 +00:00
|
|
|
|
|
|
|
|
Make database maintainance intervals configurable.
|
2003-10-27 18:01:03 +00:00
|
|
|
|
2003-10-27 01:59:53 +00:00
|
|
|
Sort out character relation so it has the right foreign key stuff.
|
|
|
|
|
|
2003-10-23 00:38:08 +00:00
|
|
|
Looks like zero collision time results in move then stop being sent
|
2003-10-29 11:48:56 +00:00
|
|
|
almost immediatly. Check for it, and send nothing. This may mean
|
|
|
|
|
re-ordering the movement code. Possibly checkCollisions needs
|
|
|
|
|
to be earlier.
|
2003-10-23 00:38:08 +00:00
|
|
|
|
2003-10-22 23:44:48 +00:00
|
|
|
Modify Movement and Pedestrian classes so they handle restricting an
|
|
|
|
|
entity to their parents constraints. In the case of Pedestrian, this
|
|
|
|
|
means walking on the ground.
|
|
|
|
|
|
2003-10-19 16:13:13 +00:00
|
|
|
Clean the database. Use VACUUM once an hour, and probably VACUUM ANALYSE
|
|
|
|
|
and VACUUM FULL each once per day. REINDEX may also be required.
|
|
|
|
|
|
2003-10-21 23:25:52 +00:00
|
|
|
Sort out socket address re-use, and lingering.
|
2003-10-16 19:46:28 +00:00
|
|
|
|
2003-10-12 Al Riddoch <alriddoch@zepler.org>
* server/CommSocket.h, server/CommUnixListener.cpp,
server/CommUnixListener.h, server/CommServer.cpp,
server/CommMetaClient.cpp, server/CommMetaClient.h,
server/CommListener.cpp, server/CommListener.h,
server/CommClient.cpp, server/CommClient.h:
Add a new dispatch method to the socket interface, delaying
dispatch of incoming data until after it has been read, so that
a write timeout cannot occur during reading.
2003-10-12 19:16:52 +00:00
|
|
|
Long term, try and sort out the way object factories, scripts, and atlas
|
|
|
|
|
inheritance are handled, so they are a bit more coherant.
|
|
|
|
|
|
2003-09-16 22:11:09 +00:00
|
|
|
Modify the logging code so that it mangles script output a bit less.
|
2003-09-08 Al Riddoch <alriddoch@zepler.org>
* client/Py_CreatorClient.cpp, client/Py_CreatorClient.h,
rulesets/Py_BBox.cpp, rulesets/Py_BBox.h, rulesets/Py_Location.cpp,
rulesets/Py_Location.h, rulesets/Py_Map.cpp, rulesets/Py_Map.h,
rulesets/Py_Mind.cpp, rulesets/Py_Mind.h, rulesets/Py_Object.cpp,
rulesets/Py_Object.h, rulesets/Py_Operation.cpp,
rulesets/Py_Operation.h, rulesets/Py_Oplist.cpp,
rulesets/Py_Oplist.h, rulesets/Py_Optime.cpp, rulesets/Py_Optime.h,
rulesets/Py_Quaternion.cpp, rulesets/Py_Quaternion.h,
rulesets/Py_Thing.cpp, rulesets/Py_Thing.h, rulesets/Py_Vector3D.cpp,
rulesets/Py_Vector3D.h, rulesets/Py_World.cpp, rulesets/Py_World.h,
rulesets/Py_WorldTime.cpp, rulesets/Py_WorldTime.h,
rulesets/PythonMindScript.cpp, rulesets/PythonThingScript.cpp,
rulesets/Python_API.cpp:
Clean up python API code, with decent names for types,
decent error reporting, and making the more paranoid checks
only present in debug build.
* common/BaseEntity.cpp, common/BaseEntity.h, server/Account.cpp:
Remove pointless method setRefnoOp, and put it in the body as
an inline method.
* common/BaseEntity.h, common/BaseWorld.cpp, common/Setup.h,
common/Tick.h, common/operations.h, common/custom.cpp,
common/types.h, common/utility.cpp, common/utility.h,
modules/Location.h, physics/Vector3D.h, rulesets/BaseMind.cpp,
rulesets/Script.h, server/EntityFactory.h:
Clean up the dependency trees using more forward declarations.
* common/inheritance.cpp, common/inheritance.h:
Move most of the implementation into the .cpp file as its
not suited to inlining.
* rulesets/MemMap.cpp, rulesets/MemMap.h, rulesets/MemMap_methods.h:
Move contents of MemMap_methods.h into the .cpp file, as it is
not suited to inlining, and remove the file from the build.
2003-09-07 23:38:32 +00:00
|
|
|
|
2003-09-04 00:08:33 +00:00
|
|
|
Fix up python checks so they work with a prefix other than /usr
|
|
|
|
|
|
2005-11-15 18:15:00 +00:00
|
|
|
Is listen socket getting opened before it will accept or negotiate because
|
|
|
|
|
more work is being done before poll/select occurs.
|
2003-08-13 13:46:00 +00:00
|
|
|
|
2003-08-31 17:57:00 +00:00
|
|
|
Fix up cypasswd to allow creation of additional admin accounts.
|
2003-08-12 23:45:40 +00:00
|
|
|
|
2003-07-30 00:37:43 +00:00
|
|
|
Think about adding UPnP here or to skstream (or both)
|
|
|
|
|
|
2003-07-24 23:52:24 +00:00
|
|
|
Use PyInstance_New to create an instance given a class.
|
|
|
|
|
|
2003-10-21 23:25:52 +00:00
|
|
|
Use PyModule_AddObject(), PyModule_AddIntConstant(), and
|
|
|
|
|
PyModule_AddStringConstant() when setting up the python consts module.
|
|
|
|
|
(new in version 2).
|
2003-07-24 23:52:24 +00:00
|
|
|
|
|
|
|
|
Look at re-writing python API code to work with python GC
|
|
|
|
|
|
|
|
|
|
Look at using zipfiles to store entrie trees of python files for a ruleset.
|
2003-07-21 11:46:36 +00:00
|
|
|
|
2003-10-21 23:25:52 +00:00
|
|
|
Still plenty of python object leaks. Need to carefully see if references are
|
|
|
|
|
being handled right in the mind code.
|
2003-07-21 11:46:36 +00:00
|
|
|
|
2003-05-03 19:52:41 +00:00
|
|
|
Implement constraints on entities, which have to be checked before movement
|
|
|
|
|
is allowed.
|
|
|
|
|
|
2003-03-22 17:00:04 +00:00
|
|
|
Put in different high level exception catchers, to differentiate between
|
|
|
|
|
exceptions caused by a client, which should result in a kick, and bugs in game
|
|
|
|
|
which need to be logged.
|
2003-03-16 Al Riddoch <alriddoch@zepler.org>
* common/globals.cpp, common/globals.h: Add global variable for
the local state directory.
* server/Account.cpp, server/Admin.cpp, server/Admin.h,
server/Player.cpp: Tighten up some operation checking and add Create
handler to Admin in preparation for handling creation of new OOG
things.
* server/CommLocalClient.cpp, server/CommLocalClient.h,
server/CommRemoteClient.cpp, server/CommRemoteClient.h,
server/CommUnixListener.cpp, server/CommUnixListener.h,
server/CommClient.cpp, server/CommClient.h,
server/CommListener.cpp, server/Connection.cpp,
server/Connection.h, server/server.cpp:
Create new listener and connection classes using unix sockets
to allow local trusted connections.
* client/ClientConnection.cpp, client/ClientConnection.h,
client/CommClient.h, client/CreatorClient.cpp,
client/ObserverClient.cpp: Add capability to connect over
unix socket.
2003-03-16 21:26:06 +00:00
|
|
|
|
2003-03-22 17:00:04 +00:00
|
|
|
Mind state is still utterly unpersisted, so creatures are waking up brain dead
|
|
|
|
|
- mind does not even get kick started with a setup op.
|
2002-12-22 02:29:21 +00:00
|
|
|
|
2002-12-28 Al Riddoch <alriddoch@zepler.org>
* common/BaseEntity.cpp, common/BaseEntity.h, rulesets/Character.cpp,
rulesets/Food.cpp, rulesets/Thing.cpp, rulesets/World.cpp:
Add arg to error method specifying where the error should go. Use
this arg to ensure that errors don't get broadcast.
* common/Database.cpp, common/Database.h, common/const.cpp,
server/Persistor.cpp, server/Restoration.cpp,
server/WorldRouter.cpp
Change id and loc column in entity tables to integer for
performance. Add id generator sequence to database
* common/Database.cpp, common/Database.h, server/Persistance.cpp,
server/Persistance.h: Remove old legacy world, mind and server
tables as they are no longer used.
* common/BaseEntity.cpp, common/Load.h, common/Save.h,
common/custom.cpp, common/op_switch.h, common/operations.cpp,
common/operations.h, common/types.h, rulesets/BaseMind.cpp,
rulesets/BaseMind.h, rulesets/Character.cpp, rulesets/Character.h,
server/Admin.cpp, server/Admin.h, server/server.cpp,
tools/cycmd.cpp: Remove Load and Save ops.
* rulesets/Area.cpp, rulesets/Character.cpp, rulesets/Line.cpp,
rulesets/Plant.cpp: Fix != to |= when setting update flags.
* server/CommMetaClient.cpp, server/CommMetaClient.h,
server/CommServer.cpp, server/CommServer.h, server/server.cpp:
Add mechanism for sockets to be called whenever the server
is idle, so that they do period things. Use this mechanis,
to handle sending periodic packets to the metaserver, removing
special case code from CommServer.
2002-12-28 21:52:32 +00:00
|
|
|
When deleting an entity, need to deal with reparenting its children in the
|
|
|
|
|
database.
|
|
|
|
|
|
|
|
|
|
Experiment with BEGIN / COMMIT blocks to reduce load on database. A
|
|
|
|
|
possibility is starting a transaction, and then commiting, delaying if their
|
|
|
|
|
are requests which have not yet been sent. This of course pre-supposes that
|
|
|
|
|
the mechanism for sending queries to the database asynchronously has
|
|
|
|
|
been done. It is probably acceptible to only accept queries that do not
|
|
|
|
|
return any tuples, and then the asyncronous recieve mechanism doesn't need
|
|
|
|
|
to worry about who wants the tuples.
|
2002-12-23 17:10:07 +00:00
|
|
|
|
2002-05-13 00:17:12 +00:00
|
|
|
General TODO
|
|
|
|
|
|
2005-11-15 18:15:00 +00:00
|
|
|
Generalise and virtualise the collision code.
|
2002-09-06 15:56:08 +00:00
|
|
|
|
2002-06-08 00:56:25 +00:00
|
|
|
Implement jump operation, which specifies target, and comes back with,
|
|
|
|
|
a sight of a jump which has the starting velocity, and finish position.
|
|
|
|
|
If the client sends only velocity, then something else happens. Add
|
|
|
|
|
a method to Pedestrian to handle it.
|
|
|
|
|
|
2002-05-16 Al Riddoch <alriddoch@zepler.org>
* client/CommClient.cpp, client/ClientConnection.cpp, tools/cycmd.cpp:
Ensure clients use username in login ops.
* common/BaseEntity.cpp, common/op_switch.h, rulesets/BaseMind.cpp:
Modify the way op switchers work so they can be used for functions
that return any type.
* rulesets/Character.cpp, rulesets/Character.h: Re-write world2mind
layer so that rather than copying ops that are to be sent to
the mind, the w2m functions returning a flag indicating whether
the op should be passed to the mind. Made w2m and mind op handlers
final, as they are never overridden.
* rulesets/Creator.cpp: Correct comments.
* rulesets/MemMap.cpp: Add comments clarifying behavoir, and remove
old pseudo-code.
* server/Account.cpp, server/Account.h: Ensure that an accounts
character dictionary only ever contains characters. Other entities
that the account chooses to create will no be stored here. Add
function to be called at login time to make sure that characters
stored here are still around.
* server/Connection.cpp, server/Connection.h, server/ExternalMind.cpp,
server/ExternalMind.h: When external mind of a character is
destroyed, ensure that the character is removed from the
connection's object reference store.
2002-05-16 20:53:55 +00:00
|
|
|
Add Feel as the counterpoint to Touch, as Sight is to Look.
|
|
|
|
|
|
2002-05-13 00:17:12 +00:00
|
|
|
Implement piles.
|
|
|
|
|
|
2002-05-07 18:27:30 +00:00
|
|
|
For entities which have a bbox, which other entities do not collide
|
|
|
|
|
with, such as geo entities, provide a virtual methods which allows the
|
|
|
|
|
collission code to check whether entities within this bbox should
|
|
|
|
|
be moved into the bbox entity. Should work fine for irreguler shaped
|
|
|
|
|
things, as long as bbox is kept up to date.
|
|
|
|
|
|
2002-04-25 Al Riddoch <alriddoch@zepler.org>
* rulesets/Entity.cpp, rulesets/Entity.h, rulesets/Character.cpp,
rulesets/Character.h, rulesets/Thing.cpp, rulesets/Food.cpp:
Renamed weight member as mass, and use this name in Atlas,
as this is a better convention, and has already been adopted in
stage.
* Switched python code to using mass instead of weight, as it is
a more accurate term.
* common/globals.cpp, common/globals.h, tools/cyloadrules.cpp:
Put admin modifiable config in etc instead of share directory.
* Don't build cycmd if readline is not available. Untested, and
probably nasty.
2002-04-26 08:08:48 +00:00
|
|
|
Ensure that maxmass set in python has some effect in C++, and investigate
|
|
|
|
|
other related attributes.
|
|
|
|
|
|
2002-04-12 Al Riddoch <alriddoch@zepler.org>
* common/BaseEntity.cpp, common/BaseEntity.h, common/BaseWorld.cpp,
common/Database.cpp, common/accountbase.h, modules/WorldTime.h,
rulesets/Py_World.cpp, server/Admin.cpp, server/Persistance.cpp,
server/Persistance.h:
Clean up includes.
* rulesets/Entity.cpp, rulesets/Entity.h: Write improved way of
handling immutable object attributes.
* server/EntityFactory.cpp, server/Player.cpp, server/Player.h:
Implement a character_types attribute on the player account,
by adding "playable" tag to rules database, and setting
up a set of character types when rules are read from database.
2002-04-12 21:54:44 +00:00
|
|
|
Connecting to other server: Make class peer of CommClient called
|
|
|
|
|
CommConnection or something which is basically the same, but implements
|
|
|
|
|
connecting instead of accepting. Might even be able to merge the code
|
|
|
|
|
in, or make it a template. Make object which inherits from Connection
|
|
|
|
|
called ServerConnection which is created and linked to CommConnection
|
|
|
|
|
which handles pushing operations from the other server into the
|
|
|
|
|
WorldRouter. The question now is, how this is managed at the other end,
|
|
|
|
|
and what is done with operaions generated by this server due to
|
|
|
|
|
operations from the other one.
|
|
|
|
|
|
|
|
|
|
Add suspend functionality, which stops the advance of time, and
|
|
|
|
|
thus suspends all mind activity. Could also inhibit broadcasts. Effectively
|
|
|
|
|
puts the server in bulk maintenance mode, from which NPCs should be
|
|
|
|
|
removed. Should consider the effect this will have on NPC memory,
|
|
|
|
|
and whether or not it can be rebootstrapped.
|
|
|
|
|
|
2002-03-11 Al Riddoch <alriddoch@zepler.org>
* server/WorldRouter.cpp: Eliminate unnecessary call to opEnumerate()
and enhance debugging output.
* server/Player.cpp: Correct the use of string.compare() in older
versions of libstdc++.
* common/types.h: Added enumeration for other operations, not
handled by the core, but considered valid. Added new type
for storing mapping between operation parents and their
enumerated type.
* common/op_switch.h: Separate handling of operations known to
be invalid from operations which are valid, but not explicitly
added to the core.
* common/inheritance.h, common/inheritance.cpp, common/custom.cpp:
Provide global operation mapping where enumeration of operations
can be looked up. Install all types handled by the core, and
types known to be used in scripts.
* common/BaseEntity.h, common/BaseEntity.cpp: Add object specific
operation mapping where operation types each object is subscribed
to can be enumerated, and others are rejected. Add mechanism
so that objects can add to the mapping, this subscribing to
operations. This makes enumerating operations much cheaper, and
eliminates the overhead of handling ops an object has no interest
in.
* rulesets/Thing.h, rulesets/Thing.cpp: Add mechanism so scripts
can subscribe to operations.
* rulesets/Character.h, rulesets/Character.cpp:
Add subscription mechanism for ops going to and from
the mind.
* rulesets/BaseMind.h, rulesets/BaseMind.cpp:
Add subscription mechanism for sight and sound perception
operations sub operations, and provide an interface to it
for scripts.
* server/Connection.cpp, server/Admin.cpp, server/Account.cpp,
rulesets/World.cpp, rulesets/World.h, rulesets/Thing.cpp,
rulesets/Stackable.cpp, rulesets/Plant.cpp, rulesets/Food.cpp,
rulesets/Character.cpp, rulesets/BaseMind.cpp:
Add subscriptions to operations for all core base classes.
* rulesets/Python_API.cpp: When script is created, go through
methods, and subscribe to the operations which are handled by
them.
* rulesets/Character.cpp: When calculating orientation of a walking
character, assume it is standing upright.
* physics/Vector3D.h: Add versions of mag() and distance() which
omit the square root calculations, so that when their values
are only used for comparison, the expensive square root
calculations can be ommited. Add new version of collision
and range checking functions which provide the optimal
interface to the application. Add versions of methods which
modify this rather than creating a new operation to eliminate
wasted copies.
* physics/Quaternion.cpp: Make use of faster interface provided
by Vector3D.
* physics/BBox.h: Add new version of collision checking function
which provides optimal interface to the application.
* modules/Location.h, modules/Location.cpp: Add new functions
to optimally calculate the distance between any two entities.
* modules/Location.h: Re-write collision and range functions to
make much more optimal use of Vector3D, BBox and distance
functionality.
* rulesets/Py_Vector3D.cpp, rulesets/Pedestrian.cpp,
rulesets/Movement.cpp, rulesets/Entity.cpp, rulesets/Character.cpp:
Eliminate implicit copies from vector arithmetic.
* rulesets/Pedestrian.cpp, rulesets/MemMap.cpp, common/const.h:
Re-write code which uses magnitude of vectors to use the square
of the magnitude instead, as it is much cheaper to calculate.
2002-03-11 18:24:19 +00:00
|
|
|
Looking at contains attribute currently only applies sight ranges in
|
|
|
|
|
world entity. Need to apply sight ranges in all entities.
|
|
|
|
|
|
2001-12-14 16:40:38 +00:00
|
|
|
Add services features, and test them in equator.
|
|
|
|
|
|
* tools/cydbload.cpp: Added parameter handling so any file can
be loaded into the database.
* tools/cycmd.cpp: Cleaned up usage and help functions.
* tools/cyisoload.cpp: Cleaned up usage(), and made sure build
completes okay if libraries are missing, and missing
functionality is reported to the user.
* server/server.cpp: Added config options that specifies that
the contents of the db should loaded on server startup. Cleaned
up some debug code.
* server/WorldTime.cpp, server/WorldRouter.cpp,
server/Connection.cpp, rulesets/Structure.h,
rulesets/Python_API.cpp, rulesets/Py_WorldTime.cpp,
rulesets/Movement.cpp, rulesets/Entity.cpp,
physics/Vector3D.h, common/persistance.cpp,
common/database.h, common/database.cpp: Removed output either
to debug mode, or removed altogether.
* common/BaseEntity.h, common/BaseEntity.cpp: Removed redundant header
includes.
* server/ServerRouting.cpp, common/persistance.h,
common/persistance.cpp: Modified admin account function names it
fit convention.
* module/Location.h: Fixed collision detection so that entities
with velocity set to 0 still get checked.
* rulesets/Entity.cpp, rulesets/Thing.cpp, rulesets/Character.cpp,
rulesets/BaseMind.cpp, rulesets/Creator.cpp,
rulesets/ExternalMind.cpp, rulesets/Food.cpp, rulesets/MemMap.cpp,
rulesets/Movement.cpp, rulesets/Pedestrian.cpp, rulesets/Plant.cpp,
rulesets/Py_Location.cpp, rulesets/Py_*.cpp, rulesets/World.cpp:
Removed unnecessary #includes.
Al Riddoch <alriddoch@zepler.org>
2001-06-04 11:22:27 +00:00
|
|
|
Fully implement stackable objects.
|
|
|
|
|
Use combine operation to deal with making more than one object into one.
|
|
|
|
|
|
2001-10-03 21:19:29 +00:00
|
|
|
Add sending of touch op on collision.
|
|
|
|
|
|
2001-02-28 12:03:02 +00:00
|
|
|
Required for werewolf:
|
|
|
|
|
|
|
|
|
|
Implement calendric time using WorldTime and DateTime classes, so nighttime
|
|
|
|
|
and moons are properlly handled.
|
2001-03-07 11:49:43 +00:00
|
|
|
|
2001-03-14 12:31:16 +00:00
|
|
|
Implement sleeping.
|
|
|
|
|
|
* tools/cydbload.cpp: Added parameter handling so any file can
be loaded into the database.
* tools/cycmd.cpp: Cleaned up usage and help functions.
* tools/cyisoload.cpp: Cleaned up usage(), and made sure build
completes okay if libraries are missing, and missing
functionality is reported to the user.
* server/server.cpp: Added config options that specifies that
the contents of the db should loaded on server startup. Cleaned
up some debug code.
* server/WorldTime.cpp, server/WorldRouter.cpp,
server/Connection.cpp, rulesets/Structure.h,
rulesets/Python_API.cpp, rulesets/Py_WorldTime.cpp,
rulesets/Movement.cpp, rulesets/Entity.cpp,
physics/Vector3D.h, common/persistance.cpp,
common/database.h, common/database.cpp: Removed output either
to debug mode, or removed altogether.
* common/BaseEntity.h, common/BaseEntity.cpp: Removed redundant header
includes.
* server/ServerRouting.cpp, common/persistance.h,
common/persistance.cpp: Modified admin account function names it
fit convention.
* module/Location.h: Fixed collision detection so that entities
with velocity set to 0 still get checked.
* rulesets/Entity.cpp, rulesets/Thing.cpp, rulesets/Character.cpp,
rulesets/BaseMind.cpp, rulesets/Creator.cpp,
rulesets/ExternalMind.cpp, rulesets/Food.cpp, rulesets/MemMap.cpp,
rulesets/Movement.cpp, rulesets/Pedestrian.cpp, rulesets/Plant.cpp,
rulesets/Py_Location.cpp, rulesets/Py_*.cpp, rulesets/World.cpp:
Removed unnecessary #includes.
Al Riddoch <alriddoch@zepler.org>
2001-06-04 11:22:27 +00:00
|
|
|
Sort out a reasonable way of representing day and night to client. Look
|
|
|
|
|
up info on Durals astronomy. Weather (clouds, snow, rain, thunder and
|
|
|
|
|
lightening).
|
|
|
|
|
|
|
|
|
|
Required for mason:
|
|
|
|
|
|
|
|
|
|
Create a skills system which the action is passed to, and the skill
|
|
|
|
|
returns the resulting operation to the world. This skills system
|
|
|
|
|
would be handling by the character class, in the mindXxxxOperation()
|
|
|
|
|
methods. The skill would be an object with a reference back to the
|
|
|
|
|
character it belongs to, and a method that is passed the action taking
|
|
|
|
|
place. It would return operations to be passed to the world which carry
|
|
|
|
|
out that action to the extent of the ability of the character. Some
|
|
|
|
|
skills will just do nothing, like the ability to wave, or shout. or
|
|
|
|
|
maybe the shout action could decide using a skill how loud the shout is.
|
|
|
|
|
|
|
|
|
|
Implement the Mason raw materials.
|
|
|
|
|
|
2001-03-07 11:49:43 +00:00
|
|
|
Possible ideas:
|
|
|
|
|
|
2001-03-14 12:31:16 +00:00
|
|
|
Add fully featured database persistance.
|
2001-04-02 22:03:42 +00:00
|
|
|
|
|
|
|
|
Persistance system is naive right now. It does not take account of that
|
|
|
|
|
fact that characters need minds, and it stores the world object.
|
2001-04-19 11:36:11 +00:00
|
|
|
Persitance is now sorted so it loads the world hierarchicly, but
|
|
|
|
|
it still does not handle minds and things. Problems with current
|
|
|
|
|
code include velocity being stored, and bounding boxes not being
|
|
|
|
|
recovered.
|
2001-04-20 16:23:34 +00:00
|
|
|
Basic C++ code for supporting saving and loading of mind state is now
|
|
|
|
|
in place, but support needs to be added into the Python NPCMind
|
|
|
|
|
class to store the data it requires.
|
|
|
|
|
Code is still required to store the state of the operation queue.
|
|
|
|
|
Restoring of accounts from database requires re-connecting characters
|
|
|
|
|
too.
|
2001-04-02 22:03:42 +00:00
|
|
|
|
|
|
|
|
Get system working as an AI client to another server. This would also
|
|
|
|
|
be a good time to get cyphesis working as a mindless server, without
|
|
|
|
|
any AI code.
|
2001-04-10 19:05:14 +00:00
|
|
|
|
2001-06-01 10:09:42 +00:00
|
|
|
Route finding for the AI. NPCs already have symbolic knowledge of places.
|
|
|
|
|
All we need is a mechanism for describing that two places (or nodes) have
|
|
|
|
|
a direct route between them, and then the mind can build a graph which
|
|
|
|
|
allows them to find a route. We also need to provide a mechanism so that
|
|
|
|
|
NPCs know about a particular entity. This can be done by sending a generated
|
|
|
|
|
sight operation.
|
* tools/cydbload.cpp: Added parameter handling so any file can
be loaded into the database.
* tools/cycmd.cpp: Cleaned up usage and help functions.
* tools/cyisoload.cpp: Cleaned up usage(), and made sure build
completes okay if libraries are missing, and missing
functionality is reported to the user.
* server/server.cpp: Added config options that specifies that
the contents of the db should loaded on server startup. Cleaned
up some debug code.
* server/WorldTime.cpp, server/WorldRouter.cpp,
server/Connection.cpp, rulesets/Structure.h,
rulesets/Python_API.cpp, rulesets/Py_WorldTime.cpp,
rulesets/Movement.cpp, rulesets/Entity.cpp,
physics/Vector3D.h, common/persistance.cpp,
common/database.h, common/database.cpp: Removed output either
to debug mode, or removed altogether.
* common/BaseEntity.h, common/BaseEntity.cpp: Removed redundant header
includes.
* server/ServerRouting.cpp, common/persistance.h,
common/persistance.cpp: Modified admin account function names it
fit convention.
* module/Location.h: Fixed collision detection so that entities
with velocity set to 0 still get checked.
* rulesets/Entity.cpp, rulesets/Thing.cpp, rulesets/Character.cpp,
rulesets/BaseMind.cpp, rulesets/Creator.cpp,
rulesets/ExternalMind.cpp, rulesets/Food.cpp, rulesets/MemMap.cpp,
rulesets/Movement.cpp, rulesets/Pedestrian.cpp, rulesets/Plant.cpp,
rulesets/Py_Location.cpp, rulesets/Py_*.cpp, rulesets/World.cpp:
Removed unnecessary #includes.
Al Riddoch <alriddoch@zepler.org>
2001-06-04 11:22:27 +00:00
|
|
|
|
|
|
|
|
Sort out collision detection wrt moving alongside an object in close
|
|
|
|
|
proximity, and add CD for two moving objects. Basically we need sliding.
|
|
|
|
|
along an object. This can be done by zeroing the velocity along
|
|
|
|
|
the axis perpendicular to the collision. Obviously we need to add
|
|
|
|
|
a mechanism for establishing which axis is perpendicular to the collision.
|
|
|
|
|
This now works, but the direction the moving entity is facing is sometimes not
|
|
|
|
|
modified.
|
|
|
|
|
|
2001-06-11 13:08:10 +00:00
|
|
|
Modify map to make more use of stamp.
|