Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Conquer Online 2 > CO2 Private Server
You last visited: Today at 20:13

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Dev] Hellmouth Revival

Discussion on [Dev] Hellmouth Revival within the CO2 Private Server forum part of the Conquer Online 2 category.

Reply
 
Old 10/12/2010, 14:11   #91
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,380
So I kinda put off studying tonight for midterms and did some more stuff.


Queue System:
-Wrote my own queue dll as a new data structure to handle things in a specified order but to still allow removal of data part way through.

Item Floor:
-Applied this system to drop/loot/item timeout so that items will not remove when picked up (as they did before) but also remove effectively from the timeout queue (before I was doing bools to see if I should let them pick it up/display it until it was finally removed. Waste of calculations!)

Spawning:
-Mobs respawn. May apply a queueing system to this as well so that they don't respawn nearly instantly as they do now.


Spawns:
-Full spawn on server start
-Respawn on death
-No spawning on other mobs
-No spawning on invalid dmap locations
-Random spawn spread
-Command to add spawns while server is running

Attack:
-Basic melee Client>monster
-Monsters take damage
-Monsters die (change in attack type)
-Monsters despawn (currently 2 seconds after death. YAY QUEUES!)


Also considering both AI and server object handling. I'm really tempted to do area queries (NOT quad tree!) and it wouldn't take much re-writing at this point... so maybe I'll code that soon so that we can stop with the distance calculations.

Thinking I may attempt to write a proper ai server soon before monsters get coded. If not I'll need to code seperate AI for every type of npc entity (mobs, bosses, bots, etc)... would be simpler to have one generic ai processor that handles them all so that it's separate from game server.

We'll see.

Midterms in a day or so. After that I'll have more time to code.

<edit>

So I also discovered something semi interesting today...

Status effects can be applied to monsters exactly the same way as players. While this may seem obvious it does open up some intriguing possibilities..

EG: Flying dragon

Custom status effects for various things to do with monsters.

My current thinking is that if I do decide to code a proper AI server and integrate it with bosses then I can do all sorts of cool things including charging up various spells, status effects (flying, shielded, etc based on world conditions)

So lets say I make a instanced 'raid' where you must run through a large number of difficult 'mini bosses' and then face a ninja boss. The ninja boss may have fatal strike active and will mix his movements between jumping, fatal striking and walking. Destroying certain tnpc structures on the map may lower his ability to use certain skills or temporarily lower his defenses.

Or lets say a dragon which will fly for 5-10 seconds and use a fiery air attack... You can't attack when it's flying so whenever it starts flying you need to move the hell out of the way to avoid being scorched by the attacks.

This could add some interesting elements to boss fights where they are not simply "get the best gear and tank the mob till it's dead". Teamwork and tactics would be required to effectively complete these forms of challenges.
pro4never is offline  
Thanks
2 Users
Old 10/13/2010, 03:09   #92
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,380
Updated Object System:

So I've ditched iterating through objects based on map. Now I simply run queries a section of the map (NOT quad tree). It's a system I had originally be debating using but never actually coded. After talking to Immune lastnight and realizing it's how he's been doing it I had the desire to give it a whirl.

So far works great. Now I need to handle the spawn/despawn distances again though as I changed some things around.

Really all it consists of is a struct to hold coords. Then I simply setup maps as having a dictionary holding <Coord, list<object>>. Then when I want to query an area I simply iterate through nearby coords to where I want to query and return a list of the desired objects to pull.

Eg:

list<Client> LocalClients = Struct.LocalClients(GetCoord(Client));

That will return a list of all the clients nearby my current position and I can then send them packets or w/e I wanna do.


Note: I also handle adding, removing an updating map so that maps are only created where objects are currently being stored.

Add object to a map that doesn't exist: Adds map and sets up the structures and inserts the object to the desired coord
Remove object leaving 0 on map: Removes map entirely
Remove object leaving 0 objects on that coord: Removes coord

It's also useful to do things like only allow 1 mob per coord. I can setup a coord I want to try then do a pullMobs(Coord) and if the count > 0 try a diff cord (cause it already has a mob on it).
pro4never is offline  
Thanks
2 Users
Old 10/18/2010, 02:53   #93
 
kid2nice's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 44
Received Thanks: 8
Quote:
Originally Posted by pro4never View Post
So I kinda put off studying tonight for midterms and did some more stuff.


