Go Back   EQEmulator Home > EQEmulator Forums > OpenZone > OpenZone:: Q&A

OpenZone:: Q&A Support forum for OpenZone help

Reply
 
Thread Tools Display Modes
  #1  
Old 02-17-2007, 09:37 AM
Windcatcher
Demi-God
 
Join Date: Jan 2002
Posts: 1,175
Default

I could possibly alter the architecture to support DLL plug-ins so that other people could add support for more kinds of packets, but one issue is cheating. Does anyone have any thoughts? It looks like the bulk of the client will have to be closed-source to prevent cheaters but I'm open to suggestions. I'd like to open as much of it as possible if I can.
Reply With Quote
  #2  
Old 02-18-2007, 12:41 AM
bufferofnewbies
Hill Giant
 
Join Date: Dec 2005
Location: Lurking in KY
Posts: 239
Default

Possible to add a server side check of allowed plugins?
anything not on the list is ignored by the system, to prevent hack plugins (unless the Admin says its ok and adds it to their list)
Reply With Quote
  #3  
Old 02-25-2007, 10:22 AM
Windcatcher
Demi-God
 
Join Date: Jan 2002
Posts: 1,175
Default

I'm definitely open to suggestions (and as it turns out, I need them as I'm not up on how to prevent tampering with software). It's ironic that we find ourselves in a similar boat as SOE but I suppose it's inevitable.

As a side note, I'm just about at the point where I have a basic set of item icons that's barely enough to field a playable game. I make them by building crude models in Anim8or and rendering them--some look pretty similar to live icons and some don't look anything like them (and there's a vast continuum in between). I'm prepared to make my Anim8or files available for people to make more, but I've decided that my time is better spent doing something other than building a set of 1200-1500 icons. I've made around 260 so far, though I have greater variation in some areas than the live set and so the overlap isn't that high. Like I said, it's barely enough, and we can add more over time.
Reply With Quote
  #4  
Old 04-17-2007, 04:14 PM
Dr Zauis's Avatar
Dr Zauis
I know how to fix that!
 
Join Date: May 2005
Posts: 447
Default DataBase Editing Mode

It would be really awesome if there were buttons on a separate panel or something to create npcs say..even by the dozens and then be able to click on one and drag it to a new location..Hit points and AC could be calculated in a selection of formulas..I would be using the Program everyday just for those tools!

EDIT>>Also to create and place doors/ect..Maybe a way to indicate waypoints..Say cubes(or arrows) with numbers or something..
__________________
Server_Op: ForbiddenZone

Last edited by Dr Zauis; 04-18-2007 at 12:18 AM..
Reply With Quote
  #5  
Old 04-18-2007, 03:02 PM
techguy84's Avatar
techguy84
Discordant
 
Join Date: Apr 2007
Location: Somewhere Safe
Posts: 453
Default

It is to my understand that you are talking about a totally different game correct. If thats the case, my personal opinion is that you should try to stick as much to the current rule set, gameplay, whatever you want ot call it, as all the other mmorpg's do. I know some people are like, "why the hell would you clone something", and my reply is that it is time tested and true. WoW copied, EQ2, EQ2 copied EQ1 and WoW, they're all pretty much alike as far as the basics go, then you add in your own little features that will entice people to play yours vs the competiors. I would start by looking at the most popular as of today, and that hands down is WoW, as stupid as it is, it is the most popular.

I speak out of thought though. I personal think that by creating a all new game, using eqemu as the server behind it, you could have a project that will take all the hardwork that everyone has put into this project over the years and make it profitable. That may not be the goal of this, but I was think of something along the lines of Guildwars. Buy the game, never have to worry about subscription fees to play. Any of you that played Unreal knows of the red orchestra mod that floated around. Now look at them, they took their great idea and developed it, essentialy make a brand new game for the shelves. It does go against the open source Idea, but eventually if you have made something of this magnitude, you kinda have to break away from open source, because a good idea that is just given away for nothing is not a good idea at all. Someone else will come along and steal it away and do it anyhow.

I know that I am just rambling on, but I know I would spend $39.95 easliy for something that is great like EQ, but with-out the subscription fee. I did it with GW, and that wasnt even near as great as the orignal EQ.

Anyhow, OpenZone ftw.
Reply With Quote
  #6  
