
Progress Report 7 (27.7.2010)
Okay, there is another useless progress report for those who are interested.
Finished from previous report:
-ABaseSocket
-ATcpSocket
-AUdpSocket
-ATcpServer
New stuff:
-Network protocol - I have designed a network protocol for OpenArcanum. Took me about 2 days to implement it, make it traffic friendly and secure. After all, I have managed to shrink it to *absolute* minimum. A small intro: Packet size can be up to 256KB, header has 4 bytes, data are compressed using deflate, and footer has 4 bytes too. It also contains crc16 and header marker, so its safer than *normal* packets.
-Fixed point math - One class and over 500 lines of fixed point math stuff.
-HTTP downloading - Yop, now files can be downloaded via AFileSystem if file was not found on HDD.
New classes:
-ANetworkPacket - Class for sending/receiving packets, used for both server and client.
-AServer - Game server. Its inherited ATcpServer. Basic functions already implemented, like pinging, client logging, new account registering, etc-
-AServerClient - Client from server side.
-AClient - Client or player if you wish.
-ASystemSetting - Class to store engine settings.
-ASystemVariables - Its something similar to cvar system from Quake, basically its bank of system variables that are loaded from file and can be used in game.
Variables are added via lua configuration script, like client.lua:
setv("host_address", "127.0.0.1")
setv("host_port", 31435)
Also they can be changed via command line or ingame console.
-AScriptEngine - Lua script processing, some parts of engine are already binded to lua, like camera, gui and configuration files loading (like that client.lua), but still, its kinda lightweight...
-AMemoryAllocator - Used for re/allocating, freeing memory, basically its moved stuff from AMemoryUtils, it still supports dlalloc, nedalloc and malloc, but this time I've integrated a Boehm's garbage collector into it, which is the fastest from them all... for example, loading Arcanum.dat, which contains over 75 000 files, takes only about 800 msec, and with nedalloc, which claims to be the fastest, its about 1400 msec.
-AVideoStream - Used for loading movies. It uses a ffmpeg, so its possible to play almost any media file, including bink videos, however, I found it kinda *unstable*, because I have experienced a *lot* of nonsense crashed and I had to redownload & rebuild its libraries a several times to get full working build.
Maybe it was because I'm using a MS Windows & MS VS2008?:) who knows... now its fine, but still, that library is pretty massive, and I'm not sure if its right choice, maybe better will be to support only one video codec + file format. (?)
-AVideoPlayer - Inherited from AVideoStream, but this time it also renders decoded frames via OpenGL. Its still unfinished, only video playback is implemented, audio is still missing since AGate has no audio subsystem implemented, yet.
-ATexture - Moved some stuff from AImage to this, since a lot of new texture-only related methods were added.
New templates:
-ASingleton - Yo, fluffy clouds...
-ASharedObject - Or shared pointer if you wish...
Thats not all, but again, I'm tired already with writing

sorry...
Here is also some source code statistics made by SourceMonitor:

Have a nice day.
