Menu
News
All News
Dungeons & Dragons
Level Up: Advanced 5th Edition
Pathfinder
Starfinder
Warhammer
2d20 System
Year Zero Engine
Industry News
Reviews
Dragon Reflections
White Dwarf Reflections
Columns
Weekly Digests
Weekly News Digest
Freebies, Sales & Bundles
RPG Print News
RPG Crowdfunding News
Game Content
ENterplanetary DimENsions
Mythological Figures
Opinion
Worlds of Design
Peregrine's Nest
RPG Evolution
Other Columns
From the Freelancing Frontline
Monster ENcyclopedia
WotC/TSR Alumni Look Back
4 Hours w/RSD (Ryan Dancey)
The Road to 3E (Jonathan Tweet)
Greenwood's Realms (Ed Greenwood)
Drawmij's TSR (Jim Ward)
Community
Forums & Topics
Forum List
Latest Posts
Forum list
*Dungeons & Dragons
Level Up: Advanced 5th Edition
D&D Older Editions
*TTRPGs General
*Pathfinder & Starfinder
EN Publishing
*Geek Talk & Media
Search forums
Chat/Discord
Resources
Wiki
Pages
Latest activity
Media
New media
New comments
Search media
Downloads
Latest reviews
Search resources
EN Publishing
Store
EN5ider
Adventures in ZEITGEIST
Awfully Cheerful Engine
What's OLD is NEW
Judge Dredd & The Worlds Of 2000AD
War of the Burning Sky
Level Up: Advanced 5E
Events & Releases
Upcoming Events
Private Events
Featured Events
Socials!
EN Publishing
Twitter
BlueSky
Facebook
Instagram
EN World
BlueSky
YouTube
Facebook
Twitter
Twitch
Podcast
Features
Top 5 RPGs Compiled Charts 2004-Present
Adventure Game Industry Market Research Summary (RPGs) V1.0
Ryan Dancey: Acquiring TSR
Q&A With Gary Gygax
D&D Rules FAQs
TSR, WotC, & Paizo: A Comparative History
D&D Pronunciation Guide
Million Dollar TTRPG Kickstarters
Tabletop RPG Podcast Hall of Fame
Eric Noah's Unofficial D&D 3rd Edition News
D&D in the Mainstream
D&D & RPG History
About Morrus
Log in
Register
What's new
Search
Search
Search titles only
By:
Forums & Topics
Forum List
Latest Posts
Forum list
*Dungeons & Dragons
Level Up: Advanced 5th Edition
D&D Older Editions
*TTRPGs General
*Pathfinder & Starfinder
EN Publishing
*Geek Talk & Media
Search forums
Chat/Discord
Menu
Log in
Register
Install the app
Install
Community
General Tabletop Discussion
*Geek Talk & Media
A standard RPG gaming API
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="towngen" data-source="post: 417626" data-attributes="member: 1528"><p><strong>Re: Re: A standard RPG gaming API</strong></p><p></p><p>Mythosa, I agree that the API shouldn't start out too big. But it can be expanded on as we go. The TCP/IP idea is one so that the identical standard will apply for all platforms. Personally, I'd rather just say do it all via the clipboard, or something trivial like that. But TCP/IP also allows the ideas of distributed processing.</p><p></p><p>As for the comment that you can't have multiple connections to a single TCP/IP port, actually you can. A single winsock object can only have 1 connection, but nothing prevents you from using 2 winsock objects on the same port. How you do think a web server allows more than one person to connect at the same time all on port 80? The web server just creates a new instance of the winsock object and allows a new connection.</p><p></p><p>Ok, in order to start defining data formats as is suggested by several, we need to know if XML is the way to go or not. What does using XML give us? Personally, I would rather just define it ourselves, but I wanted to hear the arguements for and agains XML first. Why would it be better than just defining a string format ourselves?</p><p></p><p>Suppose we just created something like this:</p><p></p><p>OpenSession(<calling program name>,[user name],[password])</p><p>CloseSession(<calling program name>)</p><p>CreateReturnObj(<unique id key>,<object type>,[attribute list])</p><p>CreateEditReturnObj(<unique id key>,<object type>,[attribute list])</p><p>ReturnedObject(<unique id key from the create request>,[error codes],[object string itself])</p><p>RunCommand(<unique id key>,<command>)</p><p>KeepAliveReq(<unique id key>)</p><p>KeepAliveAns(<unique id key>,[error codes])</p><p>UnrecognizedCommand</p><p></p><p>As per standard syntax, <key> mean that the key is mandatory. And [key] means that it's optional. Obviously the symbols <, >, [, and ] and not included when really coding.</p><p></p><p>Open and close session are self explanatory.</p><p></p><p>The 2 create object calls would each require 2 arguments, and have a third argmument as options. CreateReturnObj would be a command to just create it and return immediately, without any poping of the user interface. CreateEditReturnObj would tell the program that it is allowed to open it's user interface for interaction before returning the resulting object. The unique id's would simply be a serial number so that if multiple requests are being processed at once, it can identify which request it's answering.</p><p></p><p>ReturnedObject would be the format of the message returning the object (or an error). </p><p></p><p>The general command would be for other stuff, not when you are asking for an answer, but just want the program to do something.</p><p></p><p>The keep alives would be for a program to query and see if they are still working on the specified request or not. It would have to be answered quickly.</p><p></p><p>The unrecognized command would be the standard answer for anything that didn't fit into the above categories (or later defined terms).</p><p></p><p>The list of objects would simply have to be defined and agreed upon ahead of time. Same for the error codes, commands, and the formats of the objects themselves.</p><p></p><p>Anyway, this is just something I came up with in the last 5 minutes. Parsing and handling something like this would be very easy. The TCP/IP connection is very easy (just read about winsock if you're using programming in Windows and not familiar with TCP/IP, it's not difficult). We would just have to agree on the list of objects, commands, error codes, and formats of each supported object. As we agree, we add them in to the standard. Everything need not be supported right away, so we can start with a handful of most wanted objects (probably characters, monsters, and treasure), then expand as time goes on.</p><p></p><p>But like I said, this is just a quick "off-the-cuff" stab at a comm spec that wouldn't use XML. I don't know much about XML, but lots of people talk about it like it's great, so I figured I would hear the pros/cons about it. Anyone want to give and pros/cons about XML?</p><p></p><p>[can't spell, sorry hehe]</p></blockquote><p></p>
[QUOTE="towngen, post: 417626, member: 1528"] [b]Re: Re: A standard RPG gaming API[/b] Mythosa, I agree that the API shouldn't start out too big. But it can be expanded on as we go. The TCP/IP idea is one so that the identical standard will apply for all platforms. Personally, I'd rather just say do it all via the clipboard, or something trivial like that. But TCP/IP also allows the ideas of distributed processing. As for the comment that you can't have multiple connections to a single TCP/IP port, actually you can. A single winsock object can only have 1 connection, but nothing prevents you from using 2 winsock objects on the same port. How you do think a web server allows more than one person to connect at the same time all on port 80? The web server just creates a new instance of the winsock object and allows a new connection. Ok, in order to start defining data formats as is suggested by several, we need to know if XML is the way to go or not. What does using XML give us? Personally, I would rather just define it ourselves, but I wanted to hear the arguements for and agains XML first. Why would it be better than just defining a string format ourselves? Suppose we just created something like this: OpenSession(<calling program name>,[user name],[password]) CloseSession(<calling program name>) CreateReturnObj(<unique id key>,<object type>,[attribute list]) CreateEditReturnObj(<unique id key>,<object type>,[attribute list]) ReturnedObject(<unique id key from the create request>,[error codes],[object string itself]) RunCommand(<unique id key>,<command>) KeepAliveReq(<unique id key>) KeepAliveAns(<unique id key>,[error codes]) UnrecognizedCommand As per standard syntax, <key> mean that the key is mandatory. And [key] means that it's optional. Obviously the symbols <, >, [, and ] and not included when really coding. Open and close session are self explanatory. The 2 create object calls would each require 2 arguments, and have a third argmument as options. CreateReturnObj would be a command to just create it and return immediately, without any poping of the user interface. CreateEditReturnObj would tell the program that it is allowed to open it's user interface for interaction before returning the resulting object. The unique id's would simply be a serial number so that if multiple requests are being processed at once, it can identify which request it's answering. ReturnedObject would be the format of the message returning the object (or an error). The general command would be for other stuff, not when you are asking for an answer, but just want the program to do something. The keep alives would be for a program to query and see if they are still working on the specified request or not. It would have to be answered quickly. The unrecognized command would be the standard answer for anything that didn't fit into the above categories (or later defined terms). The list of objects would simply have to be defined and agreed upon ahead of time. Same for the error codes, commands, and the formats of the objects themselves. Anyway, this is just something I came up with in the last 5 minutes. Parsing and handling something like this would be very easy. The TCP/IP connection is very easy (just read about winsock if you're using programming in Windows and not familiar with TCP/IP, it's not difficult). We would just have to agree on the list of objects, commands, error codes, and formats of each supported object. As we agree, we add them in to the standard. Everything need not be supported right away, so we can start with a handful of most wanted objects (probably characters, monsters, and treasure), then expand as time goes on. But like I said, this is just a quick "off-the-cuff" stab at a comm spec that wouldn't use XML. I don't know much about XML, but lots of people talk about it like it's great, so I figured I would hear the pros/cons about it. Anyone want to give and pros/cons about XML? [can't spell, sorry hehe] [/QUOTE]
Insert quotes…
Verification
Post reply
Community
General Tabletop Discussion
*Geek Talk & Media
A standard RPG gaming API
Top