HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

[Request] Auction System

11-19-2008, 10:06 PM#1
Aeroblyctos
Hi there everyone!

Yes, I know that I haven't posted that much(yet) and have no "rep" at all. I hope that doesn't reduce the chance that this request will be done. I actually had half year ago a thread in here about the project I was making, but I forgot whole thing, because I'm more active in www.hiveworkshop.com and in my own project website www.TCOcampaign.com. However I do hope that this doesn't reduce the chances of getting support for this request.

About the project I'm making. The project I'm making is called: "The Chosen Ones". I have been making it over a year and released over 20 alpha versions from it and I'm still going strong. I'll never give up. The campaign currently have over 200 cinematics, over 100 spells, over 20 boss battles, etc, etc. So this is a huge campaign.

About the request. Because the campaign have over 500 items, I need a system for chapter 7(the campaign have 11 chapters). This system is called: "Auction System". I would like you to make an "Auction System" for the campaign.

So what is actually "Auction"?
Quote:
Originally Posted by Source: Wikipedia
An auction is a process of buying and selling goods or services by offering them up for bid, taking bids, and then selling the item to the winning bidder. In economic theory, an auction may refer to any mechanism or set of trading rules for exchange.

There are several variations on the basic auction form, including time limits, minimum or maximum limits on bid prices, and special rules for determining the winning bidder(s) and sale price(s). Participants in an auction may or may not know the identities or actions of other participants. Depending on the auction, bidders may participate in person or remotely through a variety of means, including telephone and the internet. The seller usually pays a commission to the auctioneer or auction company based on a percentage of the final sale price.

