Hey Everyone,
Thanks for your continued patience we know this project takes forever but it is what it is.
We really need more developers. Sigh,
Blog Post in short "New server setup guide and way to log spawn information coming soon", "My HDD Died :(", "Monster AI will be added to the server this weekend."
New Setup Guide coming soon
It has been brought to our attention that it is near impossible for anyone who is just starting out with server development to setup the server and game without Liams' help.
So we plan to bring out a better guide for setting up the server soon.
We have csv files to translate monster,npc skill quest, item names/descriptions so the translation files that are on the blog are no longer required for the text.
However some of the game GUI would still be in Korean so we will have to identify these.
A new project repository will be created to house all of the client side parts of the project, which could be downloaded as a zip and put into the Game Directory.
The Launcher and DLL will also be in this repository.
I may also write an auto configure command which will help greatly in getting new users up and running. (It would get the WAN IP as well as your local IP for the config file)
----
Spawn System Logger coming soon
Well I attempted a logger way back to grab monster and npc spawns, whilst it did the job we did end up with some corrupted / bad information possibly due to the code that got the current ZoneID being erroneous/not thread safe.
I am going to migrate the spawn information from files in the data directory to the mongodb database for easier management in the future.
Import and Export commands will be provided also.
The new logger would be an option set in the dll and a plugin to the current server. (Maybe it could be ran stand alone also)
The server part would listen on UDP for incoming packets.
The packets would contain the following information and would be sent whenever a packet for monster or npc info is received from the server.
Username, ZoneID, UniqueID1, UniqueID2, ID, X, Y, Z, Direction
This will allow us to build up a collection of possible spawn points in our mongodb which can then be graphed by the server side app and possibly grouped into spawn regions.
The collection will be broken up into two parts.
LoggedInformation and InUseInformation
InUse would be monsters/npc that are spawned on the server.
LoggedInformation would just be used for the logging and would still have to be verified to be put into the server.
We will release instructions for how people could help us out in collecting this information, and would probably only allow those we can trust to help us.
Those interested in helping to log spawns (again) please email me at liamkarlmitchell+spawns@gmail.com with your contact details and character level and clan on the real server.
----
In Other News!
I am happy with my tests on the AI implementation so I will possibly put them into the server code this weekend. Hopefully this implementation won't lag like the last one or have random bugs where all the monsters seemingly wander off into the distance.
You can see example of the monsters moving here: http://codepen.io/LiamKarlMitchell/pen/raxRKq
Try adding a small or ranged using the drop down and button.
Middle mouse button down changes the query and spawn circle to the mouse position.
Try different combinations, to see the results of combat press F12 and look in the console.
My 3TB hard drive died, so I have to format my new hard drive and set things up again bleh!. (Don't worry I didn't lose the project as its on github ^_^)
Use able skills have had a little more work done on it.
Please let me know if your able to help out with collecting spawn information.
A blog about TSX a private server/server side emulation project for the game Twelve Sky 1
Monday, February 23, 2015
Sunday, January 18, 2015
How to make the AI walk around seemingly random but with nice constraints.
The monsters in our server are kinda stupid.
(Yeah we had an AI in the past but not a lot of thought was put into it, it turned out buggy/laggy and had weird problems).
Most notable all monsters walking towards a point on the map that is way off in the distance.
I aim to fix that sort of problem.
Needed a way to get random numbers within a range but preferring certain ranges over others
Such as walk a distance of between 70 and 120 preferable to a distance of 30-50.
(But still allowing to walk a short distance randomly.)
If anyone is coder/math person what are your thoughts on this, ignoring how bad Math.random is,
( It does not go all the way to 1 so you could never get 100 by doing Math.random() * 100 )
I have not tested if this is correct yet just written it up might do some charts/graphs later to verify.
http://codepen.io/LiamKarlMitchell/pen/QwvyJy
The idea for using this is that monsters that roam around will prefer to wander in the existing direction or turn slightly.
That they will prefer to walk medium to short distances over long.
And then a constraint later to keep them walking around the center of their spawn area/roaming within bounds.
We could configure this to be closer towards where they exited the region, tweaking will be needed.
Areas we spawn monsters in can be considered either points or rectangles.
They are spawned at a point we define (things like guardian stones some boss etc) or within a rectangular region.
If spawned at a defined point we would expect the monster to not roam.
If spawned within a rectangle we would expect the monster to roam within that rectangle, possibly allowed to go slightly outside up to 50 units (could be configurable in config).
The idea is that this kind of movement would let monsters roam around close to their spawned area (you will notice this in real server as a grouped area they spawn in I think this is most noticeable in underground/caves where spawn count is high and re spawn time is low)
When a monster is attacking a target or chasing it will be allowed to roam outside of its area.
If it looses sight of target for more than 10 seconds (should be configurable) it should de spawn and re spawn within its area or chosen point.
You can see example of the monsters moving like this here: http://codepen.io/LiamKarlMitchell/pen/raxRKq
Try adding a small or ranged using the drop down and button.
Middle mouse button down changes the query and spawn circle to the mouse position.
Try different combinations, to see the results of combat press F12 and look in the console.
(Yeah we had an AI in the past but not a lot of thought was put into it, it turned out buggy/laggy and had weird problems).
Most notable all monsters walking towards a point on the map that is way off in the distance.
I aim to fix that sort of problem.
Needed a way to get random numbers within a range but preferring certain ranges over others
Such as walk a distance of between 70 and 120 preferable to a distance of 30-50.
(But still allowing to walk a short distance randomly.)
If anyone is coder/math person what are your thoughts on this, ignoring how bad Math.random is,
( It does not go all the way to 1 so you could never get 100 by doing Math.random() * 100 )
I have not tested if this is correct yet just written it up might do some charts/graphs later to verify.
http://codepen.io/LiamKarlMitchell/pen/QwvyJy
The idea for using this is that monsters that roam around will prefer to wander in the existing direction or turn slightly.
That they will prefer to walk medium to short distances over long.
And then a constraint later to keep them walking around the center of their spawn area/roaming within bounds.
We could configure this to be closer towards where they exited the region, tweaking will be needed.
Areas we spawn monsters in can be considered either points or rectangles.
They are spawned at a point we define (things like guardian stones some boss etc) or within a rectangular region.
If spawned at a defined point we would expect the monster to not roam.
If spawned within a rectangle we would expect the monster to roam within that rectangle, possibly allowed to go slightly outside up to 50 units (could be configurable in config).
The idea is that this kind of movement would let monsters roam around close to their spawned area (you will notice this in real server as a grouped area they spawn in I think this is most noticeable in underground/caves where spawn count is high and re spawn time is low)
When a monster is attacking a target or chasing it will be allowed to roam outside of its area.
If it looses sight of target for more than 10 seconds (should be configurable) it should de spawn and re spawn within its area or chosen point.
You can see example of the monsters moving like this here: http://codepen.io/LiamKarlMitchell/pen/raxRKq
Try adding a small or ranged using the drop down and button.
Middle mouse button down changes the query and spawn circle to the mouse position.
Try different combinations, to see the results of combat press F12 and look in the console.
Thursday, January 15, 2015
QuadTree improvements.
If you are not a developer this might not make sense to you, just think of it as something important for a good gaming experience and it will keep track of objects in game (monsters, npc, player).
I have been working on improving the QuadTree implementation the server uses so that we can have monsters with AI to fight with.
Quad Tree can be viewed here: http://codepen.io/LiamKarlMitchell/pen/raxRKq
The query region shown in blue now picks up nodes (Game objects) that are just on the edge of the circle as well as outside it but intersecting.
Empty leafs that are no longer fill and have children leafs with nothing in them and so on are removed.
An option enables us to have nodes outside of the created quad tree regions. We were having problems not knowing the full sizes/positions of the maps just yet where players/monsters/npc/item could go outside the area and be removed from the world which caused problems. So that will be fixed soon.
A getByNodeID method allows us to find 1 or more nodes by id.
Improvements that could be made:
A function could be made to query back up the tree from a node, to find Nodes by ID assuming its close first this would speed up trade, duel, attacking etc any interaction that is in close proximity between two game objects.
Adding AI manager, I hope to work on having the monsters attack, walk, agro, die next.
Adding events for on enter/onleave + sensors. (Basically querys that are checked after each node update and could be nodes themselves) although this could be unneeded and would slow down.
Migrate the rest of the functions in the server for object/location lookups to use the quadtree.
For instance we have functions that send an event to all connected clients, that will benefit speed wise from using the tree. Such as updating player action/location, sending a chat message in normal chat, dropping item, monster action/state, npc action/state, duel packets.
Happy New Year btw,
I have been working on improving the QuadTree implementation the server uses so that we can have monsters with AI to fight with.
Quad Tree can be viewed here: http://codepen.io/LiamKarlMitchell/pen/raxRKq
The query region shown in blue now picks up nodes (Game objects) that are just on the edge of the circle as well as outside it but intersecting.
Empty leafs that are no longer fill and have children leafs with nothing in them and so on are removed.
An option enables us to have nodes outside of the created quad tree regions. We were having problems not knowing the full sizes/positions of the maps just yet where players/monsters/npc/item could go outside the area and be removed from the world which caused problems. So that will be fixed soon.
A getByNodeID method allows us to find 1 or more nodes by id.
Improvements that could be made:
A function could be made to query back up the tree from a node, to find Nodes by ID assuming its close first this would speed up trade, duel, attacking etc any interaction that is in close proximity between two game objects.
Adding AI manager, I hope to work on having the monsters attack, walk, agro, die next.
Adding events for on enter/onleave + sensors. (Basically querys that are checked after each node update and could be nodes themselves) although this could be unneeded and would slow down.
Migrate the rest of the functions in the server for object/location lookups to use the quadtree.
For instance we have functions that send an event to all connected clients, that will benefit speed wise from using the tree. Such as updating player action/location, sending a chat message in normal chat, dropping item, monster action/state, npc action/state, duel packets.
Happy New Year btw,
Tuesday, December 23, 2014
November update
Hi everyone, it's Ane and Liam!
We are closer to having the game fully working!
Recently we had a break from coding to relax and catch up with real life.
But then got back into it. Last month we decided to re-examine our progress as well as improve some of the code base.
Infinite Sky is an open source project we are accepting some changes from other people, and we really put a lot of work and effort to have the code as bugless as is possible. Still we are all learning new things every day. If you feel like helping and can code come talk with us or learn to code :) It can be fun and rewarding.
Here are the features we have implemented in the last few months:
-Personal Shop
*Buying
*Selling
*Gaining money for the sold item
*Removing item from shop state and sellers inventory correctly
*Converting the incoming silver if exceeds maximum allowed silver
*Taking away the silver for purchased item of a buyer
-Character stats
*Health, Chi, Damage, Elemental Defense, Elemental Damage and Defense is now correctly counted including combine stages and enchant
value of every item.
*Character stats are recounted on every item equip, deequip, level up and stats added.
*Health and Chi is now being automatically regenerated when the Current health or chi is less than maximum. The value ticking is a 1%
every 5 seconds.
*There are still stats that works but missing small amounts. We know the reasons why this happens but not yet discovered on how to fix
this issue.
-Using skills
*Every basic skill (the one which you can learn from NPC's) are now able to be used but not updating character stats on use.
*Using skills and learning them from the scrolls have been worked out but not yet implemented because we want to finish the PVE module
first.
*Lags when using learned skills are now fixed.
*All consumabless are worked out but not yet implemented, which will be after completing more important modules of the server.
-Character experience
*We can now levelup any character to a maximum level (Master 33 or 145 Level) correctly updating the experience progress.
*On each level character gains stats points and skill points, which are correctly counted from level 1 to level 145.
*We can now use /xp {value} to give to the client x value of experience, there are no bugs anymore, we can level the character to the
level 145 using this command for example by adding 10000000000000000 experience and the server automatically will adjust the maximum allowed
experience amount to the character and instantly update the character in game including states of character as well.
*The leveling packet is now being send to everyone in the viewable distance of the player that has leveled up being able to see him
leveling up.
-Guilds
*We can now create a guild with any avaiable name.
*We can now invite people to the guild
*The rest of guild funcitons are worked out but not yet implemented, as the code for now looks like sphagetti which indeed needs a re-
implementation.
*Guild chat is worked out as well but not yet implemented.
-Duels
*We can now duel the players but we got no formulas yet for attacking the other players.
*Flags for duels are now being setted correctly.
*Fortyfing from duels works after x amount of time.
*We have worked the methods to count distance between duelers but not yet implemented a "runner" fortyfing.
-PVE
*Dealing damage to the mobs now gains experience, which in combination with fully working leveling allows the player to progress on
leveling through zones.
*We are progressing on completing the forumlas to attack mobs.
*Drops are now being partly working, and fully working for the beginning zones.
-Portals
*Portals are now fixed but they needs an re-examination of world packet to being fully working including stones and intensive training
modes.
-Private storage
*Fixed pets that was or being stored.
-Trade
*Worked out but not implemented due to lack of fully implemented drop system so we can then enable a way to trade those to the players.
-Server
*Improved loading time of the server and it rarely takes 20 seconds to fully load the server including all zones, spawns, npcs and
modules.
-Github
*We have cleaned the github issues and assigned labels so players can see on what we are currently most focues to finish.
*We were trying to blog every month, but github seems like its easier for us to follow. So we probably spend there more time and less time writing blogs.
-Client
*We have fully transleted items.
*We are now about to finish translating the rest of the client.
*We are planning to update the server to the newest version of koreans server.
*We have working TS2 maps with TSX game, so in future we might create special featured events for our server (but its only a futured idea).
-Plans & plans
The most important subjects of the game which still waits to be implemented is PVP and Faction Stones. We need to take care of this with full focus as it is very complex subject. But before that there are need to be finished modules like skills and buff states that are not yet counted to the character info, but we know how to do that and yet not chosen how do we implement that.
There is not too much before we can start the PVP module which seems a very last of the hardest stuff in the game. After that we are going to probably host the game as Closed Beta #2 so players can test things in the game like PVE, PVP and try to break every part of a game so we can have solid graphs with results to improve the game with.
We are closer to having the game fully working!
Recently we had a break from coding to relax and catch up with real life.
But then got back into it. Last month we decided to re-examine our progress as well as improve some of the code base.
Infinite Sky is an open source project we are accepting some changes from other people, and we really put a lot of work and effort to have the code as bugless as is possible. Still we are all learning new things every day. If you feel like helping and can code come talk with us or learn to code :) It can be fun and rewarding.
Here are the features we have implemented in the last few months:
-Personal Shop
*Buying
*Selling
*Gaining money for the sold item
*Removing item from shop state and sellers inventory correctly
*Converting the incoming silver if exceeds maximum allowed silver
*Taking away the silver for purchased item of a buyer
-Character stats
*Health, Chi, Damage, Elemental Defense, Elemental Damage and Defense is now correctly counted including combine stages and enchant
value of every item.
*Character stats are recounted on every item equip, deequip, level up and stats added.
*Health and Chi is now being automatically regenerated when the Current health or chi is less than maximum. The value ticking is a 1%
every 5 seconds.
*There are still stats that works but missing small amounts. We know the reasons why this happens but not yet discovered on how to fix
this issue.
-Using skills
*Every basic skill (the one which you can learn from NPC's) are now able to be used but not updating character stats on use.
*Using skills and learning them from the scrolls have been worked out but not yet implemented because we want to finish the PVE module
first.
*Lags when using learned skills are now fixed.
*All consumabless are worked out but not yet implemented, which will be after completing more important modules of the server.
-Character experience
*We can now levelup any character to a maximum level (Master 33 or 145 Level) correctly updating the experience progress.
*On each level character gains stats points and skill points, which are correctly counted from level 1 to level 145.
*We can now use /xp {value} to give to the client x value of experience, there are no bugs anymore, we can level the character to the
level 145 using this command for example by adding 10000000000000000 experience and the server automatically will adjust the maximum allowed
experience amount to the character and instantly update the character in game including states of character as well.
*The leveling packet is now being send to everyone in the viewable distance of the player that has leveled up being able to see him
leveling up.
-Guilds
*We can now create a guild with any avaiable name.
*We can now invite people to the guild
*The rest of guild funcitons are worked out but not yet implemented, as the code for now looks like sphagetti which indeed needs a re-
implementation.
*Guild chat is worked out as well but not yet implemented.
-Duels
*We can now duel the players but we got no formulas yet for attacking the other players.
*Flags for duels are now being setted correctly.
*Fortyfing from duels works after x amount of time.
*We have worked the methods to count distance between duelers but not yet implemented a "runner" fortyfing.
-PVE
*Dealing damage to the mobs now gains experience, which in combination with fully working leveling allows the player to progress on
leveling through zones.
*We are progressing on completing the forumlas to attack mobs.
*Drops are now being partly working, and fully working for the beginning zones.
-Portals
*Portals are now fixed but they needs an re-examination of world packet to being fully working including stones and intensive training
modes.
-Private storage
*Fixed pets that was or being stored.
-Trade
*Worked out but not implemented due to lack of fully implemented drop system so we can then enable a way to trade those to the players.
-Server
*Improved loading time of the server and it rarely takes 20 seconds to fully load the server including all zones, spawns, npcs and
modules.
-Github
*We have cleaned the github issues and assigned labels so players can see on what we are currently most focues to finish.
*We were trying to blog every month, but github seems like its easier for us to follow. So we probably spend there more time and less time writing blogs.
-Client
*We have fully transleted items.
*We are now about to finish translating the rest of the client.
*We are planning to update the server to the newest version of koreans server.
*We have working TS2 maps with TSX game, so in future we might create special featured events for our server (but its only a futured idea).
-Plans & plans
The most important subjects of the game which still waits to be implemented is PVP and Faction Stones. We need to take care of this with full focus as it is very complex subject. But before that there are need to be finished modules like skills and buff states that are not yet counted to the character info, but we know how to do that and yet not chosen how do we implement that.
There is not too much before we can start the PVP module which seems a very last of the hardest stuff in the game. After that we are going to probably host the game as Closed Beta #2 so players can test things in the game like PVE, PVP and try to break every part of a game so we can have solid graphs with results to improve the game with.
CHRISTMAS UPDATE
<Encrypted>
3mw0FadnwpBkLLPKfjiWH+LC0l/eNEZq3O34Jq7BT07hlL0xsnLJNENFKpNVByO7nCipvuYypBGCcVxt
Hx0qn2WgHY32ODWsLwSQeeZq650KqTWz8wOo/R/+BMeTGTlgNJqkTVOwax0w/WBBR1clUQ==
</Encrypted>
3mw0FadnwpBkLLPKfjiWH+LC0l/eNEZq3O34Jq7BT07hlL0xsnLJNENFKpNVByO7nCipvuYypBGCcVxt
Hx0qn2WgHY32ODWsLwSQeeZq650KqTWz8wOo/R/+BMeTGTlgNJqkTVOwax0w/WBBR1clUQ==
</Encrypted>
Friday, May 30, 2014
May Update
Hey everyone,
This month we have done some more work on the following:
- Inventory
- Monster Spawns
- Added Combine Chances
- Some Monster Drops have been figured out, Silver, Pills, Rares, Skills, Pet, Improve Stone, Fortune Pouch and such.
- Starting to be able to damage monsters, started a formula for attacking a monster.
- Logged packets for usable item and started creating a script file to code them into.
- HP and Chi pill/tablet are usable.
- HP/CHI Saved on disconnect, (Still not calculated 100% properly though)
- Implemented Translation CSV into the server. View the Spread Sheets Here
- Trade
- Duel
- Party
- Whisper Chat
I am going to meet up with an old work mate who reads/writes/speaks Korean and see if he is able to translate what we have left to translate.
Also thank you to all the people who have donated so far, used some of the funds to get some more accounts for gathering more information :).
Does anyone have a guess at the formulars for player attacking player? :D
What would you like to see done next? I am thinking guild and usable items?
Check out our code on git hub, https://github.com/LiamKarlMitchell/InfiniteSky
Wednesday, April 30, 2014
April Progress
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
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
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.
Thanks for your continued interest, please share and stay tuned for more info on our progress.
Subscribe to:
Posts (Atom)












