Version 0.4.3

From VbGORE Visual Basic Online RPG Engine

Contents


[edit] Downloads

All downloads contain the same files, just using different compression methods.

*.EXE - Self-installing file (11.86 MB)

*.ZIP - Compressed with WinZip (12.76 MB)

*.RAR - Compressed with WinRAR (10.46 MB)

*.7z - Compressed with 7Zip (10.45 MB)

Library Files (Not required for EXE users) (1.00 MB)

[edit] Release Notes

Released on March 30, 2007

Theres a hell of a lot new and changed in this version. Plenty of massive client optimizations and graphical fixes, along with the blurring which, although doesn't look as great as top-end engines, hardly has any effect on your FPS. Another goodie is the packet prioritizing system changed so you can have much better prioritizing. Theres plenty of other goodies, but... you can read it below. ;)

[edit] Change Log

Change - Compiling optimizations to prevent crash: For some damn strange reason, with every compiling option ticked by "No Aliasing" and "Allow Unrounded...", the client will crash if SetRenderTarget (used with blur/zoom) is called. If that sounds strange, imagine how many hours it took to find this strange bug... ticking any other compiling option seems to fix it, so "Allow Unrounded..." is now ticked by default on the client.

Add - Weather disable option: Added the ability to turn off the weather completely through the Game.ini file.

Add - Motion blur disable option: Added an option to disable motion blur. If this option is set to 0, the motion blur surfaces are never created or used.

Add - Motion blur: Added support for motion blur. This isn't exactly the greatest motion blur because it is done by preserving the old image slightly so the blurs don't exactly look like they would in a realistic motion blur, but the effect is still great and easy to use. To use it, all you have to do is specify the BlurIntensity value and the engine will handle the rest. The default example of this used in the engine is for when you're running - when you start running, the blur will be set, then when you stop, it'll fade out.

Add - Game.ini values: Added some values and settings to Game.ini, along with comments on what they are.

Change - Alternate rendering method: Learned that the alternate rendering's .begin and .end was very costly, so after optimizing the usage of it, was able to boost the FPS up over 50% for the alternate rendering. Its still slower than the normal rendering, but not by much. It just makes the alternative less costly to those who have to use it.

Add - Automatic resolution aspect ratio detection: Added support for the engine to automatically detect what aspect ratio (fullscreen [4:3] or widescreen [16:9]) the desktop is in then use that in the game. You can over-ride this value and specify if you want to use widescreen or not, too, if needed, in the Game.ini file.

Add - Wide screen monitor support: Wide screen (16:9) monitors now have the option to, when in full-screen mode, add bars to the left and right side of the screen to force the game screen into a normal (4:3) aspect ratio. This prevents the screen from being stretched across a wide-screen monitor and making everything look much wider then it should be. Can be toggled in the Game.ini file.

Fix - NPC hit rates: Fixed the NPCs to have valid hit rates which was broken since their Str and Agi stats were removed. The hit rate is defined in the database, and stored on the NPC under the "Agility" stat.

Change - Default resolution: Changed the default resolution to 1024x768 mostly just to test the resolution change system, but also because it looks prettier. :)

Add - Easy resolution change support: Added the ability to change the resolution through just specifying the width and height in constants. It is probably not perfect since it is hard to catch every reference of the screen resolution, but it seems to be close to good.

Fix - User_Attack_Ranged: Added some validation checks to User_Attack_Ranged to make sure the server doesn't crash.

Add - Auto NPC targeting: Added a function that calculates the best target based on the angle from the user's heading and their distance. If you already have the best target targeted, it'll switch you to the second best. This happens by default when pressing T.

Add - User request target packet: Added a packet that going from client to server that allows the client to request who to target.

Fix - Changing maps with target: Targets will now be cleared when changing maps, preventing the client from crashing.

Change - Packet prioritizing system: The old system was too limiting for me to enjoy, so I changed the packet prioritizing to allow you to define the PP_Low with a value by OR'ing it on. PP_None will not send at all until another packet is combined, PP_Low will send by the time OR'ed onto it (if no value is defined, then a global value is used, default is 1 second), and PP_High will send instantly. Also removed the need to hold the packet priority value - all calculations are done based off of times. This change allows for easy defining in globals the packet priorities for certain packets, making it much easier to create different priority options.

Add - Grouped characters on minimap: Added support for characters grouped together to see each other anywhere in the mini-map. They are drawn a slightly darker shade of green then the user's character.

