PDA

View Full Version : The Lich Auction House



Monotonous
06-22-2010, 03:51 PM
I have a few projects I'm juggling, but this one will be making its way to the top of my list next week. I'd like to petition some input before I start writing code, so please feel free to comment and suggest.


Summary
- A simple auction interface for online Lich users.
- Allows you to post and bid on auctions which will be visible to other players running the Auction script.


Implementation
- Starting the Auction script will tune you to a private channel aligned to the instance of Gemstone you're playing (Auction_GS4, Auction_GSF, Auction_Plat). Chatter on this channel will be squelched from your game window.

- Once on the channel, your Auction script will broadcast compressed data representing your active auction postings. Other Auction scripts tuned into the channel will create the appropriate postings locally.

- In response to you joining, other auction scripts tuned into the channel will PRIVATE you compressed data representing their active auction postings. Your client will create the appropriate postings locally.

- Auction scripts will monitor online players in the channel. When someone leaves, their postings will be removed locally. If you were the high bidder on one of their auctions, your client will notify you that the auction is suspended until they return.

- BIDding will broadcast the item ID and your bid amount. Clients will update their postings locally. Former high bidders, if online, will be notified.

- POSTing a new auction will broadcast compressed data representing your new auction. Clients will create the appropriate posting locally.

- ENDing an auction will log it and delete it from online clients. The winning bidder, if online, will be notified -- otherwise notification will not take place until both the winner and the seller are online at the same time.

EDIT: Modified some details ---
Persistence peer-to-peer style.

- Every client would maintain the full auction list.
- When a new client joined, the "oldest" client in the channel would update the new client with the full auction list.
- When an auction poster logged in, they would be updated with the progress of their posting.
- Postings of a certain age would eventually die.

This would allow auctions to continue regardless of their owner being online. It would also reduce chatter and bandwidth use.

Clients would maintain a local listing of their active postings. If the server went down, or the channel became empty of users, the "master list" would start filling itself again as people logged back in when each client realized its postings weren't contained in the list.


The Auction Posting
* Category (Service, Equipment, Magic, Skins & Gems, Other)
* Posting Player
* Delivery Location (WL, IM, RR, EN, FWI, etc) - Can be multiple
* Title
* Brief Description
* Unique ID#

Single-Item Sale Option:
* Minimum Bid
* Current Bid
* Current Bidder Player
* Buyout Option

Multi-Item Sale Option:
* Price
* Count Remaining


Concerns
This could potentially become a bit chatty. Tillmen would have to approve, and users should seriously think about sending some kind of monetary consideration his way to help cover extra bandwidth (even if just a little).

Limitations on how many active auctions each player is allowed would also help, as well as banning users from the Auction channel who try to circumvent the limitations.

Habitual bad bidders and bad sellers would be banned from the auction channel.

Gnomad
06-22-2010, 04:02 PM
Not to piss in your cheerios, but it seems like you're trying to solve a problem that doesn't exist.

Monotonous
06-22-2010, 04:12 PM
Not to piss in your cheerios, but it seems like you're trying to solve a problem that doesn't exist.
What a bizarre attitude. I guess I'll respond to it. You should try trolling the General forums? This isn't really the place for it.

I didn't see it as a problem to "solve" in the first place. It's a feature that would be convenient and useful.

No player shops exist in Shattered. It would be nice to have a place to look for skins/gems/gear that you want without spamming chat. It would be nice to have a place to sell all the gear we're picking up.

If it isn't something you need, then don't fucking use it?

Alorn15
06-22-2010, 04:29 PM
I think it addresses two problems -
1. I want to have a forum for buying/selling items in Shattered.
2. I want to be able to participate in a marketplace in-game without spamming [LNET].

A couple thoughts -
1. Instead of making data requests over chat, have you considered setting up a simple web-service API? Tillmen may even let you host it on lichproject.org. The benefits of this would be numerous.
2. When you say interface, I hear graphical user interface. I hope I'm hearing you correctly. :) Generally I prefer the command line, but an auction house is an exception. It should be as user-friendly as possible, IMO.
3. I was going to suggest a buyout attribute, but maybe it's best to assume that people will include buyout information in 'brief description' and not force-close bidding.

Monotonous
06-22-2010, 04:51 PM
1. Instead of making data requests over chat, have you considered setting up a simple web-service API? Tillmen may even let you host it on lichproject.org. The benefits of this would be numerous.
I was aiming for simplicity with no external dependencies or trust concerns beyond lnet, but I'm not married to the idea. That would open a lot of features, such as making it not dependent on a sellers/buyers being online to update the auction. It would expand the scope and complexity quite a bit however. My personal time limitations are somewhat prohibitive.


2. When you say interface, I hear graphical user interface. I hope I'm hearing you correctly. :) Generally I prefer the command line, but an auction house is an exception. It should be as user-friendly as possible, IMO.
Definitely. I'd probably create a non-GUI version first for development and testing, then GUI it once specifics were fleshed out.


3. I was going to suggest a buyout attribute, but maybe it's best to assume that people will include buyout information in 'brief description' and not force-close bidding.
Now that I think about it a buyout field would be useful. If anything it could just tell the seller, "X offers to buy out your item." without actually doing anything to the posting.

Gnomad
06-22-2010, 05:14 PM
I'd like to petition some input before I start writing code, so please feel free to comment and suggest.

