The TWIGZ Progress Page
This is where you come to find out what's new with the TWIGZ Engine
   
 
7.29.2002 - The first screen of the TWIGZ Engine

The very first screenshot
   
8.13.2002 - The biggest bug as of yet has finally been destroyed. It took 2 grueling days to finally figure out the problem. Turns out our map editing program saved graphics incorrectly causing errors when they were loaded in the actual game. The bug is DESTROYED and the game development has resumed full speed, expect more recent screens in the next few days. Keep checking this page for updates.

BUG 1 - The "If this happens one more time I will take my computer outside and bash it with a rock" Bug
STATUS:
Fixed

Bug 1 has finally been destroyed this is a screen of what the interface will look like. The map and the objects are tests, so don't expect the graphics to be sketchy and out of place like in the screen. The ENGINE IS WORKING!!
   
8.14.2002 - Next on the "to-do" list is to get the inventory and verbs working. Verbs such as "Walk to", "Pick up", "Open", etc. Expect screens of the progress soon.  
   
8.17.2002 - The verb graphics have been replaced with semi-permanent ones and the verbs themselves are almost completely working. As of right now the main concern is determining every type of object that can be on a map screen, these include animated objects, replaceable objects, objects that can be picked up, etc. Once this is sorted out the verb engine, in its entirety, will be complete. Keep checking in for more news about the progress of our TWIGZ Engine.

Here's a shot of what the screen looks like as of now. Those verbs at the bottom look much better than in the picture above, don't you agree?
   
8.21.2002 - Woooo Hoooo!! Not only does the TWIGZ Engine detect map objects 100% perfectly, but now they can be examined. The dialogue that the main character will say when examining the objects has been stored in a separate file and that will be accessed during game play. Soon there will be separate files for each verb and how the main character interacts with the object the verb is used with. I don't know about you but we're excited. The Engine is coming along nicely. Note: In the picture to the right the text at the top is what the main character will say when examining that map object. Of course it will be displayed with a much nicer font and above the character when he is on the screen. Also the map graphic you see is a crude drawing used during programming, the final graphics will be MUCH better we assure you. Remember Step 1 is the Engine, Step 2 is the graphics!

Check out this new screen!
   
8.28.2002 - Sorry for the delay folks, we've been working so hard on getting the Great Escape Level Editing Competition up and running that we strayed from the TWIGZ Engine, but we're back BABY!! The verbs are all working nicely and currently we're working on objects that can be picked up, once they are picked up the game has to know that they aren't there anymore, even if you leave and come back! We've decided the best way to do this is with external temporary files that tell the game what has been picked up and what hasn't, then if the game is exited without being saved this file is simply killed off. If it is saved it just gets copied to a save game file. More on this soon!  
   
8.30.2002 - Check this out, great advances in the verb aspect of the TWIGZ Engine. Now Map Items can be examined, and there is appropriate dialogue for each item on a map. Also some Items can be picked up and once they are, they are placed in the inventory, removed from the map and the fact that it has been picked up will be saved in a temporary file! This way if one was to leave the map and return it would not be there again, unless the game has been re-loaded without saving. Keep an eye out for more updates and new screens!  
   
9.02.2002 - The TWIGZ Engine is now incorporating pixel by pixel scrolling for larger map areas, keep an eye out for an animated gif to see what it looks like, also we have been improving verb activity tremendously.  
   
9.5.2002 - Well, we have been working hard, very hard, on the verbs open, close, push, pull, and use. Why, you ask, I'll tell you why. You see the verbs themselves are actually quite simple but there remains one problem, these verbs can be used to change the appearance of many objects on a map. That doesn't seem like such a big deal, until we get into the idea that the engine must know about these changes and must be able to recognize the differences. Then these changes have to stay in effect, even if the character leaves that map, because when he returns, all must look the way it did when he left. Then, only if the game is saved, are these effects permanent. (EXAMPLE: A a cover on a well can be removed then the object name "Well Cover" must become "Well Opening" and then the Engine must know that that can now be entered, etc.)
We worked on this for hours and hours and got very far but by the end we felt that the coding we used was too sloppy and the effects weren't significant enough to keep the changes. Many things still need to be worked out. We will continue to work on this bug until it is all fixed.

BUG 2 - The Open Bug
STATUS:
Pending

This animated gif shows that the scrolling does indeed work, however, only on 320 x 200 sized map will scroll as of yet. Click on the image to see an ACTUAL sized animated gif.
   