Add - ToMapGroupButIndex: Added a new send path that sends to everyone in the map that is part of the index's group but the index.

Add - CharType to Server_MakeChar packets: Added CharType to the Server_MakeChar packets so you can define if a character is a PC, NPC or a PC part of your group.

Fix - Server MakeChar packet creations: Fixed the routines that involved the server sending the Server_MakeChar packets to use the correct buffer size calculations.

Add - Group char position updating: Characters in the same group that are far away are updated on their position quicker then normal far-distant characters so they can be more accurately placed on the mini-map.

Fix - Mini-maps on huge maps: Fixed the first mini-map option to not crash on huge maps with very little to no blocks.

Fix - /groupinfo message: Fixed the /groupinfo message so it shows all the users in the group, not just the last one.

Add - Read sign message text: Added a message to when you read signs so it says, "The sign says, '<message>'" instead of just the message.

Change - Frame changing calculation: Changed the frame changing calculation to mostly be calculated at runtime on the Grh's .Speed attribute. This way, instead of "* 0.075 * EngineBaseSpeed * Speed", its just "* Speed". Small optimization, but this is called very often so every bit counts.

Fix - Tile animation sync'ing: Changed the Engine_UpdateGrh to update the animations based on the elapsed time for each individual Grh. This way the whole map will have their animations stay in sync without having to update each grh every frame.

Add - More D3DXSprite support: Added support for the alternate rendering (D3DXSprite) to draw the text, too, of both the chat buffer and the Engine_Render_Text calls (which handles pretty much all the rest of the text). Didn't add support for it on the mini-maps since it doesn't use textures so it should render fine either way. If problems arise for people with the mini-maps, I will try adding it.

Fix - Grouping: Fixed a bug with grouping that caused it to crash when killing.

Add - Multiple non-stack object grabbing: Added the ability to grab multiple items of the same kind that do not stack. This is supported in the mailing, banking and ground objects.

Add - Variable object stacking: You can now define how many times an object can be stacked. Defining <= 0 uses the server's default maximum.

Add - Object requirements not met message: Added messages to be sent for when the user doesn't meet the requirements to use an object instead of just doing nothing.

Add - Object stat requirements: Added the ability to put stat requirements to use objects.

Add - Alternate rendering system: Added a new rendering system completely different from the old rendering system. This new system uses D3DXSprite to render instead of using 2 triangles. The visual result is the same, but it is a wee bit slower. I optimized it the best I could, though, so it is close to the speed of the old system. You can choose to use this rendering system through the Data\Game.ini file. Hopefully this will fix graphical problems people are having.

Change - Rendering system: Changed the rendering system to no longer be in-line with Engine_Render_Grh for a future implementation of a new rendering system. Also removed Engine_Render_GrhEX - any parameter that could be specified in that can be specified in Engine_Render_Grh.

Change - MySQL failed connect message: Updated the MySQL connection failed message to be more appropriate with the latest version.

Change - Stacking limit: Changed the stacking limit to 100 instead of 9999 - a more commonly used and reasonable limit on item stacking.

Change - Tile layer render system: Changed the tile layer rendering system to create an array of tiles by their tile position (to know what tile it is) and their pixel position (to prevent redundant later calculations) every time the user moves tiles. This way, only the graphics that exist and are in the screen are called to be drawn. The FPS difference was checked on two maps, the outside map (most tiles) and inside one of the houses in a corner (least tiles). While inside, there was a 200% FPS increase, and while outside, there was a 31% FPS increase. All tests were done with the D3DDevice.Present commented out. This prevented the FPS fluctuating and limiting by the FPS. The results should still be near accurate, though, since they both draw the same things, just the looping is different.

Fix - GOREsock_ValidateAccept: Fixed the routine to only count active sockets, preventing false reporting. Fixed on both the game and update server.

Add - System cursor window dragging: Added support for the system cursor to drag the windows, too, just like the game cursor.

Add - Buffer size auto-calculation: Added an algorithm to the map loading that will calculate the smallest buffer size you can use for your map. This allows you to completely ignore the variable and not have to worry about it ever again while still getting the best out of your performance. This is a huge bonus since lower buffer sizes quickly translates into a great FPS increase.

Fix - Engine_Init_Texture: Fixed the routine to not crash on invalid texture numbers <0> then MaxNPCs. This is to prevent overflows when having too many NPCs (2 ^ 15, or the positive spectrum of a signed integer).

Remove - Borders: Removed the borders so you can walk to the edge of maps. Any space displayed past the edge of the map is just rendered black.

Personal tools