Here are some information about this "Auction System":
  • The project I'm making is a campaign. This means, bidding is a battle between the player and NPC(computer). This is a great challenge, because you have to make some kind of AI.
  • The campaign is made mostly by basic GUI and I don't understand JASS. You can't do this system with vJASS(campaigns bugs). So, make it with GUI or JASS(if JASS, you have to tell me more how the system works).
  • I want you to make a test map, where we can test this system. I have some great testers that will help us to test this system.
  • The system should be easily edited and install to the campaign.
  • I'm not sure how the "texts" should be done. Perhaps flying text?
  • The system have to be leakless.
  • The system should not be "spammy". I mean, when a broker yells "Next Item is X" all NPCs won't just say "YEAAH I WILL PAY THAT ITEM FOR 666 GOLD!!! IT WILL BE GREAT FOR MY SUPER COLLECTION!!!".
  • The auction system should be somewhat fast(watch that youtube video).
  • I think 5 is a good amount of bidders(NPCs).
  • The other bidders are interested in specific items. For example, bidder A is interested with potion type items, he pays more gold than others from potions.
  • To make this system more accurate, I will tell here five different categories of items that can be sold in the shop: 1) Potions, 2) Armours/Shields, 3) Weapons, 4) Rings/Jewels/Diamonds, 5) Spells and Artifacts.
  • There should be however, somewhat random(it would be stupid if every time bidders stop in specific point). Example if the gold goes over 2500 a bidder maybe not or maybe yes can go little over it.
  • Only 1 item of type can be bought. If computer buys an item, this item will be able to buy later(put it to end of the line for example). If player buys it, the item will be removed from the list(and cannot be bought again).
  • There should be for example variables where I can easily change what is items' maximum and minimum gold buy from different NPCs(and everything else that can be changed should be done easily).
  • There will be first about 20 items, later will be more items(campaign currently have over 400 items).
  • More items should be easy to put to the system.
  • If player for example(or there can be other ways to bid, it's up to you) write "-bid 500", he bids 500 gold for the next item.
  • The system actually can run all the time.
  • However, player's hero have to be near of this auction hall to bid(it would be stupid to bid items when you are for example middle of a boss fight :D).
  • Finally, here's an excellent example of aa Auction Hall. This video is from Final Fantasy 9. I hope the system can be somewhat same as the video. I really like this kind of auction system, it's fast and easy. [Starts from 30 second to 120 second!]

[YOUTUBE]http://www.youtube.com/watch?v=thW7d1y4Rl0[/YOUTUBE]



Please ask from me anything about the system, or the project itself I'm making. I'm a positive guy, and I'm ready to answer anything. And, as you can see, my english is not the best and I'm a bit bad explaining new stuff, so ask me anything! The easiest way to contact me is to put me to your MSN list or just send an email. My email is [email protected]. I will of course watch this thread daily to see if someone is brave enough to take this great challenge.

I will improve the first post, if something is asked. Making this system may take few weeks, but hey, I'm ready to wait. And no hurry.

If you can do this, I will give you some REP in here, and great credits at the campaign. I will put your name to epilogue and perhaps to prologue(depending if the system is awesome!). I really hope you can do this. It will be a huge boost for the campaign and for other projects that may use this system also. Thank you beforehand.
11-19-2008, 10:15 PM#2
Kyrbi0
I would make sure to Spell Check the name of your project.

"The Chosen Ones".
11-19-2008, 10:23 PM#3
Aeroblyctos
Yea, typo, fixed.
11-20-2008, 04:22 AM#4
Jazradel
This is easily doable, but without vJass I don't really want to.

This is some psuedo code that may point you in the right direction if you want to try coding it yourself.
Code:
Initially
 item properties[0] = first ...
 item properties[1] = second ...
 item properties[n] = nth ..
 maximum items = n
 current item = 0
 current bid = 0
 winning bidder = -1

every x seconds
 current bid = item minimum[current item]
 if current bid < item maximum[current item] then
  current bid = current bid + random amount
  winning player = random computer
  display item was bidded on by winning player
 elseif current bid < item maximum[current item] + item type offset[item type[current item]] then
  current bid = current bid + random amount
  winning player = player[item type[current item]]
  // item type offset[item type[current item] and player[item type[current item]] will require global variables at init probably.
  display item was bidded on by winning player
 end
 endif

every 5 minutes
 if winning bidder = player then
  create item for player
  //this removes it
  set item properties[current item] to item properties[maximum items]
  maximum items = maximum items - 1
 end
 winning player = -1
 current bid = 0
 set current item = current item + 1
 if current item > maximum items then
  set current item = 0
 end
 update item display

on bid
 gold = S2I(substring(entered chat string, x, y))
 if bid > current bid then
  current bid = bid
  winning player = you
  display item was bidded on by winning player
 end
11-20-2008, 11:19 AM#5
Aeroblyctos
Like I said, I don't understand about JASS that much and vJASS is unknown to me. We also have to remember that the campaign doesn't work with vJASS...

Oh yes, I forgot to add the reasons why I'm actually requesting this system. Well, here they are:
  • I'm too busy with the campaign itself because it's so huge. That this why I try to share my burden with people so the the campaign is finished someday.
  • Also, I'm not skilled enough to make difficulty systems like this one. I'm perhaps somehow skilled with GUI, because I can make nice spells, but I think that's it then.
  • I'm more likely leader of the project, I'm not the coder...
  • I have already requested a lot of different kind of systems... Almost all of them has been done, but I think this is one of the hardest requests so far. This why I came to here.
12-31-2008, 12:21 PM#6
Aeroblyctos
-bump-
12-31-2008, 11:40 PM#7
Pyrogasm
Auction bidding is an incredibly human thing to simulate, so I think any way you did this would be pretty static in execution. For instance, you'd have some limits on the maximum an AI would bid on a specific item, but how would you determine which AIs bid on which items? Just because a guy is partial to potions doesn't mean he won't bid on a shield.

Sure, you could throw some random checks in there, but then how do you stop a player from getting away with buying an item for 50 gold when an AI is willing to bid 10,000 for it? I guess perhaps you could do something like having an expected value for an item and then the chance for an AI to bid on an item could be like
(PlayerBid/Value)*(1/Preference)*(Some other factor relating to whether or not the AI has bid on the item already)
With preference being a number between 1 and 5, ordering the type of items the AI prefers from 1 being the most to 5 being the least.


Hmm... it might be possible, but I would only attempt it with vJASS. Seriously. Because you could have something like this:
Collapse JASS:
struct Bidder
    integer array Preferences[5] //Stores the preferences in order from most to least
    HandleTable BidMax = HandleTable.create()
    HandleTable PreviouslyBid = HandleTable.create()
    real Money = 0.00
    real BidFactor = 1.00
endstruct
The two HandleTables would store the AI's max bid on a specific item and whether or not the AI has bid on that item in the current auction.

Then perhaps you could have different presets for types of bidders:
Collapse JASS:
struct Greedy extends Bidder
    real Money = 3000.00 //Increased starting money
    real BidFactor = 4.00
    //Do something else to make the AI bid on a lot of items as long as he still has money
endstruct

struct Determined extends Bidder
    real Money = 15000.00 //High money
    real BidFactor = 0.25
    //Do something so that the AI bids less often, but once he does he is determined to win the item, going very high beyond the item's value
endstruct

//Etc.
Also, dealing with them would be easy with methods liked .Bid() which could vary depending on the different presets. And of course you could modify the preferences of each bidder so you could have a greedy potion bidder, a determined spell bidder, a normal weapons bidder, etc..

Now, getting that coded and working is another story, but I guess it could be done.


Edit: Also, this is in the wrong forum. In the future, post threads like this in the General Development or Triggers & Scripts forums. I'm sure a moderator or admin other than myself will move this thread eventually, though, so no need to repost.
01-01-2009, 08:20 PM#8
Aeroblyctos
I talked with Eleandor some weeks ago about this and he said the same: He told me that vJASS could make things go a lot smoother and with vJASS everything could be done a lot faster than with GUI or basic JASS. He said he probably will do this, but now he's gone(again). That is why I bumped this thread, to find someone else to make this system I really need.

I'm not sure how to answer your post because I'm not the one who knows stuff about JASS. The best way to ask from me things is to answer clearly or just chat with me few minutes. Anyways, I'm sorry I did post this to wrong place.

Request updated.