9.8.2002 - The Open Bug is still in effect but that will be fixed shortly. However, the inventory is completely working. All items can be picked up and are added to the inventory in the right order and once the first eight inventory slots are filled, the inventory becomes scrollable and you can cycle through your inventory. Please feel free to Contact Us and let us know what you think about TWIGZ's Progress and some ideas you would like to see in the game.  
   
9.10.2002 - The Open Bug has been DESTROYED and now items can be interacted with, changed by the engine and recognized as completely new objects. The engine is coming along incredibly. Keep an eye out for more screens.

BUG 2 - The Open Bug
STATUS:
Fixed
 
   
9.11.2002 - A Hero is Born! Take a look at the first, very early, pixelation of your hero and mine. Also we have worked on the inventory and almost all aspects of it are working 100%, after that we move onward to our last and final verbs, GIVE and USE. GIVE promises to be simple with a small amount of hang-ups, however, USE will be a GREAT challenge and we shall keep you posted. Contact Us and let us know what you think of our character.
........
Well what do you think? We're proud of our creation, but we know this is NOT the final sprite. Let us know what YOU think!
   
9.12.2002 - Great news for all you TWIGZ Fans! The Engine is coming along incredibly, with the recent addition of VARIABLES! Sounds simple, I know, but with these externally stored "BinVars" our engine now knows how to react before, after, and during an objects status change. For example, there is a door, it needs a key. If you try to open it without the key the character may say "I need a key" but if you did have that key the character would go ahead and open that door! Pretty sweet, huh! But it gets better! Now lets say you had to steal that key from a guard by knocking him out [Hint Hint ;o)] If you examine him before you knock him out the character may say "He has the keys" but after he is knocked out the character will say "He's unconscious, and keyless" Very exciting stuff! Also check out the new pixelations of our hero and let us know how you feel about all of them, what you like, dislike, etc. We'll keep you posted!
...........................
The black outlined ones are our favorites! What do you think?
   
9.16.2002 - With the addition of Yuri Fain, our new artist for all the TWIGZ Production Sketches and Character Designs, the graphical aspect of the TWIGZ Engine is in high gear. Check out the TWIGZ Production Page for more sketches and updated graphics. Here's a quick look at the newest of characters you will meet.
......
The Meditating Man: his wisdom is unmatched, except by his odor.
   
9.21.2002 - A small but very important addition to the TWIGZ Engine, the verbs push, pull, open, close, and use all change the status of BinVars (global variables) thus causing our engine to "know" what's going on inside the game  
   
9.29.2002 - It's been a little while since our last post, but that is with GREAT reason. We have been hard at work programming T*LiB (a graphical library written completely in Assembly) in order to prepare the TWIGZ Engine for all the graphical capabilities it needs. These include: Scrollable maps up to 960x144 pixels, sprite manipulation (transparency and clipping), mouse routines, and XMS capabilities! These aspects of the engine MUST be designed now so that we can better program the TWIGZ Engine. It would be rather difficult to program a scrollable map with various items spread throughout it, without actually being able to see it in action. So check out the T*LiB Progress Page to read more about our advances. Work on the TWIGZ Engine will resume Monday September 30, 2002. Thank you very much for all your patience and interest. Please let us know what you think, give us some suggestions and criticism.  
   
10.1.2002 - We have begun introducing the T*LiB into the TWIGZ Engine. The current aspect of the TWIGZ Engine in development is the DIALOGUE ENGINE! We decided we wanted to change the dialogue aspect of TWIGZ into a multi-path system where you can discuss MANY things and eventually venture back to the main topic of discussion. This allows for much more interesting dialogue! Now with the introduction of the T*LiB's new text routine, each character will have different colored dialogue to represent who is talking. Keep an eye out for more details on the DIALOGUE ENGINE. If you have any suggestions or comments, PLEASE lest us know!

Here is a screenshot of the T*LiB's new text routine in action.
Click the image to view it at full size.
   
10.4.2002 - Are you ready for exciting?! We here at Shattered Realm came to a realization yesterday: The TWIGZ Engine has some sloppy code! We we're a bit sad at this when it first came to our attention, but now we are content! We analyzed the code and realized there was only one sloppy aspect of the code, the BinVars!!! Probably the most important aspect of the TWIGZ Engine (comparable to fuel in a car, you can't use the car unless you've got some gas), but at the same time this was easily fixable! We realized something that had been hanging right in front of us since the start of T*LiB, we have XMS! All we need to do now is numerically list the variables and their statuses in XMS! It is that simple.

