2025-09-17 09:43 CEST

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0000067Spring engineUnit Scriptingpublic2009-05-20 12:03
ReporterArgh 
Assigned Totvo 
PrioritynormalSeveritytrivialReproducibilityalways
StatusclosedResolutionno change required 
Product Version 
Target VersionFixed in Version 
Summary0000067: BOS Scripting Order-of-Execution
DescriptionBOS scripts are being parsed and executed line-by-line. This would normally be OK, but I have observed that with very long BOS scripts (i.e., a lot of commands that are supposed to execute "now") that this is leading to synchronization errors. This is not a crash bug- it's an aesthetics issue, and minor.

My request is that a BOS that contains "now" instructions executes them as a batch of commands sent all at once to the rendering system. I know, I know- *everything* must be put into order in the thread somewhere- Spring doesn't really execute more than one thing at once- but it's pretty obvious that every current BOS line is being batched up for every frame, instead batching up all commands that are on multiple lines but read "now", and then the BOS parser waits until the next tick, which is not ideal. In short, this is an issue with the parser. It's trivial, but has some annoying side-effects in terms of achieving perfect animation synchronization.

If you would like to see a script where this can be observed in detail, I will make a test piece that will demonstrate this very fully- the pause between lines being executed seems to be almost exactly one tick, so with a large enough batch of commands, this becomes an issue fairly quickly.
Additional InformationHardware:

Athlon XP 2800+
1024MB DDR 3200 RAM
Windows XP Pro, current as of last security update.
GeForce 6600GT, 128MB
Using Asus motherboard, Via chipset.
TagsNo tags attached.
Checked infolog.txt for Errors
Attached Files

-Relationships
+Relationships

-Notes

~0000096

fnordia (reporter)

I don't quite understand what you mean I'm afraid. I think you are saying that the cob engine waits a tick between each move/turn now command, but that should not be happening, so I think I am misunderstanding something.

Perhaps it would be clearer if you made an script that shows the issue.

~0000105

Argh (reporter)

I'll put together a demonstration of this, and send it your way.

~0003449

tvo (reporter)

With all my Lua/COB refactoring I've seen how the code works and this can not happen. The COB interpreter runs until an explicit yield (e.g. sleep, wait for turn, wait for move): Spring never preemptively suspends a COB thread.

(IOW, proof using recent Spring or it didn't happen.)
+Notes

-Issue History
Date Modified Username Field Change
2006-02-18 22:46 Argh New Issue
2006-02-18 22:46 Argh Status new => assigned
2006-02-18 22:46 Argh Assigned To => fnordia
2006-03-03 21:34 fnordia Note Added: 0000096
2006-03-03 21:34 fnordia Status assigned => feedback
2006-03-09 17:15 Argh Note Added: 0000105
2009-05-20 11:58 tvo Status feedback => assigned
2009-05-20 11:58 tvo Assigned To fnordia => tvo
2009-05-20 12:03 tvo Note Added: 0003449
2009-05-20 12:03 tvo Status assigned => closed
2009-05-20 12:03 tvo Resolution open => no change required
+Issue History