* Tweaked the way Look operations are handled when sent from mind, so
an argument is not required if to is set.
* Made some performance enhancements.
* Implemented nourish operation.
* Modifed move_me() goal so it sets face direction.
* Fixed memory leak in MemMap.
* Implemented fully deleting of entities.
* Cleaned up and tweaked python scripts so eating acorns now works.
* Implemented hooks in MemMap for python scripts.
This is the work I got done over the Christmas break. Acorn now works
with a couple of minor glitches.
Al
be accessed, and certain move operations caused an abort.
* Removed attributes from python object which don't have attributes.
* Added Py*_Check() macros, and used them for easier code reading.
* Added snow attribute to weather.
* Commented out code which makes server exit(0) after a certain time.
Al
strings for to and from as well as entities.
* Adapt python Operation() function so operations can be given as
arguments.
* Add Eat, Chop, Cut and Fire operations into the main operation
handling functions.
* Added code so that intelligent entities can use python mind classes
other than NPCMind, and added config section for specifying which.
* Tweaked python mind code for Pig, Wolf and Skeleton so they work.
Al
off using debug flags.
* Added halt_time, which is number of seconds server should run before
it exits.
* Cleaned a bunch if the remaining memory leaks.
* Cleaned up the way time is handled.
* More tweaks to Python code and API to get Acorn working.
* Inlined some methods into the class definitions, for performance.
* Updated movement code to sort out setting mode properlly, and
deal with stuttering NPC movement.
This is quite a big commit, and most of Acorn now works. Performance seems
to be good too.
leak now is copied Location objects in the python interface code.
* Added hook into the time code so the server can be set to exit
after a given number of seconds. This is required for LeakTracer
to generate its report.
Al
clag the server up and are not correct behavoir.
* Minor fixes/python tweaks.
* Slight change to ordering of ops in the queue, so more recently
created ops with the same time stamp come of the queue after
older ops.
* Implemented contains attribute so newly created objects are added
to their parents contains list, and when objects are move, they are
transfered from old parents to new parents contains list.
Lots more stuff is now happening in the world, though I can't see what it is
because things don't show up in uclient now that broadcast Look doesn't
work. It is also clear that I need to seriously attack the memory leak situation
now.
Al
* More python code tweaks to work with modifications to interface.
* Modified code which gets Thing attributes from Message::Object
so it can use any object dictionary to look up parent object.
* Fixed handling of Thing's static type attribute.
* Modified creation of operations from python to eliminate
some strange segfaults.
* Re-wrote and fixed Entity creation from python.
* Implemented dictlist.remove_value for removing things from inventory.
* Implemented Vector3D arithmetic and methods from python.
* Implemented as_entity() and get_xyz() methods for Thing from
python.
* Commented out deletion of operations from python OperationObject
dealloc() function as it was causing segfaults. There is a problem
somewhere with ownership not being cleared, but I can't find it.
* Implemented conversion of Python Operation and Oplist objects
to Message::Object.
* Fixed MemMap so that attributes of Things are accuratly updated.
* Fixed it so that look ops from mind are broadcast rather than sent
to world. This may have to be reverted.
* Tweaked autoconf to make it cleaner and work better. Still needs
alot of work.
A simple test of some goals now works! The lych goals worked to some
extent and no-longer gives python errors. Only a few more things are
required before Acorn can run, at which point I will release 0.1
for testing.
Al
log.
* Added in lots of deletes to sort memory leaks.
* More python tweaks.
* Implemented status attributes of thing.
* Re-wrote some code which needlessly creates objects in the
free store.
Very nearly all works now.
TODO:
Tidy some of the rest of the leak handling, including all of the stuff
to deal with connections going down.
Sort out how mind gets its attributes set and updated.
Sort out iritating python error in init of Vector3D
delete oplists in OplistObjects. The pointers are never passed back.
Al
* Implemented python function to deal with not being able to check
type of python objects implemented in C.
* Added method to thing for extracting location data from a
Message::Object
* More work on python references to improve leakage.
* Added flag so that python Operation object can own
the operation they point to, and thus delete it in dealloc().
* Implemented find_by_location() and find_by_type() as required in
MemMap, and corresponding python interface.
* Put in temporary work around to deal with the fact that a mind
does not know its name. Currently the mind is not able to
discover any of its bodies attributes, and I am not sure how
to solve this.
* Fixed Location and Vector3D so they use operator bool() to detect
whether they are set.
* Fixed bugs in getting parent from Location in python which caused
segfaults.
* Imported all the basic ruleset entity python scripts.
Goals now work to some extent, though nothing moves around still. The main
priority is to work out how minds inherit the attributes of their
bodies, and keep them up to date. aloril?
Al
* Added Talk operation throughout operation handling code.
* Added basic WorldTime class together with python wrapper.
Can fill in functionality as required.
* Put debugging back in cos I still need it.
Python mind code now gets talk ops. Some tweaking still to go.
* Implemented getting and setting of to and from in operations
using map to lookup what the mind knows about the entities
in question. This involved adding an extra field to the
RootOperationObject structure to store to and from entities.
* Sorted out base_init() python member so __init__() of all
classes in inheritance tree are called.
* Started work on set_kw() replacement.
* Added python module finding mechanism which is required to deal
with rulesets correctly. I am not convinced this works.
Al
* Added new MovementInfo method which creates a movement op to
change the rotation of a character when no other update is needed.
I believe these two changes solve all Karstens current concerns with movement
from uclient. Movement in the new server feels very slick, and after many
hours of work I think I have got rid of most of the kinks, both those that
were in the original python code, and the ones I added when I ported it.
Al
here to start importing real mind code from cyphesis-py.
With a little bit of tweaking, I have now got the NPCMind code to import,
though it will almost certainly crash once you start trying to run
any methods.
added the necessary interface code.
* Initial port of MemMap class from python to C++, together with
python interface. Hopefully maintenance of MemMap can be kept
in C++ for speed if possible.
Al
with stopping when velocity is set to zero.
Movement now seems to work in uclient properlly. I have not yet been able
to test destination based movement in uclient, as uclient does not yet
implement right-click movement. Rounding errors in uclient also lead
to it sending move operations with very small velocities, which result
in the character walking on the spot. There are still some things to
be ironed out with face attribute.
Al
not being used to calculate direction when only velocity is
specified.
Movement is now much improved in uclient. Mode still does not work
correctly, and sight of move operation is not correctly generated when
character stops moving. Still working on it.
* Fixed setting weight as float on default Thing.
* Added more support for mode and face in movement code.
* Cleaned up the debugging output code.
* Fixed looking, and added support for contains attribute
Al
* Fixed set operation, and added attributes map to Thing.
* Started adding Python interface code.
* Starting changelog from initial attempt to port cyphesis into C++.
atlas is correctly.
Implemented most of the mind<->body interaction required for Character(),
and most of the operation handling for Thing(). Entities should now be
able to do stuff in the world.
Left to do, I need to work out how to implement the set operation,
and then work out a mechanism for returning multiple operation from
a function.
Al
botched attempt to add support for optimised non-string object ids.
Modified the idle routine so it now delivers all the waiting operations
rather than only one per cycle.
Al
objects in the world, mind and external minds. You can now log in, create
a character, and witness other operations in the world through receiving
sight operations.
Al
Now adding character body and mind code so mind and body abstraction can
work and communication between client and server character entity can
work. The code is not currently in any particular state, but I have not
commited for a while, so I am doing it now for security.
Al