Now, you may say "What is a BinVar?" and we may respond by saying this: "They are variables, such as DoorOpened, which can have one of two values (0 or -1). If the BinVar's status is 0 then that action has not happened yet, if it is -1 it HAS happened. Now, instead of using names, we use numbers, and store the numbers (representing variables) in XMS chronologically. Then we can easily read their status!"

"... ummm ... that's great but how does that help anything?"
"Well, you see when you are in room 1 and you open a window, pick up a spoon, and close a cabinet this information will be stored in XMS. Then when you exit room 1 and re-enter all this information can be received from XMS and all the changes you have made will show on the screen!! Also, XMS can be copied to a file as a save game, meaning when you save your game all the BinVar statuses are saved as well!"

Pretty exciting, I know! Anyway keep checking us out for more updates. Keep an eye out for info on our upcoming scripting aspect of the TWIGZ Engine.
 
   

10.7.2002 - Working with the BinVars has been a great learning experience for us!

Here's what we have so far:
1. The engine now creates save game files (saving the status of all objects on all maps throughout the game)
2. The engine has been designed so that once development is done for one level, all remaining levels can be programmed about 99.99999% FASTER then the first. We are designing this engine with a future in mind, this way it will easily be able to do all standard routines that the game may ask for. Then anything special can be programmed separately.
3. Tomorrow we attempt to conquer the USE verb! This is the one verb that has many, many different ways it can be used, thus creating a great challenge for us. Don't worry, however, we feel confident in our abilities to take it on!

What's Left:
- Dialogue Engine will be redone!
- Scrolling must be implemented into the engine (the routine itself is complete)
- The sprite layer must be handled properly
- Walking algorithm must be programmed
- GIVE verb must be programmed
- Scripting for animations must be coded (this is our next great challenge)
- Animation director must be programmed (for reading scripted animations)
- Scaling and Masking routines for T*LiB are needed
- Graphic Overhaul (this is where all the graphics are created, this is at the very end of production)
- Final Touches, Music addition

ESTIMATED TIME OF COMPLETION:
November 11, 2002 (Release of first fully functional demo, unpolished graphics)

Final Release Date - Pending

Keep checking in with us for more updates. Please let us know if you have any ideas or suggestions for our project!

 
   
10.11.2002 - The USE Verb is still being tweaked, and will continue to be so for about another week. However, more GREAT advances in the world of TWIGZ! First off is the implementation of T*LiB, which is 100% effective as of yet.

The Engine's New Features Include:
- Triple Buffered Graphic Handling
- Fully Manipulative Sprite Layer
- Separate Animation Timers
- Scripted Animations
- Dialogue Layer
- Custom Mouse Cursors

Scripted Animations - Our new pride and joy! With these, the engine performs animations according to a series of instructions, like that of a script for a play. (Example: Where to enter, exit, what to do, where to face, what to change, etc.) Also, the engine has Separate layers for dialogue and custom mouse cursors!

 
   
10.14.2002 - The USE verb now invokes the TWIGZ Scripting Engine and allows for specific directed animations and variable changes. We are currently developing a timer (in milliseconds) in order to correctly time the animations in TWIGZ. Keep an eye out for more information.  
   
10.21.2002 - The inventory's programming is now COMPLETE! All items can be picked up and will appear in the bottom left area of the screen (the inventory). There is a maximum amount of items that you can have (30 items) but keep in mind items can be used with other items to create totally different items. Keep an eye out for a screen of the inventory in action.

Also, the TWIGZ Scripting Engine is ever-growing with new commands that will allow the TWIGZ Engine to decipher exact animation cues, including the $AddInv command which adds an item to the inventory.