Old 04-26-2007, 10:09 AM
EmanonCow
Sarnak
 
Join Date: Aug 2006
Posts: 35
Default

Code:
GUI <==> Client Shell <==> Client Engine <==> Internet <==> Server
|             ^
\-> 3D World -/
GUI talks to the Client Shell via a "text-based" messaging interface, plus a secondary "3d world" interface.

GUI <==> Client Shell
Observers for when something in the player-state has changed.
Command-Requests for when the user tells the GUI to do something. (from "Get my AA" to "tell john he sucks".
3d world interface that renders the game-world and allows for hit-testing. The GUI provides the 3d world with a surface of some kind to render on.

Command-requests return a Future (see wikipedia). The GUI can request to get a message when a future is evaluated.

Observers are just requests to get a message when a value is changed. This is useful for things like HP, Stats, or other displayed items.

Client Shell talks to the Client Engine. It needs to determine if the GUI is talking nonsense, parse the commands and requests into low-level code communication with the Engine, and send messages to the GUI when things it asked for have been changed. The Client Shell can maintain a cached state of the player's stats, or just forward all requests to the server: that is an implementation detail.

Client Engine talks over the internet to the Server. Here is where the opcode and networking stuff comes in.

---

This is all architecture details. But it would cut the messy GUI code away from the opcode, and allow you to code up a crappy-GUI that gets replaced after the project is working, and a GUI that is pretty independant of the game-rules.

---

Now, really blue-sky for game features:
Server-defined currencies. (with trade restrictions)
Server-defined item flags. (Lore, etc)
Server-defined item properties.
Server-defined character attributes.
Server-defined "can equip" rules.
Server-defined "can trade to player X" rules.
Server-defined "can trade to NPC X" rules.
Server-defined equipment slots.
Server-defined "can-put-in-bag" rules.
NPC/game-event Interaction dialogs:
Lists of options
Lists of purchases (arbitrary currency)
Server-defined commands, grouped by server-defined groups. (ie, dzadd, etc)
Pet(s) control dialogs (server-defined list of commands you can give)

That might get too general, and require too much client-server chatter. But much of that doesn't change that rapidly, and can be cached (the fact that right-clicking on an NPC opens a "talk", "pickpocket" or "examine" dialog would have to be told to the client once with the right kind of caching system.)

The Client-Engine should ideally cache some of the information (if the server says it is cacheable).

Maybe the Server would be allowed to send Scripts to the Client-Engine? Then when the user clicks on a dialog, the client could be more responsive, and not have to wait for the server to figure out what should happen. So long as the script isn't trusted (ie, it changes UI-state, not game-state) and the engine relies on the server to confirm the action was legal, it would be safe from cheating.

...

The goal is to be able to have a custom defined set of stats and skills, determined by the particular server. Given that you don't have a hard set of rules for the game, this also means you don't lock youself into a particular set of gameplay.

The server might have to modify the GUI, or the GUI might have to be flexible, to allow for some UI tweaks. But one could instead take the "dialog" approach: the server says "there is a SKILLS button. Clicking on it opens the SKILLs dialog. The SKILLs dialog is a LIST of [ SKILL_CONTROL["SKILL::CLIMB"]...SKILL_CONTROL["SKILL::PARRY"] ] and one BUTTON (CLOSE). SKILL_CONTROL[SKILL_NAME] is a pair [ATTRIBUTE_DISPLAY[SKILL_NAME], SKILL_TWIDDLE_CONTROL]. A SKILL_TWIDDLE_CONTROL is a toggle over 3 options ["CONCENTRATE", "IGNORE", "ATROPHY"].

It won't be pretty, but that is enough information to create a skills dialog with some interactive parts.

Toss version-GUIDs next to each of those, so when the server updates the list of skills, the client doens't display the old one, and when the server doesn't change it, the client doesn't have to rerequest the list of skills from the server.

Start with a basic layout engine. Add in the ability to override a default widget layout by name and version-GUID with a custom one (ie, the GUI would first ask the local CustomGUI-DLLs "do you have a control for SKILL_CONTROL["SKILL_NAME"] version GUID{1234-adfa-baad-f00d1234}? If the CustomGUI-DLL said "yes, with GUID{...}", it would check if it already has that GUID custom control in it's GUI cache (and use the cached one), or use the CustomGUI-DLLs version otherwise. Otherwise it would query the server "so, what exactly is a SKILL_CONTROL[]?".

But that is going too deep. To start with, the GUI would have to be kept in sync with the server, and the server would only tell the GUI what it expects to hear. Faster prototype. Of course, you could deal with this by having a Custom-GUI-DLL with all of the server dialogs pre-loaded in it. Not relying on this this allows you to tweak the gameplay on the server-end without having to update the client manually. It also means that logging into a server with very different character stats works without a problem. A keen server would write a custom-GUI-DLL to make their character stat display look prettier, and different servers could steal each other's custom controls...

You could even be paranoid, and run the Custon-GUI-DLL in a seperate process and/or in a sandbox, so they can't poke into the game memory.

I want someone to be able to create an AA system, a use-based skill system, a buy-abilities-from-an-NPC system, a level-up-and-spend-stat-points system, a raid/group management system, or a build-items-from-raw-materials system all on the same client without having to rewrite it.

Yes, this is blue sky. You did ask.

...

What else...

The spell/effect particle engine should be able to get data from the GUI, the Client Shell, and from the Server (indirectly, via the Client Shell). It probably needs to be pretty integrated with the 3d engine if you want effects like "the sword glows" or "a bolt of fire shoots out from your hand and heads towards the target", and not just random nimbus's around characters.

The client should send "I am here, I am here, I am here" packets to the server. In addition, it should sent a trap-door (CRC32) of "the justification of my last 12 seconds of movement and my location at this time" every 5 seconds, and keep track of a complete justification for the last 2 minutes. The server can ask for the actual justification of movement whenever it wants after the fact, which can be checked against the sent CRCs, for internal consistency, and against movement packets that actually arrived at the server.

If the player is move-hacking, it will be hard to generate a justification of movement that lines up with the CRCs, the location packets sent to the server, and the rules of the game. Clients who regularly disconnect when requested for justification packets get flagged as potential cheaters. Clients who give bad justifications are flagged. Clients who seem to move faster than the game thinks is possible are sent requests, as well as clients randomly.

This doesn't prevent movement cheating, but it does make it catchable.

In effect, the client is trusted with determining it's location, but it must also provide justification for it's movement when requested.

If justification is expensive to verify, one could even farm it off to another client (pick two random clients, they are unlikely to be both cheating in exactly the same way), store up the details and check it when server load is lower, or just drop it. Heck, one could ignore the justification sent, and just ask out of paranoia.

...

That's it for now. Food!

Last edited by EmanonCow; 04-26-2007 at 06:14 PM..
Reply With Quote
  #7  
Old 04-27-2007, 11:40 AM
samandhi's Avatar
samandhi
Demi-God
 
Join Date: Aug 2003
Posts: 1,056
Default

I think this is a great idea. In my HUMBLE opinion, I would love to see a client that runs MOST of the eq ruleset with a few exceptions.
  • PVE more easily solo-able
  • Ability to use any combo of class skills (kinda' like Oblivion)
  • Ability/skill to talk to your god and even sometimes get an answer (would make for a good storyline booster)
  • Certain days of the week/month your god blesses you according to your class (draw your own story/conclusion from that)
  • Certain areas make a certain race/class a little better/stronger/xxxbuff (eg... druid in the woods gets barkskin spell automatically for xxx time)
  • Wandering merchants
  • Chop down trees, dig for iron etc... for crafting materials (kinda' like AC2)
  • Off-the-wall quests that, instead of just killing stuff, you might have to,say, go and pull the hair (used like /emote pull hair [targetname]) of another NPC.
  • Damagable PVE (eg... trees, rocks, walls)
  • Change from guilds to religions, where you have to perform some sort of ritual per week/month/year to appease the god of your religion (to build up points that fall away if you dont do the ritual often enough) and that will make you stronger like unlocking the knowlege to build balisa's or something like that. I think this would ultimately swing things more from "money" farming to "power" seeking...
Some ideas I would like to see... I know, some are in direct conflict with others but thought I would put them in anyhow..
__________________

Quote:
Analysis paralysis will keep you from failing, but it will also keep you from succeeding.
  • L.L. CoolJ
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 06:39 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3