Queue System:
-Wrote my own queue dll as a new data structure to handle things in a specified order but to still allow removal of data part way through.

Item Floor:
-Applied this system to drop/loot/item timeout so that items will not remove when picked up (as they did before) but also remove effectively from the timeout queue (before I was doing bools to see if I should let them pick it up/display it until it was finally removed. Waste of calculations!)

Spawning:
-Mobs respawn. May apply a queueing system to this as well so that they don't respawn nearly instantly as they do now.


Spawns:
-Full spawn on server start
-Respawn on death
-No spawning on other mobs
-No spawning on invalid dmap locations
-Random spawn spread
-Command to add spawns while server is running

Attack:
-Basic melee Client>monster
-Monsters take damage
-Monsters die (change in attack type)
-Monsters despawn (currently 2 seconds after death. YAY QUEUES!)


Also considering both AI and server object handling. I'm really tempted to do area queries (NOT quad tree!) and it wouldn't take much re-writing at this point... so maybe I'll code that soon so that we can stop with the distance calculations.

Thinking I may attempt to write a proper ai server soon before monsters get coded. If not I'll need to code seperate AI for every type of npc entity (mobs, bosses, bots, etc)... would be simpler to have one generic ai processor that handles them all so that it's separate from game server.

We'll see.

Midterms in a day or so. After that I'll have more time to code.

<edit>

So I also discovered something semi interesting today...

Status effects can be applied to monsters exactly the same way as players. While this may seem obvious it does open up some intriguing possibilities..

EG: Flying dragon

Custom status effects for various things to do with monsters.

My current thinking is that if I do decide to code a proper AI server and integrate it with bosses then I can do all sorts of cool things including charging up various spells, status effects (flying, shielded, etc based on world conditions)

So lets say I make a instanced 'raid' where you must run through a large number of difficult 'mini bosses' and then face a ninja boss. The ninja boss may have fatal strike active and will mix his movements between jumping, fatal striking and walking. Destroying certain tnpc structures on the map may lower his ability to use certain skills or temporarily lower his defenses.

Or lets say a dragon which will fly for 5-10 seconds and use a fiery air attack... You can't attack when it's flying so whenever it starts flying you need to move the hell out of the way to avoid being scorched by the attacks.

This could add some interesting elements to boss fights where they are not simply "get the best gear and tank the mob till it's dead". Teamwork and tactics would be required to effectively complete these forms of challenges.
This Is Way Better Than Real Conquer Online they are gonna offer you a job lol and im Glad that i wont have to see last co as the best pserver because this is gonna be in the top good luck
kid2nice is offline  
Old 10/22/2010, 11:00   #94
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,380
Midterms are done so I'm back into coding some!


Coded some more with skills including... Linear attacks such as fb/ss!

Re-tooled my spell handling so that it switches off based on skills. this means that adding new skills will be FAR easier. Just setup the skill id, link it to an attack type (single target, area, arc, line, etc) and you're good to go! Everything else will be handled in the attack type calculations.


So far... Fastblade coded and works!

Note: Didn't bother sending the actual graphic in this. I was more concerned with the math behind it as well as pulling targets/calculating damage. It works though!

Note: Bluename, redname, blackname, damage, death and everything related to it are fully working (including pk pts lowering over time). These are all built directly into my attack handlers so I don't need to write the logic behind them for every skill (not that most people would... just stating it makes thing a lot easier)




Further note: The invalid pic is just the ghost mesh. I'll do the proper calculations for that when I have time.


Basic coding for XP skills added. Simple **** really... just sending the update entity when xp value > 99 and then checking that when they try to use a skill. If so, remove their xp charge, add the effect and set the removal time. Then can use the effects added to control effects such as dmg for superman or jump speed checks w/ cyclone.
pro4never is offline  
Old 10/26/2010, 15:45   #95
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,380
Coded passive skill handling including

-Chance of activation (based per hand, only 1 can activate)
-Damage boost based on skill level/type


-Customized rates/dmg, most are identical to real conquer though. I boosted a few useless skills to make them worthwhile and nerfed some others (eg: clubs are no longer as 'uber' when it comes to activation and dmg. Lower dmg/activation)