Note:
The lack of new screenshots is due to the fact that we are developing the engine and all of its aspects on a crude rendering of the first map in the game. All aspects of the engine will be identical for every map, however some will include some special aspects (which will be programmed upon completion of the engine's main aspects). Once programming for all main commands is complete, the graphics will follow quickly and shortly after. We appreciate your interest and patience :o)
 
   

10.24.2002 - The inventory is seriously 100% complete (we thought it was before, but we had to add a few things), here's what the inventory can do:

- Items are shown there (max of 30)
- Items can be used with other items in the inventory
- Items can be used with other items on the map
- Items can be given to other characters in the game
- Items can be gathered through the scripting engine
- Items, when combined, create a new item and eliminate original two
- Inventory is scrollable
- Items can be used to invoke the scripting engine

Also, programming is running very smoothly with these few exceptions (minor problems that need to be addressed)

- The graphic buffers used in QBasic were too large so we are converting to an XMS Buffer (thus, we've developed our MoveInXMS Routine)
- Scrolling routine needs to be rewritten in Assembly (we've been experiencing a few problems with that)
- A PutInXMS Routine must be developed (with transparency) to compensate for the loss of our QBasic Buffer (programming on that is about 50% complete)

The game is fully playable as of right now and the first map can be completed (without the graphical animations), however we still must do the following:

- Re - code the dialogue engine
- Create a text centering / coloring routine for multiple character dialogue
- Code the scaling algorithm
- Code the walking / path-finding algorithm
- Fix the above problems
- Polish up the Scripting Engine
- Finalize Graphics and music

The Demo Release Date may be pushed back a bit, we will keep you posted and remember don't forget to vote, your input counts!

 
   

10.26.2002 - The results are in for our first poll: "What do you value most in adventure games?" and here are the results:

Hilarious Dialogue - 13%

Entertaining Storyline - 13%
New and Original Characters - 0%
High Quality Music - 0%

Easy and Comprehensive Controls - 13%

Great Graphics with Smooth Animations - 38%

All of These Should Be Stressed Equally - 25%

I'm Not a Big Fan of Adventure Games - 0%

This means that our scrolling engine (currently in development) will be created to ensure smooth, 100% flicker-free animations. Also all animations will be drawn with great care to ensure optimum results.

The dialogue and storyline are in development and will be as hilarious and entertaining as humanly possible.

As expected we will strive to maintain a balance between all of these!

 
   
10.28.2002 - Seeing how important smooth animations and great graphics are to the majority of people (see above) we have incorporated EMS support along with our previous XMS memory. This allows EMS to act as our off-screen buffer allowing for more memory within QBasic. Also we have added a Transparent PCopy routine that will allow for parallax (multi-layerd) Scrolling!

We told you your input was important ;o)
 
   
11.03.2002 - The TWIGZ Engine now fully relies on EMS and XMS. Due to the memory restrictions of QBasic it has been decided (and put into effect) that all graphical data (e.g. fonts, maps, characters, etc.) will be stored in XMS memory. They can then be retrieved by the engine and placed in the EMS buffer. All graphics to make up one FULL SCREEN will be drawn on the EMS Buffer then copied to the screen segment - thus creating smooth, flicker less animation!

With the addition of T*LiB's new Scrolling Routine, TWIGZ can now scroll (horizontally) up to three maps (three screens) without flicker and without the use of a buffer. It is quite fast ;o)

We have also incorporated a Text Wrapping routine that wraps dialogue shown on screen. It places the text dialogue above the character who is speaking, centers it, and if the dialogue is too long to fit above the character in 3 lines it cuts off at the next word, pauses, erases the old text, and continues where it left off with the new text. It checks for screen borders and character position. We have decided, however, that this is NOT the best way to wrap dialogue. Since the text wrapping routine is mathematical ... it leaves little thought about the drama of certain dialogue. (For example: If a character were to say something surprising, they may lead up to the climax of their statement, pause, and then finish it. With a mathematical text wrap routine, it does not account drama when wrapping and cutting dialogue) so we will re-write this routine and place a "/" in the dialogue files of each character in the positions where dramatic pauses are necessary, this way WE can determine EXACTLY how the dialogue will be presented (after all, there may not be voices (recorded wav files) in this game ... so the dialogue is VERY important!)


A SCREENSHOT!!! It's nothing special but it gives you an idea of how we're progressing ... the character's colors are off because he does not have his own palette yet, the red mouse cursor is a moving sprite not the mouse (the blue mouse IS the mouse), also the character is moving! The items in the inventory on the bottom right are a stick (left) and a rock (right) these do not have their own palette yet, either.
Note: all graphics are crude and disgusting because graphics come after the engine (we believe)
   

11.07.2002 - Here's a list of what you can expect to see within the next week or so:

- TWIGZ Map Files with individual palettes (and an included constant palette for characters)

- PutEMS routine for T*LiB that will allow us to use EMS as a large array so that we can PUT any area of EMS with transparency (this would have been done in XMS but the XMS Memory Manager only allows 2 pixels to be read at a time)

- Costumes (that's what LucasArts calls 'em anyway) A costume is basically a sprite, for instance our main character. His costume consists of all movable parts of his body (head, arms, legs, torso). Each sprite in TWIGZ will have its own costume that will be stored in XMS and read using an offset table. The scripting engine will determine which part of a costume is shown, and when it is shown!

- With the above comes the constant updating of our scripting engine

What to expect a bit further down the line (two to three weeks from now):

- Walking algorithm using box matrix calculations (we're a bit afraid of this one ;o)

- Scaling algorithm for sprites (T*LiB)

- Final coding of the dialogue engine (along with the use of the "Talk To" verb)

- The "Give" Verb (will be quite simple, just need to have other characters on screen before this can work)

- Parallax Scrolling

- Z-Buffer Calculations to determine if the character is behind or in front of certain objects (we're a bit afraid of this too)

 
   

11.12.2002 - The Dialogue Engine is near completion, along with the Text Wrapping Routine for showing the dialogue on screen.

The Text Wrapping Routine:
- Wraps text according to dramatic cues and commands programmed into each script.
- The routine checks for off screen coordinates and makes sure that all text fits on the screen.
- The text routine calculates the length (in pixels) of each line of text and centers it above the character who is speaking the text (in his/her text color)

The Dialogue Engine:
- Calls upon the Text Wrapping Routine
- Can call scripts while text is being shown
- Will incorporate the use of costumes
-
Will include a command that has the speaking characters mouth moving along with the text

The Mouse Problem
is currently being fixed (the mouse is placed on top of all other sprites in the buffer before PCopy is executed)

Expect our work on COSTUMES to begin tomorrow, this is possibly the most important aspect of the TWIGZ Engine, more on that soon.

BUG 3 - The XMS Bug (Arrrrrrrrggggggggg!)
STATUS:
Pending
The XMS Bug occurs the first time TWIGZ is run after a boot up. What happens is that the information the engine stores in XMS when running, is not stored properly (this can be solved by exiting and re-loading the engine). We think that if we Allocated XMS then CLEARED it all, before we put any data into it, this would be fixed. We will work on that tomorrow too!

 
   

11.21.2002 - We have developed a new custom file: Costume (*.cos) files. These files include all sprites related to a specific character on a specific map. For instance if TWIGZ is in a room and in that room he gets surprised, the costume of TWIGZ for that room will include all the sprites that make up the surprised animation (along with other animations for that character in that room).

The Costume Format: [*.cos]
- A costume file is saved as follows:

1. Total Number of Sprites
2. Sprite Offset Table
3. Sprites

When a costume file is read, all information is loaded into XMS where it deciphers all the above information. The total number of sprites is used in a FOR NEXT loop to store all the sprite offsets in the variable [SpriteOffsets(TotalNumberOfSprites)] Then when a desired sprite is to be read from XMS, the Engine finds the offset from the above variable and reads from the XMS memory at that position. It reads until it reaches the offset of the next sprite offset.

These costumes are loaded into XMS before the map is loaded and shown on the screen!

The Engine knows which sprite to load based on calls by the TWIGZ Scripting Engine. These commands are still in the works, so expect more on this soon!

 
   
11.25.2002 - WOAH! First off the TWIGZ Engine now scrolls maps up to 960 x 144 pixels and knows exactly where all objects are on the map as it scrolls :o) Then engine is able to recognize these "HOT" objects due to the use of global map positions and a simple scroll variable. The whole map now has its own palette independent of the sprites. Also the engine has the power to animate OVER 30 sprites and the mouse sprite layer WHILE scrolling the background without any flicker or flaws! The engine is running beautifully and we are growing ever so close to a completed engine. Check out the screenshots to the right and please Write Us an E-Mail with any questions, comments, suggestions, etc. Thank you!

This is the first crude rendering of the 960 x 144 pixel map we had the TWIGZ Engine scroll! It worked 100% perfect and the engine recognized all the "HOT" objects on the map when the mouse rolled over them.


This is a screen of the engine scrolling the above map. As the mouse rolled over the tongue of the giant smiley face the engine recognized it as an object! This is a huge step in the development of TWIGZ.


This is a screen from our graphics test! The TWIGZ Engine was scrolling the background from above along with animating 31 sprites at various speeds. The black pointer at the top middle of the screen is an animated sprite too. The mouse pointer color was changed to yellow for better visibility. Note: the sprites' palette has not been updated yet so the odd coloring is only temporary.
   
11.28.2002 - With the addition of the FIXED Sprite Clipping Routine you can now check out a SCREENSHOT of the TWIGZ Engine and see how it all looks.

Alright, CHECK THIS OUT!
First off note the sprite clipping with transparency! This is shown by the sprite that says "Im A Box." Also note that this sprite was loaded from a Costume [*.cos] and is stored in XMS! Then note the dialogue and transparent text when the engine "Looks" a the wall. You can then see the sprite layer is moving without flicker! The clipped sprite is moving where the mouse moves! All these graphics are moving while the background is scrolling. All this at 72 FPS!
   
12.01.2002 - The XMS Bug (BUG 3) from 11.12.2002 has been DESTROYED! It turns out, as do most bugs, that it was caused by a very stupid error. Instead of initializing all BinVars (0 to 5000) to FALSE (Value of 0), we initialized BinVars 1 to 5000 to FALSE leaving BinVar 0 set to whatever value was at that offset in XMS. Then when the engine loaded the "HOT" objects into memory it would skip all that required BinVar 0 to be set to FALSE.

Also note that work on the Path-Finding Algorithm has begun. We are using a technique that sets walkable areas on a map into different convex polygons and then calculates the shortest distance between these polygons through matrix multiplication. It is still very early in the works. More will be released shortly.

As of now there are NO KNOWN BUGS IN TWIGZ!

Expected Playable Beta Demo Release Date: January 15 2003
Note: This date is subject to change due to complications but we will try our hardest to reach this deadline!

BUG 3 - The XMS Bug (Arrrrrrrrggggggggg!)
STATUS:
Fixed
 
   
12.05.2002 - Well the Path-Finding Algorithm is giving us some troubles, but that's what programming is all about. For an idea of where we're getting the basis for our algorithm check out Path Finding In Complex Maps And The Black Art Of Linear Algebra It's a great resource! The explanation given in this tutorial is a bit confusing and is slowing our progress a bit. Don't worry, we'll sort it out soon enough. Keep checking back and feel free to E-Mail us with any suggestions, Questions, and Comments!  
   
12.16.2002 - It was quite simple once looked at for a while. In order to check if the character crosses his walkable barrier we've used the slope of a line formula y = mx + b along with x = (b1-b2) / (m2-m1) and y = (c1 - ((c2 * m1) / m2)) / (1 - (m1 / m2)) to determine a point where 2 lines will intersect (provided they are not parallel) therefore we are able to determine where the character will intersect with the walkable border of the map which is laid out in terms of connected convex polygons. The routine is still being worked on but it DOES work. Keep an eye out for more updates!  
   
12.18.2002 - Things are going great, we're moving along quite nicely. Here's what's new: We have a collision detection algorithm that works from all angles with a maximal error of 1 pixel! (This could be fixed but would require too many calculations for such a minor error) Also we are beginning to implement it into the engine. The pictures at the right show it in action, although it is hard to see exactly what is happening. We have laid out the first level's walking boxes and are testing our collision algorithm with it and all is going well. Of course there are many things that need to be worked out.

We have also started rewriting the dialogue engine to allow for multiple-branching dialogue.

This shows the character attempting to walk to the stick at the bottom of the screen but he is unable to due to a collision detected in the walking box laid out around him! Boxes like these will be laid out (invisibly) throughout the level and connected through a series of matrix calculations to determine a shortest walkable route.
Note: the white point inside the white box is the point of intersection.


This just shows a green line set as a collision border and multiple lines shooting toward it. If a collision is detected then the lines will stop.
Note
: the error is 1 pixel :o( but that is perfectly fine for its implementation in TWIGZ!
   
12.22.2002 - The collision detection has been implemented into the first map and works fairly well. The first problem we encountered was the inability to detect collisions with slope less, or horizontal and vertical, lines. We did, after some tweaking, solve that problem. The detection, however, fails to detect all points of collision all the time when used with over 30 walkable polygons. We are working very hard on it and are sure it will work out. Give us some time and well give you flawless collision detection. Thanks for your patience.  
   

12.31.2002 - The Collision Detection Routine was modified and now works 100% Perfect. It can determine the intersection of any two lines regardless of their slope. The problem with the 30 walkable polygons (from above) was fixed as well, and proved to be a simple matter of miscalculation.

The next new implementation, our pride and joy, is the new Shortest-Path Finding Algorithm. This algorithm can take a map, divided into connected convex polygons, and find the shortest path from any point on the map to any other point. It can then tell the character exactly how many polygons it must walk through and which ones to pass at which time. This was a key element in the engine that we were struggling with. It now, however, works perfectly!

We're right on track for our January 15, 2003 beta demo release.

For an idea of where we're getting the basis for our algorithm check out Path Finding In Complex Maps And The Black Art Of Linear Algebra It's a great resource!

 
   
1.4.2003 - The integration of the Collision Detection Routine and the Shortest-Path Finding Algorithm is causing a few problems. The integration works well the problem is this: The engine must know whether the mouse is clicked within a walkable polygon and if so which polygon it is. Sure that sounds easy but since the polygons are of an infinite amount of different shapes, this type of detection seems impossible. Next, if the mouse is clicked outside a walkable polygon then the engine must decipher where the player intended for the character to go and then get him there.

This is a new challenge for us and one which we will work hard at conquering. Give us a few days ... we won't let you down. Thank you all for your patience and interest!
 
   
1.9.2003 - We have determined that the Collision Detection Routine must only detect collisions for the characters current walkable polygon, thus saving us a great amount on computing time. Also we have integrated this routine along with the Shortest-Path Finding Algorithm to create flawless walking within these polygons. The remaining problems exist when a player clicks outside of one of these polygons. The computer must determine which polygon is closest and most reasonable for the character to walk to. We will continue to work on this and will keep you posted.

The dialogue engine is near 100% complete and new features will be added as necessary. We have just begun to implement it into the engine and expect no problems to arise. Keep an eye out for more updates.
 
   
1.13.2003 - Check out the new SCREENSHOTS! The new additions are as follows:

Picture 1 (Top): Lowercase letters for prompt box, new mouse cursor which lights up when rolled over a hot object, and a demonstration of the text which will be spoken by the main character.

Picture 2: The early stages of our dialogue engine, this engine includes multiple branching streams of dialogue. The words "Pick Up" should not be there and will be eliminated by final release. Also shows the Mouse in its "COOL" form.

Picture 3: Another demonstration of lowercase letters along with the mouse in its "HOT" form.

Notice the Monkey Island Reference


Early dialogue engine


Mouse in its "Hot" form
   

1.20.2003 - The dialogue engine has been giving us a few problems ... all that we have answers for and will be programmed in the next few days. The next integration will be moving mouths and gestures to go along with the dialogue. Below is a list of the additions needed before completion.

1. Completion of Dialogue engine including animated costumes representing mouths moving and hand and facial gestures
2. Animation Timers (needed to insure that all computers run TWIGZ at the same speed)
3. Implementation of a scaling algorithm for characters as they move in and out of the distance
4. Completion of the walking algorithm

THAT'S IT!! That is all that is left for the TWIGZ Engine! Keep an eye out for more details!

 
   
1.28.2003 - We have recently completed the dialogue engine (with the exclusion of the movable mouth costumes) and it is up and running 100%. What it does is reads a set of questions from a dialogue file and displays them. When the mouse rolls over a question it will brighten, showing which question is currently selected. After a question is asked, the other character engaged in the conversation will respond and a new set of questions will appear. Some question will lead to other new questions and branch off to a totally new topic of discussion. We call this Multiple-Branching Dialogue.

We have also solved a major problem with loading saved games. Each time a saved game was loaded there was a very noticeable glitch in graphics. Well, after about an hour of debugging we found our mistake. Heh heh ... funny story, turns out that before you can have an engine show a font on the screen ... it must be loaded into memory. Who woulda thought?! So instead of calling the LoadGame sub before the LoadFont sub ... we switched em'. PROBLEM SOLVED!! (Yeah, that's right ... we're real stupid!)

Here is a shot of our dialogue engine running! As the mouse rolls over a question, it becomes highlighted.


This shows our inventory on display, it is now stored in XMS so that it is updated without flicker!
   
2.4.2003 - We have been working on a sprite scaling routine that will scale sprites on-the-fly for when a character moves in and out of the distance in TWIGZ. We have programmed this routine in QBasic and it works nicely, however, it is not very speed efficient. We have tried to convert it to Assembly but with many problems. We have looked into using fixed point math and have even tried to work around floating point division with straight integer division but we have run into many problems. I'm sure we will have this worked out in a few more days. Just trust in us, we will not let you down.  
   
2.25.2003 - Some new advances in the engine! We are changing the collision detection routine from a line intersecting detection to a Point-in-Poly test. This test will determine whether a point lays inside a walkable convex polygon with greater speed and ease. More will follow as it advances. Also we have edited our scaling routine and have begun to code it in assembly.
Also, we have begun working with timers and animations and have found the perfect PERCISION timer for timing all game animations. Also Costumes with built in offset tables are being played with .. we are so close to finished!
 
   

3.3.2003 - Well it has been a while but ... we weren't sleeping! We've got some HUGE news! Check out the latest advancements!

The Costumes Work:
- We designed a mouse driven costume designer that allows us to load a sprite sheet and divide all the sprites into different costume parts. They are then saved in a ".cos " file format with an offset table that lists each costume part numerically and its offset and length in the costume file.
- This file is loaded by the TWIGZ Engine (the offset table is stored in XMS and so are the costume aspects)
- This allows for blazingly fast animations and space saving techniques. Now we can have one body and multiple heads can be placed on it for all different types of animations. All body parts can be changed on the fly!

- These costume parts are called upon by game scripts when needed. For example: If TWIGZ interacts with a door then the Open Door animations will be loaded by a script. The script engine needs a bit of work

The New Point-in-Poly Collision Detection Routine:
- This technology allows for FAST collision detection and clickable area detection. Now the TWIGZ Engine can easily detect which walking box has been selected and then decipher how to get the character there.
- If the characters detection point leaves a polygon then he has collided with its edge and cannot go any further
- We still have to add a routine for estimating the polygon closest to a point clicked if that point is not inside a polygon
- We still have to add a routine for changing destinations on-the-fly

New Walking Box Format Works:
- A new mouse-driven walking box designer was created to designate the walkable areas of a map. These boxes' vertices are saved in a ".box" format along with their Connectivity Matrix and their Connecting Midpoint Matrix for use with the walking routine

New Walking Routine Works:
- Walking routine can get a character anywhere a person clicks by walking through the walkable areas of a map
- Uses global variables so that the map can scroll at any speed and the character will be walking on or off screen
- The TWIGZ Engine KNOWS where to go using a Path-Finding System that deals with a (NumberOfPolys) x (NumberOfPolys) Matrix containing the next walking box any given box is connected to
- The Engine then gets to that destination by walking through the MIDPOINT of the connecting edge of these boxes

With all of this we are EXTREMELY close to a DEMO RELEASE! After we add the above listed things and implement our scaling routine we will be all set. THANK YOU SO MUCH FOR BEARING WITH US! Keep an eye out for some new SCREENSHOTS!

 
   
4.20.2003 - We've got a whole lotta new stuff for you today! First off is the completion of our Path-Finding/Walking Algorithm/Routine. The routine is a combination of all of our previous attempts. First of the engine checks to see if the clicked point is inside one of the walkable polygons. If it is the engine performs a calculation in the Walking Box's Connectivity Matrix to determine which polygons must be walked through. Once this is done the character walks from polygon to polygon by crossing through the midpoint of the connecting side of each two polygons (I hope that makes sense).

If the clicked point is outside a polygon then a vertical line is dropped down from the test point and the intersections between that line and any polygon edges is stored in an array. Next the distance formula is applied to determine the distance between the test point and each of these intersecting points. The point of intersection that is the shortest distance away is the point in which the player will walk to. SIMPLE!

Next came the completion of our on-the-fly Masking Routine. The idea behind this was simple and eventually all worked out. The current map is stored in XMS and a mask layer for that map is stored in XMS as well. What our routine does is compares where the character will be placed to the mask layer and determines if there is anything obstructing our view of the character. If there is the routine simply does not draw that pixel. If there is nothing in the way then it will draw that pixel.

Each mask on the mask layer is set to a Z-Index number (1,2,3 ... etc.) the character has his Z-Index number which tells the engine where he appears on the virtual Z axis. If the character's Z-Index Number is less than or equal to the mask's Z-Index number then the character can walk "behind" it!

This is our first sprite sheet for our upcoming demo (graphics will improve and more will be added!)

.........................................

The first head animation!
   
6.5.2003 - Not too much has changed since the last update but we have found one bug ... this bug has been deemed the "ah crap ... not again" bug.

Here's the problem: When the engine is run in the QBasic environment it works flawlessly ... once it is compiled and the executable is run it freezes at in the loading stages. It has been determined through some tedious debugging that the problem comes only when the TwigzMask routine is run (our on-the-fly masking routine) however we cannot figure out why it works flawlessly in QBasic and not stand-alone. Perplexing, isn't it? Anyway we will continue to work at it ... until then stick with us ... please.

BUG 4 - "ah crap ... not again" (Problem with on-the-fly masking routine ONLY in executable)
STATUS: Pending
 
   

6.12.2004 - Well, it has been a long time but it is finally done. The first release of TWIGZ to the general public is out! TWIGZ Version 0.99 can be downloaded here. I have one request for all people who download TWIGZ, please send me feedback on any bugs, questions, comments, etc. All that information is extremely valuable and I would appreciate it greatly. Once feedback has been collected, I will make all necessary corrections and release the final TWIGZ Version 1.0 along with the TWIGZ SDK (so you kids at home can make your own adventure games!).

BUG 4 - "ah crap ... not again" (Problem with on-the-fly masking routine ONLY in executable)
STATUS: FIXED (missing VARPTR() command)

 
© 2004 Shattered Realm Productions