CSBuild Version 0.785
Moderator: Zyx
Forum rules
Please read the Forum rules and policies before posting.
Please read the Forum rules and policies before posting.
Re: CSBuild Version 0.785
31) I tried 785g. The copy function seems to work, this is great! Thank for your effort on the clones, Paul.
However, each time I make a copy, when I close the dialog, the list of the clones disappear and I have to check again all the objects.
32) It still says : "cloned disabled", so it is difficult to know what it is. If you could mention the graphic, it would help.
33) Could a double-click be the same as a click on the repair button?
18) I forgot to say, about the random decoration, it shouldn't either appear on the sides of stairs.
However, each time I make a copy, when I close the dialog, the list of the clones disappear and I have to check again all the objects.
32) It still says : "cloned disabled", so it is difficult to know what it is. If you could mention the graphic, it would help.
33) Could a double-click be the same as a click on the repair button?
18) I forgot to say, about the random decoration, it shouldn't either appear on the sides of stairs.
- Paul Stevens
- CSBwin Guru
- Posts: 4322
- Joined: Sun Apr 08, 2001 6:00 pm
- Location: Madison, Wisconsin, USA
Re: CSBuild Version 0.785
31) It disappears by design. Otherwise I have to
update the information during the repairs.....and that
is a lot of work. That is why I implemented the 'Copy All'.
So you don't have to do them one at a time. I got **VERY**
accustomed to typing 'Alt-C O'. I also spent a lot of time
making the search faster so that it would not be so painful.
32) Graphic names ....that is a good idea.
33) Double-click means 'Repair'...that is a good idea.
34) Eliminate automatic random graphics from stairwells....OK
[Attempt 3 - A Birdie]
update the information during the repairs.....and that
is a lot of work. That is why I implemented the 'Copy All'.
So you don't have to do them one at a time. I got **VERY**
accustomed to typing 'Alt-C O'. I also spent a lot of time
making the search faster so that it would not be so painful.
32) Graphic names ....that is a good idea.
33) Double-click means 'Repair'...that is a good idea.
34) Eliminate automatic random graphics from stairwells....OK
[Attempt 3 - A Birdie]
- Paul Stevens
- CSBwin Guru
- Posts: 4322
- Joined: Sun Apr 08, 2001 6:00 pm
- Location: Madison, Wisconsin, USA
Re: CSBuild Version 0.785
CSBuild (experimental) version 0.785h is posted.
It implements the Double-click and graphic names of clones
suggestions. You need to remember that a clone (by definition)
can appear on more than one level and therefore could have
more than one graphic name. I only print one.
It implements the Double-click and graphic names of clones
suggestions. You need to remember that a clone (by definition)
can appear on more than one level and therefore could have
more than one graphic name. I only print one.
Re: CSBuild Version 0.785
35) If a monster carries a pressure pad and I delete this pressure pad, CSBuild crashes.
36) If a portrait has more objects on his wall than he can carries in the backpack, CSBwin crashes.
37) With Dmute it was possible to set a wall graphic called "text". It lokked like garbage text. In CSBuild it is no more available and was replaced by square alcove, I think. Could you make it available?
38) I don't understnad very well in which case there would be a Synonym... How do I know the clone is a synonyn? Could you give an example?
36) If a portrait has more objects on his wall than he can carries in the backpack, CSBwin crashes.
37) With Dmute it was possible to set a wall graphic called "text". It lokked like garbage text. In CSBuild it is no more available and was replaced by square alcove, I think. Could you make it available?
38) I don't understnad very well in which case there would be a Synonym... How do I know the clone is a synonyn? Could you give an example?
Re: CSBuild Version 0.785
Thank you for your quick implementation of 32 and 33.
35) If a monster carries a pressure pad and I delete this pressure pad, CSBuild crashes.
36) If a portrait has more objects on his wall than he can carries in the backpack, CSBwin crashes.
37) With Dmute it was possible to set a wall graphic called "text". It lokked like garbage text. In CSBuild it is no more available and was replaced by square alcove, I think. Could you make it available?
38) I don't understand very well in which case there would be a Synonym... How do I know the clone is a synonyn? Could you give an example?
35) If a monster carries a pressure pad and I delete this pressure pad, CSBuild crashes.
36) If a portrait has more objects on his wall than he can carries in the backpack, CSBwin crashes.
37) With Dmute it was possible to set a wall graphic called "text". It lokked like garbage text. In CSBuild it is no more available and was replaced by square alcove, I think. Could you make it available?
38) I don't understand very well in which case there would be a Synonym... How do I know the clone is a synonyn? Could you give an example?
- Paul Stevens
- CSBwin Guru
- Posts: 4322
- Joined: Sun Apr 08, 2001 6:00 pm
- Location: Madison, Wisconsin, USA
Re: CSBuild Version 0.785
35) Carded.
36) Carded.
37) I have no idea how to do this. Graphics for each level are
in a list. Each Actuator has an ordinal number (1 to n) that is used
to select an item for the list. What else can I out in that ordinal
number besides 0 to n (Zero means no graphic)?
38) Synonyms. Be careful what you ask for. You are about to
get it.
Each object in the dungeon is represented by a 'structure' (or
database record or whatever you like to call it). They are different
sizes for different kinds of objects....Teleporters, Actuators, Potions,
et cetera.
The cells of the dungeon maps and objects within the dungeon
can 'contain' objects. Unfortunately, there are only sixteen bits
available to identify what objects are contained in a Chest, for
example. So you cannot put a pointer there. The way FTL solved
this problem caused a limitation of 1022 objects of each type. I
have solved the problem as follows.
I have a table of pointers (A bit of a lie but good enough for now).
This table is 65536 long. So an index into the table is 16 bits
long. Just right for Chests, dungeon cells, backpacks, etc.
But there can be more than one pointer in the table that
points to a particular database record (or object record) in the
case of Cloned objects.
So, let us say that a particular Screamer is Cloned and appears in
two different cells. Its database address is 0x123456. Now
there are two ways this Screamer can be in both cells at once.
1) There can be one pointer in the table and both cells can
reference that pointer. The pointer table might look like this:
0-???
1-???
2-0x1234546 (the address of the Screamer
3-???
and both cells would contain the number 2.
2)There can be two pointers in the table that point to the
same database record. The pointer table might look like
this:
0-???
1-???
2-0x123456 (the address of the Screamer)
3-???
4-0x123456 (the address of the Screamer)
and one cell contains the number 2 and the other cell contains
the number 4. In this case, the number 2 and the number 4 are
synonyms for that Screamer.
I have probably not been consistent about my terminology
concerning this table of pointers. But it is a classic 'indirect'
reference (like Windows handles) table. I will try in
the future to call the it the Object Indirect Reference Table. I will
try to call an entry in this table an Object Indirect Pointer. I
will try to call an index of an entry in this table an Object
Indirect Index. I wrote these names down and put them on
my bulletin board.
So...'Synonyms' are two Object Indirect Indices that reference
the same Object. They can occur when I am reading a dungeon
file and I encounter a cloned object. I allocate an Object
Indirect Pointer for each occurance. The alternative is a very
long search for each object in the dungeon or a very
complicated scheme for 'inverting' the database to find which
cells, monsters, et cetera reference each database record.
Moreover, it is a bit late to avoid synonyms since so many
are already in existance.
How can you tell? Why do you want to tell????
But generally, CSBuild shows the Object Indirect Index of an
object and you can look to see if the several occurances of
a cloned object have the same Object Indirect Index. Again,
why do you want to know?
36) Carded.
37) I have no idea how to do this. Graphics for each level are
in a list. Each Actuator has an ordinal number (1 to n) that is used
to select an item for the list. What else can I out in that ordinal
number besides 0 to n (Zero means no graphic)?
38) Synonyms. Be careful what you ask for. You are about to
get it.
Each object in the dungeon is represented by a 'structure' (or
database record or whatever you like to call it). They are different
sizes for different kinds of objects....Teleporters, Actuators, Potions,
et cetera.
The cells of the dungeon maps and objects within the dungeon
can 'contain' objects. Unfortunately, there are only sixteen bits
available to identify what objects are contained in a Chest, for
example. So you cannot put a pointer there. The way FTL solved
this problem caused a limitation of 1022 objects of each type. I
have solved the problem as follows.
I have a table of pointers (A bit of a lie but good enough for now).
This table is 65536 long. So an index into the table is 16 bits
long. Just right for Chests, dungeon cells, backpacks, etc.
But there can be more than one pointer in the table that
points to a particular database record (or object record) in the
case of Cloned objects.
So, let us say that a particular Screamer is Cloned and appears in
two different cells. Its database address is 0x123456. Now
there are two ways this Screamer can be in both cells at once.
1) There can be one pointer in the table and both cells can
reference that pointer. The pointer table might look like this:
0-???
1-???
2-0x1234546 (the address of the Screamer
3-???
and both cells would contain the number 2.
2)There can be two pointers in the table that point to the
same database record. The pointer table might look like
this:
0-???
1-???
2-0x123456 (the address of the Screamer)
3-???
4-0x123456 (the address of the Screamer)
and one cell contains the number 2 and the other cell contains
the number 4. In this case, the number 2 and the number 4 are
synonyms for that Screamer.
I have probably not been consistent about my terminology
concerning this table of pointers. But it is a classic 'indirect'
reference (like Windows handles) table. I will try in
the future to call the it the Object Indirect Reference Table. I will
try to call an entry in this table an Object Indirect Pointer. I
will try to call an index of an entry in this table an Object
Indirect Index. I wrote these names down and put them on
my bulletin board.
So...'Synonyms' are two Object Indirect Indices that reference
the same Object. They can occur when I am reading a dungeon
file and I encounter a cloned object. I allocate an Object
Indirect Pointer for each occurance. The alternative is a very
long search for each object in the dungeon or a very
complicated scheme for 'inverting' the database to find which
cells, monsters, et cetera reference each database record.
Moreover, it is a bit late to avoid synonyms since so many
are already in existance.
How can you tell? Why do you want to tell????
But generally, CSBuild shows the Object Indirect Index of an
object and you can look to see if the several occurances of
a cloned object have the same Object Indirect Index. Again,
why do you want to know?
Re: CSBuild Version 0.785
37) Well, it looks like the list of graphics is missing an item. How do you know your list is exhaustive?
Thank you for your explications. For once, I understood everything at the first reading!
Why do I want to tell?
Because you said:
"Also, because of the fact that Clones can have Synonyms,
deleting any reference to a clone can result in an orphaned
Synonym because other references might use different names
for the same cloned object."
I'd like to know if I can avoid creating more orphans.
So, let suppose we have two distinct Object Indirect Pointers for the same object in a database. They are Synonyms.
I delete all the references to the 1st Object Indirect Pointer. Does that delete also the real object in the database?
Will I obtain a reference to a non existing object for the 2nd Object Indirect Pointer?
Maybe I should have begun with asking what an Orphan Synonym is :-)
Some observations:
38) After repairing a cloned teleporter, if I choose UNDO, CSBuild crashes.
39) Sometimes there is only one cloned object, with no parent. Should I understand it is a clone of an orphan? Should I make a copy then? Should I erase the orphan (I can't)?
40) What is the difference between copying all but one and copying all? In particular, in some cases, if i copy all but one, then the clones will reappear in the next check. If I copy all, they don't. I think it is in the case of several clones on the same tiles.
Thank you for your explications. For once, I understood everything at the first reading!
Why do I want to tell?
Because you said:
"Also, because of the fact that Clones can have Synonyms,
deleting any reference to a clone can result in an orphaned
Synonym because other references might use different names
for the same cloned object."
I'd like to know if I can avoid creating more orphans.
So, let suppose we have two distinct Object Indirect Pointers for the same object in a database. They are Synonyms.
I delete all the references to the 1st Object Indirect Pointer. Does that delete also the real object in the database?
Will I obtain a reference to a non existing object for the 2nd Object Indirect Pointer?
Maybe I should have begun with asking what an Orphan Synonym is :-)
Some observations:
38) After repairing a cloned teleporter, if I choose UNDO, CSBuild crashes.
39) Sometimes there is only one cloned object, with no parent. Should I understand it is a clone of an orphan? Should I make a copy then? Should I erase the orphan (I can't)?
40) What is the difference between copying all but one and copying all? In particular, in some cases, if i copy all but one, then the clones will reappear in the next check. If I copy all, they don't. I think it is in the case of several clones on the same tiles.
- Paul Stevens
- CSBwin Guru
- Posts: 4322
- Joined: Sun Apr 08, 2001 6:00 pm
- Location: Madison, Wisconsin, USA
Re: CSBuild Version 0.785
37) I do not know. I was given a list by someone on this
forum when we first started the DMBuilder and CSBuild projects.
You should not worry about creating Orphaned Object Indirect
Pointers. We will eventually provide a way to rid the dungeon
of Orphans. But not right away Let us introduce one potential
disaster at a time. The clone-buster can cause plenty of
problems all by its lonesome.
No. The Clone-buster code actually 'Deletes' nothing. By design.
If you use it to delete all references to all Object Indirect Pointers
then you will create (perhaps several) Orphanded Object Indirect
Pointers and one Orphaned database record. Again, we will
provide a way to get rid of them later.
38) Ooooops. Undo is supposed to be disabled after any
Clone-buster operation. I'll fix the crash
39) I need to see that. Sounds like a error in my code.
40) I may not understand you here. Are you talking about
a clone with several parents in these two cases:??
a) You 'Repair' and click on the 'Copy all but one'.
b) You select ALL of them them (one at a time) and click on 'Copy'.
**********REMEMBER**********
This code has been labeled 'Experimental'. Until we get more
actual use of it by you and (hopefully) some others. My tests
are rather cursory. I check that CSBuild does not crash
and the clones disappear.....nothing else.
forum when we first started the DMBuilder and CSBuild projects.
You should not worry about creating Orphaned Object Indirect
Pointers. We will eventually provide a way to rid the dungeon
of Orphans. But not right away Let us introduce one potential
disaster at a time. The clone-buster can cause plenty of
problems all by its lonesome.
No. The Clone-buster code actually 'Deletes' nothing. By design.
If you use it to delete all references to all Object Indirect Pointers
then you will create (perhaps several) Orphanded Object Indirect
Pointers and one Orphaned database record. Again, we will
provide a way to get rid of them later.
38) Ooooops. Undo is supposed to be disabled after any
Clone-buster operation. I'll fix the crash
39) I need to see that. Sounds like a error in my code.
40) I may not understand you here. Are you talking about
a clone with several parents in these two cases:??
a) You 'Repair' and click on the 'Copy all but one'.
b) You select ALL of them them (one at a time) and click on 'Copy'.
**********REMEMBER**********
This code has been labeled 'Experimental'. Until we get more
actual use of it by you and (hopefully) some others. My tests
are rather cursory. I check that CSBuild does not crash
and the clones disappear.....nothing else.
Re: CSBuild Version 0.785
37) I checked the available wall decorations in Dmute. The text is missing in your list. By the way, it could be possible to put floor graphics on walls, right? (just seeding ideas...)
39) In the dungeon I sent you, you have an example of a lonely clone at level 1. There is another clone on the same tile, but with a different parent, it seems. Just ALT+C then O to see them.
40) I do not understand "Clone with several parents".
What is the difference between a and b as you put it? What is the difference between leaving the last clone uncopied or copied?
About the 'Experimental' label: I understand your point of view, in fact I think I already decloned 99% of the dungeon without problem (only downside is that some monsters are not anymore invisible, but I can live with it, and surely the party will live with it!). So the question 40) is just about understanding.
41) In CSBwin the crack switch(out) is correctly found at the bottom of the wall. But the crack switch(in) is incorrectly found at the same height than a lock. This happens with the DM graphics.dat (which, I remember you, shows torches on the floor as a staff :-)
Look at 4(18,29) in the original DM dungeon for an example.
With CSB graphics.dat this doesn't happen.
42) Sometimes I still get an glitched "evil outside" from 2 tiles of distance.
39) In the dungeon I sent you, you have an example of a lonely clone at level 1. There is another clone on the same tile, but with a different parent, it seems. Just ALT+C then O to see them.
40) I do not understand "Clone with several parents".
What is the difference between a and b as you put it? What is the difference between leaving the last clone uncopied or copied?
About the 'Experimental' label: I understand your point of view, in fact I think I already decloned 99% of the dungeon without problem (only downside is that some monsters are not anymore invisible, but I can live with it, and surely the party will live with it!). So the question 40) is just about understanding.
41) In CSBwin the crack switch(out) is correctly found at the bottom of the wall. But the crack switch(in) is incorrectly found at the same height than a lock. This happens with the DM graphics.dat (which, I remember you, shows torches on the floor as a staff :-)
Look at 4(18,29) in the original DM dungeon for an example.
With CSB graphics.dat this doesn't happen.
42) Sometimes I still get an glitched "evil outside" from 2 tiles of distance.
- Paul Stevens
- CSBwin Guru
- Posts: 4322
- Joined: Sun Apr 08, 2001 6:00 pm
- Location: Madison, Wisconsin, USA
Re: CSBuild Version 0.785
I have not yet addressed the pojts in your most recent
posting.
I posted CSBuild (experimental) version 0.785i. It fixes
some bad things. Don't know if it fixed any of yours.
Later this evening I will read and reply to your most recent
post.
posting.
I posted CSBuild (experimental) version 0.785i. It fixes
some bad things. Don't know if it fixed any of yours.
Later this evening I will read and reply to your most recent
post.
- Paul Stevens
- CSBwin Guru
- Posts: 4322
- Joined: Sun Apr 08, 2001 6:00 pm
- Location: Madison, Wisconsin, USA
Re: CSBuild Version 0.785
37) Floor graphics on walls? What would you expect to
happen? Besides, I think there are two separate lists
of graphics in the graphics file. Are you next going to be
wanting Monster Graphics on the floor? Text graphics
on Monsters? Fountains on the doors?
The missing text graphic? If you provide me with a dungeon
that has this graphic perhaps I can see how it was done.
39) That Scroll on level 1 contains something other than
Text. I think it contains another Scroll!!! Most of my code
expects a Scroll to contain Text and, indeed, it crashed under
some circumstances. I have fixed some of these crashes in
version 0.785i. Soon I will provide a warning and a way to
fix this error in the dungeon.
40) You have two questions here, if I understand.
40-1) What is a clone with several parents? Here we go again.
A clone can appear in the dungeon in two ways (well, probably
lots more but here are the two that answer your question).
For simplicity we will assume that the Clone is an Arrow and
is referenced in two cells of the dungeon and in both cells there
are two Objects, an apple and the arrow, and that an apple
comes first and the arrow comes last.
First - Multiple parents.....There are two different apples. The
apple is not cloned. There is apple-A and apple-B. Apple-A
points to the arrow and apple-B points to the arrow. So there
are two pointers in the dungeon that point to the arrow. The
arrow has two parents.
Second - Single parent.....There is only one apple. The apple is
cloned. Both cells point to the apple. The apple points to
the arrow. So the arrow appears in both cells because the
apple appears in both cells. But there is only one pointer in
the dungeon that points ot the arrow. The arrow has only
one parent.
40-2) The difference between copying them all and copying all
but one is that copying them all copies them all, and copying
all but one leaves one uncopied. How many ways can this
be said? To rid the dungeon of the clone it is not necessary
to copy them all.....when only one is left then it is no longer a
clone and does not need to be copied. If you make a copy of
the last one then the original will become an orphan. Which
is not too terrible. Functionally, all these methods should be
exactly equivalent. The 'Copy-all-but-one' uses the same code
that 'Copy' uses and applies it to each of the clone's parents
in turn.
41) The Crack Switch(in)....I don't understand this. I wrote it
on a card but it will not have much priority.
42) Glitched Evil....I thought I had fixed this once. Carded.
happen? Besides, I think there are two separate lists
of graphics in the graphics file. Are you next going to be
wanting Monster Graphics on the floor? Text graphics
on Monsters? Fountains on the doors?
The missing text graphic? If you provide me with a dungeon
that has this graphic perhaps I can see how it was done.
39) That Scroll on level 1 contains something other than
Text. I think it contains another Scroll!!! Most of my code
expects a Scroll to contain Text and, indeed, it crashed under
some circumstances. I have fixed some of these crashes in
version 0.785i. Soon I will provide a warning and a way to
fix this error in the dungeon.
40) You have two questions here, if I understand.
40-1) What is a clone with several parents? Here we go again.
A clone can appear in the dungeon in two ways (well, probably
lots more but here are the two that answer your question).
For simplicity we will assume that the Clone is an Arrow and
is referenced in two cells of the dungeon and in both cells there
are two Objects, an apple and the arrow, and that an apple
comes first and the arrow comes last.
First - Multiple parents.....There are two different apples. The
apple is not cloned. There is apple-A and apple-B. Apple-A
points to the arrow and apple-B points to the arrow. So there
are two pointers in the dungeon that point to the arrow. The
arrow has two parents.
Second - Single parent.....There is only one apple. The apple is
cloned. Both cells point to the apple. The apple points to
the arrow. So the arrow appears in both cells because the
apple appears in both cells. But there is only one pointer in
the dungeon that points ot the arrow. The arrow has only
one parent.
40-2) The difference between copying them all and copying all
but one is that copying them all copies them all, and copying
all but one leaves one uncopied. How many ways can this
be said? To rid the dungeon of the clone it is not necessary
to copy them all.....when only one is left then it is no longer a
clone and does not need to be copied. If you make a copy of
the last one then the original will become an orphan. Which
is not too terrible. Functionally, all these methods should be
exactly equivalent. The 'Copy-all-but-one' uses the same code
that 'Copy' uses and applies it to each of the clone's parents
in turn.
41) The Crack Switch(in)....I don't understand this. I wrote it
on a card but it will not have much priority.
42) Glitched Evil....I thought I had fixed this once. Carded.