Wednesday, April 30, 2014

April Progress



Dear InifintieSky’ers!

Since putting the code on git hub for anyone to look at and work with we have had quite a bit of interest, feed back and commits. Przemyslaw Walczak has joined us as a developer using the name Ane2 on github. He has quickly picked up how to develop things for the server and has implemented quite a lot of what we are going to show today.


We have prepared couple of screenshots showing things we have worked on this month.
Enjoy!~

Inventory

A lot more of the inventory actions have been implemented such as moving items around and unequip/equip items, putting them on the pill bar. Dropping items on the ground and picking them up again should be finished soon too.



Combining/Enchanting





Storage/Banks





Moving to the pill bar, and from it back to inventory.


Using items is also currently being worked on.


Buying & Selling





The player based shop is also being developed now too.


Enchanting & Combining


We do not yet know the rates of chance for enchant and combine.
So for now they work 100% of the time.





Skills

Although skills are not technically usable we can learn them, and the majority of the buffing skill effects have had their data worked out. Just need to code a way to apply it. And some work has been done gathering packets for the run and jump skills. We still have to learn fully how they work.



Quadtree

One of the biggest changes is the Quadtree implementation, which allows us to spawn monsters, npc’s, items and keep track of the players in the zones in a much faster/optimized way. We could also build on it further to simulate server side movement of characters and monsters. *Currently they teleport instantly to their destination on the server which is bad.

See here for a demo of it. http://codepen.io/LiamKarlMitchell/pen/zImip

A quadtree is a tree data structure in which each internal node has exactly four children. Quadtrees are most often used to partition a two-dimensional space by recursively subdividing it into four quadrants or regions. The regions may be square or rectangular, or may have arbitrary shapes. This data structure was named a quadtree by Raphael Finkel and J.L. Bentley in 1974. A similar partitioning is also known as a Q-tree. All forms of quadtrees share some common features:
  • They decompose space into adaptable cells
  • Each cell (or bucket) has a maximum capacity. When maximum capacity is reached, the bucket splits
  • The tree directory follows the spatial decomposition of the quadtree.” ~Wikipedia

You might be thinking Twelve Sky is a 3D game why are you using a 2D system to manage 3D objects?
Well the maps are basically flat. You cant walk on top of or under there is only one surface to walk on.
So a Quadtree is fine for checking distances between players and monsters and quickly looking up things in the area you are in. Sure the 3D distance is not taken into account but eh... it is not really needed. We just use X and Z in the quad tree where Y would be checked for the depth on the terrain later.

Other

VMScript got some more work done on it when it has matured more I will be releasing it as its own module. It can handle basic dependency checks to load things in the order required.

Portals are working again.
Monster, NPC and Item have all been moved to their own scripts and spawned in. Further work to be done and there may be bugs which require fixing of course.

Next up we plan to improve/add the following:
  • Trade
  • Duel
  • Party
  • Whisper Chat
  • Items on Ground & Drop System
  • Attacking Monsters & Player & NPC
For full details of what's changed and currently under development - please visit our GitHub page and look at the commits. There is an issues section you can use to see what we are having problems with or to lodge your own issues if you notice something buggy or missing.
If you are a developer come help us :D.
We also decided to commission someone to do some web design work for us and code maintenance so that should be good.
Thanks for your continued interest, please share and stay tuned for more info on our progress.