What a bizarre attitude. I guess I'll respond to it. You should try trolling the General forums? This isn't really the place for it.

[...]

If it isn't something you need, then don't fucking use it?Don't ask for comments if you don't want negative ones, then? And don't confuse a legitimate suggestion with a troll. I didn't know there weren't player shops in Shattered - that seems kinda strange to me, but whatever.

That said, if you're going to do this, why would it be a lich script? That's a fairly large barrier to entry: your target market would have to both be running lich, and be running your specific script before they could do any commerce.

If it were me, I'd write a standalone web app (use Rails, if you want) THEN write a simple lich script to interact with it, if you really want a GTK interface or something.

SpiffyJr
06-22-2010, 05:35 PM
Don't ask for comments if you don't want negative ones, then? And don't confuse a legitimate suggestion with a troll. I didn't know there weren't player shops in Shattered - that seems kinda strange to me, but whatever.

That said, if you're going to do this, why would it be a lich script? That's a fairly large barrier to entry: your target market would have to both be running lich, and be running your specific script before they could do any commerce.

If it were me, I'd write a standalone web app (use Rails, if you want) THEN write a simple lich script to interact with it, if you really want a GTK interface or something.

Active Players: 205
GSF (160):

A whopping 45 people aren't using Lich. More and more are online everyday (Lich had 323 yesterday, for example).

Khariz
06-22-2010, 05:50 PM
yeah, I was just going to say that. Basically everyone in Shattered uses lich. You are at a SERIOUS disadvantage if you don't.

Anebriated
06-22-2010, 05:56 PM
This is an awesome idea. Look forward to seeing the finished product.

Monotonous
06-22-2010, 11:07 PM
Don't ask for comments if you don't want negative ones, then? And don't confuse a legitimate suggestion with a troll. I didn't know there weren't player shops in Shattered - that seems kinda strange to me, but whatever.
Your response came across as more a snide remark than helpful suggestion. Apologies if I overreacted.



That said, if you're going to do this, why would it be a lich script? That's a fairly large barrier to entry: your target market would have to both be running lich, and be running your specific script before they could do any commerce.
This is much more the type of response I was looking for.

Lich has quickly become the dominant 3rd-party companion of most Gemstone players. There are very few people this will alienate, and will just become another reason for them to switch over. The "barrier to entry" to Lich users (which means the vast majority of Gemstone 4 players) is typing ';repo download Auction'. It doesn't get much easier than that..

What I want, and what Gemstone has always lacked, is a quick, dependable and easy "in-game" way to quickly find something you need.


If it were me, I'd write a standalone web app (use Rails, if you want) THEN write a simple lich script to interact with it, if you really want a GTK interface or something.
There are all sorts of ways to do this. I picked this way because:

A) Transparency. Even new scripters can understand how it works in total by opening a single text file. A web service is a black box that only I understand.

B) Maintainability. I don't want to maintain a web server, external service, database, etc.

C) Survivability. I don't want to add another piece to the puzzle that will break in three years after I get sick of all of you. Once this is out there it won't need me to keep living.

D) Easy. The architecture for all of this already exists within LNet. The Lich Auction as I envision it is going to be very simple to implement because it piggybacks on an already very robust development.



Small transactions aren't easy in Gemstone. Maintaining a forum thread for my extra bounty gem supply, or my COL skins is too much trouble. I don't want to shout on the amulet net (where nobody will hear me), ask in TSC, or ask on LichNet. Even Player Shops aren't always ideal. Not everyone has a shop, not everyone keeps their shop stocked, and space is so limited that it's difficult to sometimes find common items.

What I envision is that when you need a bounty gem, an alchemy component, a COL skin, want to pay for a spell-up, want to pay for a bard to loresing or purify your gems.. You'll type ;auction, a GUI will pop up, and you'll find an online player offering the item or service you need instantly. They don't have to watch chats or maintain forum threads. You don't have to spam chats or browse forum threads. Forums are inherently a poor choice for changing marketplaces.

Websites and web services are good, but they have to be maintained. I don't want this to die when I get hit by a bus. Just when Tillmen gets hit by a bus.

Monotonous
06-22-2010, 11:17 PM
Another option that I'm contemplating is auction persistence peer-to-peer style.

- Every client would maintain the full auction list.
- When a new client joined, the "oldest" client in the channel would update the new client with the full auction list.
- When an auction poster logged in, they would be updated with the progress of their posting.
- Postings of a certain age would eventually die.

This would allow auctions to continue regardless of their owner being online. It would also reduce chatter and bandwidth use.

Clients would maintain a local listing of their active postings. If the server went down, or the channel became empty of users, the "master list" would start filling itself again as people logged back in when each client realized its postings weren't contained in the list.

Comments?

Inspire
06-22-2010, 11:49 PM
Another option that I'm contemplating is auction persistence peer-to-peer style.

- Every client would maintain the full auction list.
- When a new client joined, the "oldest" client in the channel would update the new client with the full auction list.
- When an auction poster logged in, they would be updated with the progress of their posting.
- Postings of a certain age would eventually die.

This would allow auctions to continue regardless of their owner being online. It would also reduce chatter and bandwidth use.

Clients would maintain a local listing of their active postings. If the server went down, or the channel became empty of users, the "master list" would start filling itself again as people logged back in when each client realized its postings weren't contained in the list.

Comments?


I like this, to really be useful it should be able to be used on or offline.

I love the idea.