It needs some tweaking but it works nicely and brings us quite a bit closer to closed beta. If I can get a day where I'm not crazy busy I'll finish up the last few things needed to make it 'playable' (few more skills, revive locations and map pk permissions) Once that's done it's safe to let a few ppl on to sort out bugs before we add new game systems.





<edit>

Game Stability:

Not a great measure but I've successfully left the server running for over 48 hours with any issues.

This includes my character being online and periodically performing actions as well as someone from outside of my computer logging on once or twice for periods of time. After 48 hours all threads are still running properly and login is still working just fine. It also includes a decent number of relogs on a second character as well as some actions such as attacking, npcs and of course all the required threads (stamina, xp bar, status effects, etcetc).

Stability will become more clear as we start letting people online for testing but it's working quite nicely so far ^^


I'm thinking of coding a 1v1 dueling system so I can implement my 'player skill quotient' calculation to generate a simple number to represent how good a player is at fb/ss. I can then store this quotient per character and use it to help create duelist bots which have a fair level of skill.

Alternatively I could use this quotient to only make players fight bots near their own skill level (eg: you have a skill level of 100 and chose an easy bot so you fight one with 80-90 skill... you chose hard you fight 120 skill... etc)

When used to fill up events I can use this balancing system so that the bots in the event will reflect the players in it (if it's a bunch of noobs they will have easy fights!)

Not a great measure as there is no real server stress but hell... look at some of the coemu sources around lol. Lets see them run for 2-3 days without break and still not have any issues.
pro4never is offline  
Thanks
2 Users
Old 10/28/2010, 20:17   #96
 
dodolinobobo's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 162
Received Thanks: 26
I wanna be a part of the beta stage of this project.It looks so nice and i can help by finding bugs and coding basic npcs.

Respectfully,
Daniel
dodolinobobo is offline  
Old 11/01/2010, 15:44   #97
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,380
So I'm contemplating some custom features I may want to add... One of the things I've come up with is a auction npc.


Should be fairly simple to do using packets from the shopping stalls and warehouse to add/remove/view existing auction items... then use server msgs (which would be able to be toggled) to broadcast current bid and item info to server... then use either the npc or a /bid cmd to place bid on item... then once done double check currency again (if not go to previous bidder).



-----

Revamping map system (again >.<)

Going back to a dictionary system using coords as keys (only active when objects are on them). This allows for me to query areas to return mobs/players/npcs in the specified block.

ALSO I've coded my pull player/mob methods so that it pulls the MOST RECENTLY added object of the requested type. This means that stacks will fully work (aoe skills will hit top most player and I can make mobs target the top player if I desire)

It also means I can make certain things ignore these rules... eg bosses xD
pro4never is offline  
Old 11/01/2010, 15:56   #98


 
Korvacs's Avatar
 
elite*gold: 20
Join Date: Mar 2006
Posts: 6,126
Received Thanks: 2,518
Nice, i always wanted to write an auction system, but i never got around to it, good to see different things being done nowadays
Korvacs is offline  
Old 11/01/2010, 16:09   #99
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,380
Yah I was remembering earlier when walking downtown that qonquer had started on one but never finished it and outside of that I've never seen a working version of it... I don't see any reason why it couldn't be thrown together using current client features really... I mean shop window for submission and warehouse for removal/viewing? seems simple enough to me.

We'll see how far I bother going with that system.


Update: buying vps again so that we can have closed beta online. I was meaning to do it earlier but just been sooo busy irl that I haven't had time to do much.


I plan on finishing up the revised map/coord system, re-doing mob spawns and then a couple more skills and closed beta will be online.


I think I still have most of the requests added but feel free to pm me closed beta applications again.
pro4never is offline  
Old 11/02/2010, 18:14   #100
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,380
Ok so mini update...

I've got the new map system working again (I had a stupid mistake in my coord query code which was confusing the hell out of me causing me to re-write the other code like 3 times lol).

Despawn/Spawn is now virtually perfect on movement. It uses official conquer distances for things.

I'm debating writing things so that offscreen jumps are no longer an issue...

Eg: Player A jumps onto player B's screen and lands within distance of 8... This is NOT good because the player appears right near you making them an easy target.

This could be solved by calculating 'approximate approach vector' (NSEW), spawning the player at the boundary of this and THEN sending the jump packet to where they are actually going. This would essentially eliminate off screen jumps




Mobs Disabled:

I'm going to re-code them using a few concepts I've picked up from the project manifesto source (sooo pretty!) and then add them again once they are fully functional.


Minor changes:

-Re-enabled Fb/SS coding using the new system (stacked targets don't all get hit)
-Made revive display spell effect


General Updates:

-VPS now Hosting test server. Connecting Ontario>Pennsylvania I'm getting around 75 ping steady. Not too shabby!
-VPS now online! I will start distributing closed beta accounts as soon as we get everything configured.
-Pk mode sets properly on login
-Hotkeys send on login (super minor fixes)
-Fixed random duplication of certain packets when sending to screen caused by new map system

Next To be completed:
-Finish item stat calculations
-Double check all UID/Spawning functionality for beta
-Code instanced duel arena for some pvp fun (AND logging for new AI system)
-Revamped Monster system (including attacking/AI/movement)
-Warehouses
-Revamp character avatars (easy to do... just requires a few changes)
-Add town guard functionality
-Build database of map permissions (free pk, pk forbidden, skills forbidden... etc)


<edit>

Updates for Nov 3:

-Players despawn from local on logoff and when teleporting away (new map bug)
-Logging into an account already logged on causes disconnection
-Updated char creation to ONLY allow a-z and 0-9, no special characters at all in names.
-Minor big with packet duplication fixed
-Fixed problem with damage and gear calculations.
-Added pk checks for both melee and fb for vs players and mobs (guard check)
-Fixed minor bug where red/black name didn't remove till relog
-Fixed minor bug with fb/ss/xp skills where you could use cmd to get higher than max level which would increase range or make no effect occur on attacking
-Coded pray/revive skills
-Coded max mana
-Added max mana to /heal cmd
pro4never is offline  
Thanks
2 Users
Old 11/04/2010, 21:27   #101
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,380
Had some time after my exam today.




View gears should be fully coded now. I updated my spawn entity packet to include new stuff needed for proper stats showing. For some reason my spouse isn't showing but I'll fix that string packet later. Not a huge issue.


Bug fixes/Additions:
-Issue where dcing would sometimes not allow re-login
-Issue where unused xp skills would continue to pop back up
-Ground items are shown when you go on screen (ahaha forgot to add to new map system)
-Coded bless, tort and dragon dmg calcs. Next up, + bonuses! Then dmg should be rather perfect
-Made Arena free pk, will add auto reviving later on.
-Done CORRECT max hp/max mana calculations (whoever did the ones for coemu... my god that's a big mess. They are easy as hell!)



To simplify testing and development I've decided to write up a list of every feature I can think of and then try to sort it into 'phases of development' which will deal with when I want to see them coded. This will allow testers to know what is a bug and what is simply not coded yet.


Things will be broken into 4 phases of development.

Phase 1: Imminent/Needed (high priority, next to be coded)
-All skills
-Datetime packet (easy to structure, just not bothered adding)
-Check bugs with dropping/looting items?
-Finished Item system (make sure no bugs exist in equip/unequp/buy/sell/store/etc)
-Finish Attack system (distances, all skills, speed checks... etcetc)
-Re-code monster system/ai
-Teams (so easy)

Phase 2: Secondary priority but should be done during closed beta (before public server)
-Guilds
-Trade
-Friend/enemy/mentor/trade partner
-Warehouses
-Broadcast
-Arena (proper)
-Minor events (1v1 dueling, tdm... basic stuff)
-Basic AI bots

Phase 3: Low importance but should be done during open beta
-Soul items
-Refinery items
-Interactions
-Nobility
-Pvp/pve events
-Bosses
-Halos
-Custom content
-Auction system

Phase 4: Things we will NOT be coding that TQ has (NOT bugs when they don't work, we don't want them)
-Making souls/refinery items permanent (WE WILL NOT HAVE PERMANENT REFINERY ITEMS!!! Temp bonuses only)


Feel free to add to my lists.. I wanna try to get a bit more organized on when things will be done and get back into the swing of things.

Find me systems that are NOT working and try to place them into these categories.
pro4never is offline  
Old 11/05/2010, 18:41   #102
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,380
Item and vital calcs fully working!



For those who don't know... max hp as well as your character window stats are all calculated by the client. My calculations for dmg, def, hp, mana, etc server side are now identical.

-Coded avatar stuff (Npc fully works to change avy)
-New characters are given random hair color/style
-New Characters are given random avatar
-Avatars and mesh are now separate values.
-Ghost mesh now displays correct avatar
-Started on team (can create/dismiss, just need to handle inviting/joining)
-Added npc script item functionality (HasItem(S), AddItem(s), RemoveItem(s))
-Plus bonuses now calculating
-Item info +hp/+mana now calculating (bottle/gourd/etc)
-Vitals calculating properly for all professions regardless of values in stats
-Coded cure/advcure

This means pvp dmg should be basically perfect and shouldn't need to be worried about again for a while.

-Going to code magic skills and bows soon.

Bug Fixes:
-Added range check to melee/passive skills
-Fixed bug where sometimes in fb same coord would calculate twice (double hits)
-Sending client gears for items OTHER than those visible (Yay for me not structuring the whole packet)
-Added dragon gems, blessing and tort gems to dmg calculations.
-Coded spirit healing, meditation, cure and adv cure skills fully


Next Up:
-Team healing
-Improve server threading (packets are being processed on same thread as everything else which means if there is any intensive calculations going on (Ie: lots of players moving around being inserted/removed/updated from maps) then ping will suffer.


Question:
How would you handle threading issues such as this? Obviously I want to keep my threads limited but obviously packet receiving/processing/sending should be a main priority and put above other server needs such as distance calculations/spawning shit...


I can think of 2 main options but my threading knowledge is VERY limited so I'd appreciate advice if you have it.

Option 1:
Make a thread for dealing with packets. Thread runs through two queues. Receive and send. Receive queue will then be processed within the thread and sent ones will simply be sent to the required client.

EG: SendQueue.Enqeue(NewPacket(Data, From));

That way I can keep data associated with a client while it is in the queue and packets would be processed in order they are added without conflicts (assuming I code it properly..)

Option 2:
Map thread which would handle all the spawning/despawning/movement between maps. That's currently my most intensive process (Mostly walking as each step is a removal, insertion and query of local objects/despawn of former objects). While I plan to streamline my movement system eventually, I don't want these sorts of important yet processor intensive aspects of the server to interfere with other operations.

My thinking is that if I contain all of this side of the server to a single thread it leaves the main thread to handle everything else (it can't interfere with anything else at all as opposed to simply using the packets thread where this can still interfere with other server operations)



Obviously it's not a huge issue right now but we've already noticed that with significant movement packets are delayed slightly and ping is boosted. I REALLY don't want this to become a critical issue as more players are added into the equation (Ping may only increase slightly and fairly infrequently when it only 2-3 ppl... but what happens when there is 50... 100... 500?)
pro4never is offline  
Old 11/08/2010, 18:54   #103
 
BioHazarxPaul's Avatar
 
elite*gold: 0
Join Date: Nov 2005
Posts: 548
Received Thanks: 93
are you going to make that panel display everything like it does in normal co - not my ss btw just took a random one from the co site..

BioHazarxPaul is offline  
Old 11/08/2010, 21:00   #104
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,380
Yes, I have all the offsets for every value. It only displays values that are already coded into the source though

IE: Not having bothered with full dragon soul/refinery system yet I have no reason to be sending detox values and such.

But yes, all relevant stats will appear in that window.
pro4never is offline  
Old 11/08/2010, 21:48   #105

 
Kiyono's Avatar
 
elite*gold: 20
Join Date: Jun 2006
Posts: 3,296
Received Thanks: 925
Quote:
Originally Posted by pro4never View Post
Yes, I have all the offsets for every value. It only displays values that are already coded into the source though

IE: Not having bothered with full dragon soul/refinery system yet I have no reason to be sending detox values and such.

But yes, all relevant stats will appear in that window.
If you plan on adding dragon souls and refinery, make it all less overpowered.
Kiyono is offline  
Reply


Similar Threads Similar Threads
HellMouth Client
02/18/2011 - CO2 Weapon, Armor, Effects & Interface edits - 17 Replies
Basically I've done the client for HellMouth and would like some feedback and some input to what can be done to improve it. The logo is already going to be removed since its blurry. Thanks. http://i47.tinypic.com/2i1h0km.png ## Updated -Removed Logo -Added new background to top and bottom I'm happy with what it has turned out as.



All times are GMT +1. The time now is 20:13.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.