Friday, March 20, 2015

Skills working visually and new Launcher Design.


Ane2 has skills visually working.
That is we can now run and jump etc.

And we have a new Launcher design by Epicws.



It is currently being made into some use able software that could patch the files to keep up to date.

I made a video that shows of Skills and Launcher quickly. https://www.youtube.com/watch?v=d04nynhhc6k


Thursday, March 5, 2015

A chat room for Developers and people interested in helping.

Hi Everyone,

So with the feedback from the last few posts I have noticed the comments section is not a very nice place to chat about things.

So I have opened up a gitter chat room which can be found here: https://gitter.im/LiamKarlMitchell/InfiniteSky

This room should be used for people interested in developing & designing the server, tools, launcher etc.

It is not for asking for news updates or when the server will be finished. (As you know I cant very well estimate when we will be done)


I would also like to say we have another developer joining us (makes 3)
Going to be going over the project with him on the weekend to get him some knowledge of its workings.


So anyone wanting to discuss features, bugs, launcher graphics, website design etc.
Please head on over to the chat.

If I am not in the chat, I shouldn't be far off.

However please keep it free of spam.


Cheers,

Friday, February 27, 2015

Coding in monster ai & quad tree updates.

Well it's the weekend :)



Time to attempt to put in this ai and quad tree code I have been working on woot woot!


In other news my cousin and I started on the launcher. (Hes learning css html js jquery nodejs node webkit) *hes beginner*

The basic design goes something like this:



The launcher will download multiple patches in a go with a configurable amount at once.
For example if you have to patch your game from version 4 to 10 it would start downloads 5 6 7 8 all at the same time. When one of them finishes if it is the next number eg 5 then it is installed and the next number to download if any stats downloading. When a patch is installed it checks if the next number up finished downloading if so it installs that to. So patching the game should be quite fast compared to the old games launcher.

Since we have not figured out how to add more servers in game, we would like to add a server selection option in the Options dialog. (Which pops up when you click on the options button)

It would show servers, if they are online how many players etc the ping.

It looks crappy because I made it in windows 7 mspaint. And also I suck at user interface design, if anyone wants to design something better go ahead!.


Anyway here is a screenshot of what the launcher looks like so far:


We are just using bright colors to debug the areas they are in so we could position them as we wanted.
Pretty good for a few hours for someone who has never coded this sort of stuff before eh?


If you want to learn jQuery I recommend http://try.jquery.com
If you want to learn about Node Webkit there is a nice short video series here: http://nodehead.com/node-webkit-introduction-16/


Also Im going to try to eat these, looked interesting.

Monday, February 23, 2015

Server Setup Guide and Spawn System Logger coming soon.

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.

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.


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,

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.