Worklog for _33

Grid Terminal

Return to Worklogs

Redistributable sources(Posted 2008-07-28)
Here you will find the latest redistributable sources package: http://hosted.filefront.com/JackMoore/

email me for assistance on implementing the system for your projects.


Some infor on what is done so far(Posted 2008-07-14)
Grid Terminal has been one of my main projects so far in Blitz3D. I have spend (from the top of my head), from mid March 07 to June 07 on a daily basis, then couple days here and there since then, and a little more time lately (july 08). It's source code is (by my standards) pretty big ;currently a little more than 10K lines.

The main goals of this Terminal system:
- Provide means for creating a robust console on a 3D graphics layer
- Multi-page, multi-layered, extensive character mapping device, with all the bells and whistles possible
- Most common relatively useful ANSI and VT commands known (compatible with DOS ANSi ART.
- Extremely fast interface, capable of shuffling thousands of characters and many fonts at various texel sizes, completely transparent to game coding.
- Means for handling the main 3D graphics features under a user configuration file
- Capacity for logging game engine events, and user driven events
- Supports various extended effects on a per character basis; rotation, zoom, shadow, background, underline, strikeout, color shades, smooth scrolling, alpha channel, ...
- Complete control over the keyboard (with key repetition handling)
- Complete handling of Pages using the mouse (to create a Quake like text interface)
- Easy control for flipping in and out of GT using CTRL-W key combination.
- Extensive internal debugging facility.

From the source:
; version MMDDYYYY description
; ------- -------- -----------------------------------------------------------------------------------------
; 1.2.10 07302008 -preliminary function key programming; key_function_macro$
; -preliminary mouse drawing capabilities (TRMOD_MOUSE_DRAW_ON)
; -new commands: GTC_load_zone and GTC_save_zone
; 1.2.05 07182008 -improved keyboard control code handling
; -debugger: added keyboard layout display
; 1.2.00 07162008 -fps counter position and size now resolution independent
; -standards overhaul in regards to the parser commands and control codes
; -slightly enhanced the debugger + menu
; -new commands implemented; save/restore typing colors
; 1.1.06 07142008 -added flood fill to GTC_draw
; 1.1.05 07132008 -new command GTC_draw for drawing shapes on pages (lines, boxes, box filled, elipse, disc)
; 1.1.03 07132008 -improved system logging and system file management
; -new command GTC_log for user logging to a file
; -fixed a bug when interpreting commands with a string where the last argument was skipped
; -found bug in load/unload, doesn't seem to close transfer properly
; 1.1.00 07072008 -added screen resolution change, properly tested
; -implemented Fast Extend library (FastExt.bb)
; -added debug information for 3d capabilities, list of terminal messages
; 1.0.13 07052008 -added function to write big text as string input
; 1.0.12 07012008 -added keyboard layout table + fill routine
; 1.0.11 06262008 -added frames per second programmable display
; 1.0.10 06252008 -bug fixing, cleanup
; 1.0.09 06172008 -implemented preliminary sound core (only for beeps)
; -added preliminary system logging
; 1.0.08 05152008 -code cleanup, new functions for managing floats
; 1.0.07 02282008 -preliminary character wrap code + more fonts (X_wrap, Y_wrap)
; 1.0.06 11052007 -preliminary underline + strikeout conversion to lines scheme (TRM_total_page_layers + 3)
; 1.0.05 11022007 -preliminary encryption scheme based on a transcoding table
; -preliminary dump system implemented based on a load/unload scheme
; 1.0.03 10272007 -various bug fixes (key repeat + terminal init + render page) and code cleanup
; -added resolution change capabilities
; -added new palette features (color picker + VisiBone 216 color table)
; 1.0.02 10252007 -added character shadow + virtual resolution
; 1.0.00 09112007 -initial version
;
; general usage: term_receive_byte() - receive data from the terminal
; term_send_byte() - send data to the terminal
;
; The data transmitted may be ascii codes and/or VT escape code sequences.
;
; special functions: term_create_3D_letter() - creates a latter as a 3D entity
; term_create_3D_text() - creates a string of text as a 3D entity
;
;
; Notes & future updates:
; -Currently, only 32bit color graphics mode is supported, as well as 32bit color textures.
; -There is a bug when setting PGMOD_SPECIAL_FEATURES_OFF where no text appears on the page, but only the bkgnd tiles
; -Page shadow system:
; .Fix all shadow alpha And shadow_x And shadow_y displacement stuff
; .Make sure the shadows don't use any colors other dans black
; .Test shadows
; -Page display system:
; .Fix the page split management so it is using the draw list to choose which pages it splits and how
; .Fix the way pages get shown or not with the management of the page split, so it is automatic and not hard coded.
; .Implement draw list in "update_terminal"
; .Page priority handling is very incomplete
; .Capability of defining zones that are protected from scrolling
; .Test pages that are not fullscreen
; .Remove page splitting functions and port them in Grid Console (or find proper prev./next page scheme)
; -The modifiers system needs to be looked at some day
; -Create fonts with character contour
; -Create a clipboard system that permits copy/cut/paste
; -Complete the "user selectable" page principle for management in all GTC commands, ie. "Page Forward" -> "page backward" considered as user selections
; -Implement a GTC to move a page in the draw list "GTC_set_page_draw" (before_page, after_page, top, bottom, force)
; -INTERNAL FONT: Implemetation of transparent character contour
; BUG: The system is logging GTC errors where there are no errors!



If anyone wishes to implement Grid Terminal in their game project, feel free to e-mail me.

Older related thead: http://www.blitzbasic.com/logs/userlog.php?user=10319&log=1460