- CPMlink: CPMlink is one of the most legit URL shortener sites.You can sign up for free.It works like other shortener sites.You just have to shorten your link and paste that link into the internet.When someone will click on your link.
You will get some amount of that click.It pays around $5 for every 1000 views.They offer 10% commission as the referral program.You can withdraw your amount when it reaches $5.The payment is then sent to your PayPal, Payza or Skrill account daily after requesting it.- The payout for 1000 views-$5
- Minimum payout-$5
- Referral commission-10%
- Payment methods-Paypal, Payza, and Skrill
- Payment time-daily
- Ouo.io: Ouo.io is one of the fastest growing URL Shortener Service. Its pretty domain name is helpful in generating more clicks than other URL Shortener Services, and so you get a good opportunity for earning more money out of your shortened link. Ouo.io comes with several advanced features as well as customization options.
With Ouo.io you can earn up to $8 per 1000 views. It also counts multiple views from same IP or person. With Ouo.io is becomes easy to earn money using its URL Shortener Service. The minimum payout is $5. Your earnings are automatically credited to your PayPal or Payoneer account on 1st or 15th of the month.- Payout for every 1000 views-$5
- Minimum payout-$5
- Referral commission-20%
- Payout time-1st and 15th date of the month
- Payout options-PayPal and Payza
- Linkbucks: Linkbucks is another best and one of the most popular sites for shortening URLs and earning money. It boasts of high Google Page Rank as well as very high Alexa rankings. Linkbucks is paying $0.5 to $7 per 1000 views, and it depends on country to country.
The minimum payout is $10, and payment method is PayPal. It also provides the opportunity of referral earnings wherein you can earn 20% commission for a lifetime. Linkbucks runs advertising programs as well.- The payout for 1000 views-$3-9
- Minimum payout-$10
- Referral commission-20%
- Payment options-PayPal,Payza,and Payoneer
- Payment-on the daily basis
- Short.pe: Short.pe is one of the most trusted sites from our top 30 highest paying URL shorteners.It pays on time.intrusting thing is that same visitor can click on your shorten link multiple times.You can earn by sign up and shorten your long URL.You just have to paste that URL to somewhere.
You can paste it into your website, blog, or social media networking sites.They offer $5 for every 1000 views.You can also earn 20% referral commission from this site.Their minimum payout amount is only $1.You can withdraw from Paypal, Payza, and Payoneer.- The payout for 1000 views-$5
- Minimum payout-$1
- Referral commission-20% for lifetime
- Payment methods-Paypal, Payza, and Payoneer
- Payment time-on daily basis
- Clk.sh: Clk.sh is a newly launched trusted link shortener network, it is a sister site of shrinkearn.com. I like ClkSh because it accepts multiple views from same visitors. If any one searching for Top and best url shortener service then i recommend this url shortener to our users. Clk.sh accepts advertisers and publishers from all over the world. It offers an opportunity to all its publishers to earn money and advertisers will get their targeted audience for cheapest rate. While writing ClkSh was offering up to $8 per 1000 visits and its minimum cpm rate is $1.4. Like Shrinkearn, Shorte.st url shorteners Clk.sh also offers some best features to all its users, including Good customer support, multiple views counting, decent cpm rates, good referral rate, multiple tools, quick payments etc. ClkSh offers 30% referral commission to its publishers. It uses 6 payment methods to all its users.
- Payout for 1000 Views: Upto $8
- Minimum Withdrawal: $5
- Referral Commission: 30%
- Payment Methods: PayPal, Payza, Skrill etc.
- Payment Time: Daily
- Wi.cr: Wi.cr is also one of the 30 highest paying URL sites.You can earn through shortening links.When someone will click on your link.You will be paid.They offer $7 for 1000 views.Minimum payout is $5.
You can earn through its referral program.When someone will open the account through your link you will get 10% commission.Payment option is PayPal.- Payout for 1000 views-$7
- Minimum payout-$5
- Referral commission-10%
- Payout method-Paypal
- Payout time-daily
- Short.am: Short.am provides a big opportunity for earning money by shortening links. It is a rapidly growing URL Shortening Service. You simply need to sign up and start shrinking links. You can share the shortened links across the web, on your webpage, Twitter, Facebook, and more. Short.am provides detailed statistics and easy-to-use API.
It even provides add-ons and plugins so that you can monetize your WordPress site. The minimum payout is $5 before you will be paid. It pays users via PayPal or Payoneer. It has the best market payout rates, offering unparalleled revenue. Short.am also run a referral program wherein you can earn 20% extra commission for life. - Adf.ly: Adf.ly is the oldest and one of the most trusted URL Shortener Service for making money by shrinking your links. Adf.ly provides you an opportunity to earn up to $5 per 1000 views. However, the earnings depend upon the demographics of users who go on to click the shortened link by Adf.ly.
It offers a very comprehensive reporting system for tracking the performance of your each shortened URL. The minimum payout is kept low, and it is $5. It pays on 10th of every month. You can receive your earnings via PayPal, Payza, or AlertPay. Adf.ly also runs a referral program wherein you can earn a flat 20% commission for each referral for a lifetime. - LINK.TL: LINK.TL is one of the best and highest URL shortener website.It pays up to $16 for every 1000 views.You just have to sign up for free.You can earn by shortening your long URL into short and you can paste that URL into your website, blogs or social media networking sites, like facebook, twitter, and google plus etc.
One of the best thing about this site is its referral system.They offer 10% referral commission.You can withdraw your amount when it reaches $5.- Payout for 1000 views-$16
- Minimum payout-$5
- Referral commission-10%
- Payout methods-Paypal, Payza, and Skrill
- Payment time-daily basis
Παρασκευή 29 Μαρτίου 2019
Top 9 Highest Paying URL Shortener to Earn Money Online
Her Story (Understanding Games #4)
"Her Story" (2015)
Designed by Sam Barlow
Starring Viva Seifert
For Windows, OS X, iOS, and Android
This is one of the most wildly unique games made in the past decade. "Her Story" presents mature themes in a truly nonlinear narrative, and does so relatively successfully. Its innovations include a search engine as the primary mechanic and the most effective use of video in any game to date.
The terrific work in this game by Viva Seifert foreshadows what virtual reality acting may become, where a performance dances with the player through fragmentation and interaction, but retains its original integrity.
"Her Story" won the Seumas McNally grand prize at the Independent Games Festival; the BAFTA Debut Game, Game Innovation, and Mobile Game awards; and was near-universally praised by critics.
For me, "Her Story" captured the feeling of acting in a police procedural despite the interrogation being prerecorded instead of interactive in the usual sense for a game conversation. I value mechanics that accurately evoke the narrative and themes of the game, and nothing has ever been as effective for this type of content as "Her Story".
"Her Story" uses game mechanics, but clearly draws from film and theatre media as well. I've attended several interactive theatre, nonlinear theatre, and live-action role playing events, and none were as effective as "Her Story" at handling a complex narrative. I find this its greatest strength.
This is our final narrative experience. In this series, we've built from the emergent Pac-Man DX+ that is close to the center of games as a medium to "Her Story", which is well overlapped with other, more progressive and narrative forms. I'm happy to call all of these experiences "games" while acknowledging that diversity of approach in the structure and conventions of the works.
It is well worth reflecting on how the difference in medium for a work affects literacy within it. Even if you came to this series with zero previous gaming experience, you now have physical literacy with games. You can navigate menus, manipulate controls, recognize and solve puzzles, react under tight timing constraints, and aggressively and creatively explore a space. (We've followed a specific trajectory through games that provides continuity of experience. We haven't remotely exhausted the interesting mechanics and experiences that lie off that one path...the remainder of the series will address that somewhat, but you also have a lifetime in which to explore the rapidly expanding medium of games.)
However, there is another level of game-literacy that these narrative experiences reveal. While some of the communication means are shared with other media--for example, dialogue, text, symbols, music, and expressions--many of the ways that games communicate with the audience are unique. Consider:
- The force feedback in "Inside" while the player character's breath is running out; this makes me feel extremely claustrophobic and desperate. It has no equivalent in film or prose.
- The dense, hard-to-explain relationships in mechanics between game objects, often understood first at an intuitive and physical level (as in Pac-Man DX+) before at an intellectual level.
- The nonlinearity and piecing together of a narrative from individual clues. Probably most of Monaco's storyline is understood by most players on a single play-through. With "Inside", a week of serious offline consideration and likely two play-throughs are required to process most of what is happening in the game at a story and thematic level. I expect that many players leave "Her Story" understanding a majority of the story, not not all of it. After two play-throughs I still hadn't seen all of the content.
- The disassociation of the content from the mechanics. At a tough puzzle in "Inside", most players will stop feeling the sting of a character's death or the fear of a threat when the sequence repeats, and start approaching it logically. That is part of normal gameplay. Normal viewing of a film or play or reading of a book does not encourage this level of analysis and emotional detachment from the content (nor the level of emotional attachment with structural and technical elements that the audience will pump their fists in the air at a successful turn for the characters!)
- The level of empathy created by controlling a character (for example at the end of "Inside") with different movement constants or means.
- The sense of confusion when the bearings are unfamiliar and demand that the audience resolve that confusion. Other media progress without the audience, so one can sit back and wait for understanding. Games require an actively engaged audience. They refuse to proceed unless the player demonstrates some understanding and rises to the challenge.
"Her Story" isn't primarily about empathy, although your strongest empathy will likely be for the enigmatic player character that is never directly shown on screen. It is about confusion, nonlinearity and piecing together, frustration, fiero (emotional accomplishment), and an emotionally powerful narrative accomplished without empathy or traditional shock/twist structure in a narrative.
Many players who started this series with limited experience are just developing a form of literacy that enables them to read story and themes advanced by the mechanics (even in emergent games). This is natural, and it is some evidence that games really are a separate medium worth explicit study, and not just interaction tacked on to other methods of communication and storytelling that are well understood.
I don't think it is necessary to finish "Her Story" to get most of the value out of it. If you've had your fill after two hours, I think it is acceptable to go read a plot synopsis on Wikipedia or another site so that you understand the whole narrative. Most of the mechanics come out in the first hour of play, and you'll understand about 80% of the story after two hours. There isn't a big finish at the end, just a patching of the last few holes.
It is really hard to discuss the game further without spoilers, so I'll just let you play it!
Post-Game Questions
- The first three games that we looked at--Pac-Man, Monaco, and "Inside"--had common video game state: the coordinates for objects, counters and timers, and information about physical properties of the world. "Her Story" is structured very differently. What is its state?
- What are the rules of "Her Story", in terms of the mechanics?
- Describe the story objectively. Who are the characters? What happened? Who was the murder victim? Who was the murder? What was the motive?
- Who is the player's character in the game? (Hint: it is not the detective)
- How does the game give the player feedback on their progress?
- What triggers the ending of the game?
- Why doesn't the Othello game-within-a-game provide a single-player mode against a computer opponent, since "Her Story" is intended to be played by a single player?
- What are all of the ways that the "mirror" theme is evident?
- What are the mechanics outside of the video search that the game uses to build the world and provide information about the narrative?
- Consider the process of producing "Her Story". How would you design all of the clips? How would you manage the transcripts to ensure that the player is led in a reasonable path without overly determining it? How would you sort the entries for responding to a query, given that the UI intentionally shows only five and doesn't allow scrolling?
- Inside is (nearly) 100% linear and predetermined. That's one way to present a narrative in a game. "Her Story" is nearly 100% nonlinear and undetermined. Although it has no emergent mechanics in the classic sense, the player has total freedom for the order in which they travel through the content of the game. Discuss what kinds of stories are amenable to each approach, and the merits of each for an interactive medium.
- How does "Her Story" play differently, and affect the player differently, when played with a group instead of alone? For comparison, I find that "Inside" changes a little, but not as much in a group setting.
- What are the strengths and drawbacks of the no-instructions approach of this game? Compare that to "Inside"s lack of questions.
Coming next week: a survey of the breadth of games: Solus, AudioShield, Cities: Skylines, Rocksmith 2014, XCOM, Firewatch, and Portal 2
Movie Reviews: Wonder Woman, Logan, Personal Shopper, Pirates Of The Caribbean 5, Jane Eyre BBC (2006)
The movie is lovingly shot and detailed, with great settings and a large cast of background characters, at least some of whom sport two dimensional characters instead of the usual one dimensional. There are some assorted tokens of various races, but they are not caricatured. WW is not just a cardboard cutout of every other hero with a simple quirk of personality. She is another being altogether.
The plot: WW is created out of clay but somehow also the daughter of Zeus. She is raised on a secret island paradise of Amazon warriors and eventually trains to be the best, not only because some of her guardians believe that Ares will return to eradicate mankind and kill her, but because she has special powers that she keeps uncovering by accident.
Outside the island it is WW1 (a departure from the original mythos). Enter Steve Trevor in a downed plane, a British spy who stole a German cookbook for poison gas, followed by nasty Germans. The Amazons experience some real losses, but rather than do anything about it (um, wasn't that their entire purpose??) they waffle, so Diana rescues Steve, convinced that Ares has returned and it is up to her to stop him. Cue a lot of fish out of water scenes, as well as badass fearless and fearsome fighting woman scenes, as Steve rallies a cast of misfits to try to attack the German gas manufacturing base.
Gal owns the character of Wonder Woman, and in fact just about everyone does a fine acting job. The shooting and directing are lovely. There is time for some actual character moments between fighting - not a great amount, but some - and even some of the fighting is original - although a lot isn't. The breaths of sunshine and exuberant camaraderie enabled me to endure and even appreciate some of the longer fighting scenes.
Wonder Woman succeeds in something that Thor and Loki in the Marvel movies never did: she actually comes off looking like a demigod, rather than a petulant clumsy tough guy who is hard to hurt. And that's something new and refreshing.
But there are a few problems, at least for me. The movie's characters are still pretty lightweight, because the script is afraid to go into too much depth without another action scene. The movie's message seems to be that we are all equally evil or good or a mix, and tries not to take sides in WW1. Really? I think, just sometimes, you can take sides. Simultaneously and paradoxically, WW kicks the crap out of - and kills - German soldiers like they are meaningless video game characters, which contradicts her character and the previous problem. This story is a bit of a disservice to the veterans of WW1 who were not simply fighting Germany because they - or the Germans - were under mind control. And, when the war was over, we didn't all suddenly realize how much we all loved each other. So it is morally wishy-washy, not to mention possibly going to leave children pretty confused about what actually happened in WW1.
And, if WW1 was so bad, where was WW during WW2? Went back to her island to take a nap?
Anyway, you can try to suspend these problems and enjoy the movie. It's about on par with Iron Man in my mind, which is a good, solid comic book movie. Not on par with the great movies, such as The Dark Night or Terminator 2, but solid and enjoyable. Actually makes me want to see Justice League.
Logan: This is the second of the new R-rated Marvel movies, the other one being the shallow, violent, and insipid Deadpool. I'm well aware that Deadpool is loved and was a box office success. It had wall-to-wall juvenile humor, lots of cursing, on screen blood, explosions, punching, big things crashing and falling apart, and some sexy. Whatever.
This movie also has lots of cursing, and has even more on screen blood, stabbing, and limb severing. Worse, the stabbing and severing, as in Kick-Ass, is often performed by a young girl. It is also nearly wall to wall misery and humorlessness.
Logan (Hugh Jackman) is Wolverine, who has lived for a long time and has wanted to die in the past, but who is theoretically immortal since his body automatically heals (aging is cell damage, after all). He also has an adamantite skeleton that was inserted in place of his bones, a process that was uniquely able to be done on him due to his super-regenerative abilities. These include adamantite claws that protrude or retract into his hands and can be used to slice and dice enemies.
Now the adamantite appears to be slowly poisoning him, and now his regenerative properties are beginning to fade; he may actually soon die. In the meantime, he is caring for Professor X, the mutant with massive telepathic abilities who must be sedated since he, too, is suffering from old age: a degenerative mental condition which makes him a danger to anyone in a wide radius when not drugged up. A third mutant is some kind of albino that can track people at a distance but suffers massive skin burns when exposed to sunlight. And apparently they are three of the last mutants alive. It's not entirely clear what happened to all of them, but it is eventually revealed that Professor X killed some of them when his mental disorder first began.
The movie is basically a road trip. Logan is tasked with taking the young girl mutant, Laura, across the US to a supposed safe haven, which may not actually exist. In the meantime, Laura is being hunted. Lots of mayhem ensues.
Logen is not a great movie, but it is far better than Deadpool. For the first three fifths of the movie, the screenwriter simply makes everyone miserable, on the false assumption that misery conveys character and engenders empathy. Unfortunately, it doesn't. It's just misery; it didn't work for the first three DC Comics movies, and there is no reason, other than misplaced loyalty by Marvel fans, that one should believe that it works here. Still, I'll take misery over repulsive juvenile plastic immorality and sick/ugly jokes any day. At least it tried.
The cinematography was well done, and the acting was very good. Dafne Keen does a good job as Laura; I constantly reminded of Millie Bobby Brown from Stranger Things.
The movie picks up just a bit in the last two fifths, where we finally begin to show a budding relationship between Logan and his young charge. Just flashes of a relationship, which is enough to finally engage the sympathy of the viewer. Not quite enough to bring the movie up from its first acts, because the movie ends and the relationship is severed before any real sympathy kicks in, which is quite a shame. If the relationship-building scenes had come earlier in the movie, and were followed by many more, the movie really would have been something.
As it is, the strong language adds nothing to the movie; in fact, most of it seems as awkward and out of place as Spock's use of bad language in Star Trek IV. The violence is more bloody and more up close, some of it so brutal that I turned my head away and waited for the sounds of scraping metal and punctured flesh to subside before I looked back again. More visceral violence also didn't add anything to the movie; I'm sure people raised on bloody video games thought nothing of it, but for me, pornographic violence deadens my soul. I don't enjoy seeing people hurt, and don't take pleasure out of seeing them die in various ways. Sorry. These scenes were supposed to be entertaining, I guess, but I kept wanting to get back to (or start) the actual story.
So meh. Not going into my re-watch list.
Personal Shopper: After making the lovely Clouds of Sils Maria, the director Olivier Assayas kept Kristen Stewart around for another movie. Unfortunately, this one isn't that one. It's not a bad movie, and I must disclose that it is also a genre of movie that doesn't really interest me.
In this one, Kristen is waiting around in France to make contact with the spirit of her recently dead brother. Both of them believed in the spirit world, him more than her, and she wants to be sure that he has had enough time to make contact before moving on with her life. In the meantime, she is the personal shopper for a fabulously wealthy but obnoxiously oblivious and unapproachable celebrity of some kind. Some kinds of contact with the spirit world are made, or maybe not, and then other random things happen, some spooky, some violent. But these are few and far between the wanderings around of the protagonist.
In CoSM, there was a definitive, progressing story-line with interesting characters interacting and evolving, supported by an overarching metaphor and some lovely scenery and acting. The acting in this movie is good, but the plot is disjointed, the characters kind of wander around in a screenplay that seems to be cobbled together from a few interesting moments and a lot of stereotypical French cinematic cliches (shots of motorcycles and traffic, smoking, turtlenecks, and pointless conversations). I wasn't impressed.
Pirates of the Caribbean: Dead Men Tell No Tales: Not much to say about this except that it bored me and I couldn't finish it. Johnny Depp provides the only on-screen character and charisma. Everyone else is just a one-dimensional cardboard figure; as a result, the action scenes were like watching building fall down with no characters in them. The plots and action sequences are convoluted and entirely uninteresting, since we've seen them all before, or just about. And there is nothing else there. It's possible I could make another go of it, since it's not bad, exactly, it was just boring.
Jane Eyre (BBC): I don't know if the link is to the full 4-part miniseries, but that's the one you should watch. This is the best version I've yet seen, and possibly the most faithful.
Like all versions, it glosses over Helen's Christian moralizing, so important to the story but absent from any film version. Still, nearly everything else I remember is included, although not always in the right order. The other film versions drastically shorten the initial conversations between Jane and Rochester; this one leaves enough in to not ruin it. The movie doesn't seem like it hurries to get to the action scenes. But it is never dull.
It is all finely acted and produced. Jane really holds herself to be plain, so that you almost believe it. A greatly entertaining visit to the world of Jane Eyre, when you don't have the book about you.
What's The Opposite Of Humble?
I had intended to stay quiet about everything I know, but this post here on Tenkar's Tavern was, I suppose, the straw that broke the camel's back.
Or maybe because it's almost St. Paddy's Day and the Irish in me just won't let it go.
As much as anything, this blog post is a warning against centralized power, its corrupting nature, cults of personality, and the slippery slope of authoritarianism (yet I hope to keep this apolitical).
Now that I re-read this, it's really long, but I wanted to provide as much as possible so people wouldn't respond with "But, but sour grapes and stuff..." Yes, some of my interactions left me with bitter feelings, but this is not retaliation for a few slights. Rather, I want to shine a light on a very public figure before he becomes "too big to fail." This is to open discussion while it's still feasible to critique the Tenkar Empire without disastrous reprisal.
A little backstory, I've known Erik Tenkar for years, since I started blogging and writing OSR stuff back in 2014. He was a prolific and well known blogger in those days and his power and recognition has steadily grown since then.
For awhile, Erik and I didn't get along. But then we kind of got over that and became the kind of friends that's really more like online acquaintances. He helped me out with promoting various projects, and I tried to show him the same consideration and loyalty (like defending him against Facebook attacks from Stacey and company).
There were isolated moments, like when someone would mention Erik's name in a g+ thread, saying it would be nice if he'd blog about whatever they were kickstarting or selling, but didn't tag him, and he'd find out about it and angrily blog about people who think they're owed.
Looking back, that kind of thing was a trademark of Zak S. You'd mention his name in passing, and if it was anything but a glowing endorsement, he'd find out about it and criticize you or defend himself by clutching his "tavern keeper beyond reproach" pearls.
Or when I commented on his blog post with less than complimentary remarks, like Frog God Games virtually giving their old Pathfinder compatible stock away at a convention... those comments either never made their way to his blog or were deleted without comment.
Not too long ago, I asked if I could guest post on his blog, which he regularly encouraged. He said sure, but when I sent him the content, there was zero response and it never appeared. That I can sort of understand, because it was a little risque, having to do with Alpha Blue and legalized brothels in Nevada. Nevertheless, an email saying, "Sorry, that's too much." would have been nice.
And then there's the proposed OSR answer to the ENnies. Erik brought me into discussion and even asked me to be one of three judges. It was going to be Erik, one of the Spahn guys (I think) and myself. The OSR was going to have its own annual award. After several back and forth emails, it was suddenly dropped. I have no idea why. I asked, and got no reply. I assume it was because several OSR products were actually up for an ENnie award that year and a separate OSR award would seem redundant, but I'm still in the dark about those details.
As many of you know, Erik expanded his empire from blogging to podcasting and becoming a Discord fan. He and his helper, Pex, asked me to join. They created a channel or sub-section or whatever for Kort'thalis Publishing even before I could say yes. That kind of reminded me of the whole U2 and itunes debacle, but I didn't want to make a fuss. Ok, fine, I said.
Pex in particular would gently remind me on a regular basis to keep posting into the Discord void, so I did, even though it seemed no one was listening and I just didn't like the Discord format. In fact, I was so impressed with Pex's constant encouragement (eventually, it probably would have seemed like nagging, but maybe that's because I've been married for 7 years), that I asked if he'd be interested in working for Kort'thalis Publishing. He said yes after we negotiated compensation.
A short while later, I released my transhumanist blog post. It was a day or two before I could respond to anything because of my usual busy family life.
Basically, I was booted from Tenkar's Discord machine and Pex told me he wanted nothing more to do with me.
I received an email from Tenkar. The subject line was "Man did you step in it." In the email he states that he wasn't sure what my intent was, but that "flames were spreading" and there was a decision made to remove my publisher's channel."
Despite a few people coming to my defense and calling Erik "transphobic," I attempted to inform Erik on what was going on, why I posted it, etc.
He derisively responded with "Thanks for your concern. If I have something to say, You know where to read it".
I mentioned what had been happening on Twitter, and again one of Erik's spies reported the news back to him where he passive-aggressively responded in an email the following...
Twice on Twitter you claimed you were "kicked off" or expelled from The Tavern's Discord Server. Both times you were incorrect. Your Publisher's Channel was removed (as you were informed of) but you were still a member of the server. Since you desire to be removed from the server (based upon your own claims) we have now removed your membership from the server as you have indirectly requested.
I responded by asking why I'd want to stay somewhere I was clearly unwelcome? And that he was effectively exiling me from the Tenkar Empire. I haven't spoken to him since (but seeing him at GaryCon might be awkward).
Before the whole transhuman blog post, Tenkar had mentioned his support of my upcoming Cha'alt project. Said that he looked forward to seeing more and talking about it on the various places where he discusses RPG matters.
I never bothered to ask for his support when the kickstarter went live, weeks after the za'akier post. Partly because I was confident he'd refuse, but also because I didn't want the backing of someone like that, someone who turns his back on a friend because of some ruffled internet feathers, someone who purports to be an ivory pillar of virtue and integrity, but when it really comes down to it is no better or worse than the rest of us.
Erik, if you had taken money in exchange for mentioning products, that would be a lot less shady than what I've seen from you thus far.
At least I admit that I'm just an old school smut-peddler who's just as easy to corrupt as the next guy. Sure, I can be a dick sometimes. I also like to poke fun at sacred cows. Hell, that's why I've taken Satanis as part of my name. I'm down here in the dirt - below the dirt, actually; where the dungeons are... bedrock. Hell itself! I don't fire back at gamers with "How dare you, sir? I'm a humble bartender and have the utmost reputation!" pretentious twaddle.
Erik, get over yourself. The majority of people who've claimed that you have harassed them, most likely deserve it (deadbeat KS people, Stacey, etc.). But also know that you're presence is intimidating to regular folks, too. I, myself, hesitated before writing this because of who you are (OSR Emperor, Frog God representative, ex-cop, etc.), but I wouldn't be able to sleep at night if I stayed silent.
To Erik's audience, I say this: Be careful of idolatry. The neutral ground of today may become the golden calf of tomorrow...
VS
p.s. If anyone wants to get something off their chest or get sensitive information into the right hands, feel free to email me. If you'd prefer to remain off the record, I have no problem quoting you anonymously.
Πέμπτη 28 Μαρτίου 2019
An Update On Android Things
Posted by Dave Smith, Developer Advocate for IoT
Over the past year, Google has worked closely with partners to create consumer products powered by Android Things with the Google Assistant built-in. Given the successes we have seen with our partners in smart speakers and smart displays, we are refocusing Android Things as a platform for OEM partners to build devices in those categories moving forward. Therefore, support for production System on Modules (SoMs) based on NXP, Qualcomm, and MediaTek hardware will not be made available through the public developer platform at this time.
Android Things continues to be a platform for experimenting with and building smart, connected devices using the Android Things SDK on top of popular hardware like the NXP i.MX7D and Raspberry Pi 3B. System images for these boards will remain available through the Android Things console where developers can create new builds and push app updates for up to 100 devices for non-commercial use.
We remain dedicated to providing a managed platform for IoT devices, including turnkey hardware solutions. For developers looking to commercialize IoT products in 2019, check out Cloud IoT Core for secure device connectivity at scale and the upcoming Cloud IoT Edge runtime for a suite of managed edge computing services. For on-device machine learning applications, stay tuned for more details about our Edge TPU development boards.
Explore Simple Game Algorithms With Color Walk: Part 6
Expand the Perimeter
The greedy algorithm's heuristic can be considered an area heuristic. Each block is one unit of area, and removing blocks increases the amount of empty area on the board. The greedy algorithm tries to maximize that empty area on every move (or eventually when looking ahead to future moves). Instead of maximizing area, we could have it try to maximize something else, and the most obvious thing after area to maximize is the perimeter. Take the following picture of the start of a game, for example:
If we look at dark blue as the next move, then we would expand the area of the empty space by four blocks. Instead of the area, we could look at the perimeter of these blocks and see that by removing them, we have exposed seven new perimeter lengths of empty space. A "perimeter length" is simply an edge of a block, for the purposes of counting. A removed block can add up to three lengths to the new perimeter, such as that lone pink block next to the empty space in the picture above. Adding that pink block's perimeter to the 'L' shaped pink cluster below results in nine new perimeter lengths if pink is chosen on the next move, and that would be the move to chose if we were maximizing perimeter.
To count the perimeter, we want to make sure we're not counting edges along the empty space because those edges don't matter. They won't be a part of the new perimeter if the corresponding blocks were removed, but rather, they would be inside the expanded empty space. To assess how much the perimeter has expanded, we want to only count edges that would still exist once the blocks were removed. Now that we have an idea of what this new heuristic should do, let's look at how to implement it.
You generally have two choices for how to proceed when adding a feature: bottom-up or top-down. We can start either from the bottom with adding the new heuristic count metric, or at the top with adding the new max-perimeter algorithm choice to the list of options. Let's start at the bottom and build up this time. First, we'll add new functions called areaCount() and perimeterCount() to the general functions available outside any object:
function areaCount() {
return _.filter(blocks, function (block) {
return (0 !== block.marked);
}).length;
}
function perimeterCount() {
var count _.reduce(blocks, function (accum, block) {
if (block.marked === 0) return accum;
return accum + _.filter(block.getNeighbors(), function (neighbor) {
return blocks[neighbor].marked === 0 && !blocks[neighbor].isDead;
}).length;
}, 0);
if (count === 0) return areaCount();
return count;
}
The areaCount() function does the work of counting marked blocks from the original greedy algorithm heuristic, and it's just a packaging up of code we've already seen into a function. The perimeterCount() function does all of the dirty work of counting perimeter edges for the new heuristic. The outer _.reduce() operation scans through all blocks accumulating edge counts. For each block, if the block isn't marked, we just ignore it and return the accumulator unchanged. For any block that is marked (meaning, the block is being considered for removal), we want to _.filter() all of it's neighbors and count the ones that are not marked and not dead. That combination identifies those blocks that are not currently being considered for removal or part of the empty space. Any such block that's a neighbor of a marked block will be on an edge that makes up the new perimeter, so we count it. It should be clear from this function that it will work in general whether we are looking one move ahead or more, so we can use this heuristic in a look-ahead version of max-perimeter, too.Notice that the perimeter case will fall back on areaCount() if there is no new perimeter count found. This situation happens near the end of a game, when all of the blocks that are left on the board are disjoint. If we didn't fall back on areaCount(), the algorithm would get stuck in an infinite loop, picking the first color indefinitely since all of the colors result in zero new perimeter count. When that happens, we want to go ahead and pick the color that removes the most blocks to finish up the game.
If you also noticed the call to block.getNeighbors() and wondered where that came from, the function getNeighbors() was moved from Cluster to Block, because it definitely makes more sense to have it in the Block:
function Block(x, y, color, i, isDead) {
// ...
this.getNeighbors = function() {
var neighbors = [];
var i = this.position;
if (i % grid_length > 0) {
neighbors.push(i - 1);
}
if (i % grid_length + 1 < grid_length) {
neighbors.push(i + 1);
}
if (i - grid_length > 0) {
neighbors.push(i - grid_length);
}
if (i + grid_length + 1 < grid_length * grid_height) {
neighbors.push(i + grid_length);
}
return neighbors;
};
}
Naturally, the other calls to getNeighbors() need to be changed to block.getNeighbors() as well. Now this function can be called from outside of Cluster so we can use it in the perimeterCount() metric to count perimeter edges.What we're actually doing here is adding a new option to the greedy algorithm instead of creating an entirely new algorithm. To use this new perimeterCount() function, we want to call it at the end of Control.checkGameBoard() where we were counting the removed blocks before:
this.checkGameBoard = function(check_move, metric) {
_.each(blocks, function (block) {
if (block.marked >= check_move) {
block.marked = 0;
}
});
blocks[0].cluster.markNeighbors(this.color, check_move);
return metric();
}
Here we changed the code that counts marked blocks to instead call a function that describes which metric we want to use when assessing the marked blocks. Currently those functions can be areaCount() or perimeterCount(), but we can easily add more in the future. All of the places that used to call checkGameBoard() now need to pass areaCount as the last argument and the default metric to use, and we'll be adding a new call with perimeterCount as the argument for the max-perimeter algorithm in Solver: function Solver() {
// ...
this.maxPerimeter = function() {
var max_control = _.max(controls, function(control) {
return control.checkGameBoard(1, perimeterCount);
});
this.index = max_control.index;
}
}
This is the beauty of functional programming. We're just passing around the function that we want to use for a certain action, and it ends up being wonderfully clean, elegant, and flexible. This algorithm we just created happens to have the exact same structure as the greedy algorithm, so we can actually modify the Solver.greedy() function to accommodate both metrics at once: this.greedy = function() {
var max_control = _.max(controls, function(control) {
return control.checkGameBoard(1, that.metric);
});
this.index = max_control.index;
}
And then we set the metric used in this algorithm in the switch statement that selects the algorithm to run, along with adding in the new case for the max-perimeter algorithm: $('#solver_type').change(function () {
switch (this.value) {
// ...
case 'greedy':
that.solverType = that.greedy;
that.metric = areaCount;
break;
case 'greedy-look-ahead':
that.solverType = that.greedyLookAhead;
that.metric = areaCount;
break;
case 'max-perimeter':
that.solverType = that.greedy;
that.metric = perimeterCount;
break;
default:
that.solverType = that.roundRobin;
break;
}
With the new algorithm added, we just need to add max-perimeter to the list of algorithms in the UI, and we can test it out:Surprisingly, this new heuristic outperforms the base area-counting heuristic for the greedy algorithm. It also has some interesting behavior that can be seen while it's running. Quite often it will make choices in moves that end up leaving one block color on the board for an extended set of moves while it clears away the other colors:
This delayed clearing of one color may help explain why this metric does better than area-counting with no look-ahead, because one color choice is saved while the others are being cleared, and a few moves of that saved color can be combined into one color-clearing move. This strategy works well enough that it's worth about as much as looking one more move ahead, as can be seen when stacking up the results with the other algorithms:
Algorithm | Min | Mean | Max | Stdev |
---|---|---|---|---|
RR with Skipping | 37 | 46.9 | 59 | 4.1 |
Random with Skipping | 43 | 53.1 | 64 | 4.5 |
Greedy | 31 | 39.8 | 48 | 3.5 |
Greedy Look-Ahead-2 | 28 | 37.0 | 45 | 3.1 |
Greedy Look-Ahead-3 | 25 | 34.2 | 40 | 2.7 |
Greedy Look-Ahead-4 | 25 | 33.3 | 39 | 2.6 |
Greedy Look-Ahead-5 | 25 | 33.1 | 41 | 2.8 |
Max Perimeter | 29 | 37.4 | 44 | 3.2 |
This just goes to show that it's worthwhile to try out different things and see how they work. I wasn't expecting a different heuristic to make much of a difference here, but max-perimeter was actually significant. It should be interesting to see what happens when we extend the max-perimeter heuristic to look-ahead, which is now quite easy to do.
Max Perimeter Look-Ahead
Since the max-perimeter algorithm is a heuristic that already works with the greedy algorithm, all we have to do to get it working with the greedy look-ahead algorithm is modify Solver.greedyLookAhead() to use the metric that's being set in the switch statement:
this.greedyLookAhead = function() {
var max_control = _.max(controls, function(control) {
if (control.checkGameBoard(1, that.metric) === 0) {
return 0;
}
return greedyLookAheadN(2);
});
this.index = max_control.index;
}
And we make the same change in greedyLookAheadN(), since that function also calls Control.checkGameBoard(): function greedyLookAheadN(move) {
return _.max(_.map(controls, function(control) {
var matches = control.checkGameBoard(move, that.metric);
if (matches === 0 || move >= max_moves) {
return matches;
}
return greedyLookAheadN(move + 1);
}));
}
Finally, we can add the max-perimeter look-ahead algorithm to the switch statement and to the UI algorithm list: $('#solver_type').change(function () {
switch (this.value) {
// ...
case 'max-perimeter':
that.solverType = that.greedy;
that.metric = perimeterCount;
break;
case 'max-perimeter-look-ahead':
that.solverType = that.greedyLookAhead;
that.metric = perimeterCount;
break;
default:
that.solverType = that.roundRobin;
break;
}
And voila, we already have another algorithm that we can evaluate for multiple levels of look-ahead. After running up to look-ahead-by-5, the following table shows how the max-perimeter look-ahead algorithm compares to the original greedy algorithm:Algorithm | Min | Mean | Max | Stdev |
---|---|---|---|---|
RR with Skipping | 37 | 46.9 | 59 | 4.1 |
Random with Skipping | 43 | 53.1 | 64 | 4.5 |
Greedy | 31 | 39.8 | 48 | 3.5 |
Greedy Look-Ahead-2 | 28 | 37.0 | 45 | 3.1 |
Greedy Look-Ahead-3 | 25 | 34.2 | 40 | 2.7 |
Greedy Look-Ahead-4 | 25 | 33.3 | 39 | 2.6 |
Greedy Look-Ahead-5 | 25 | 33.1 | 41 | 2.8 |
Max Perimeter | 29 | 37.4 | 44 | 3.2 |
Max Perimeter Look-Ahead-2 | 27 | 35.0 | 44 | 2.8 |
Max Perimeter Look-Ahead-3 | 27 | 35.0 | 41 | 2.9 |
Max Perimeter Look-Ahead-4 | 26 | 34.8 | 43 | 3.3 |
Max Perimeter Look-Ahead-5 | 28 | 34.9 | 46 | 2.9 |
The look-ahead-by-2 run looks better than the corresponding greedy look-ahead-by-2 run with area-counting, but beyond that, the max-perimeter heuristic seems to hit a wall of diminishing returns, and it can never quite get as good as the later greedy area-counting runs. This is useful information, and there may be a reasonable explanation for this lagging performance.
The max-perimeter heuristic seems to be more efficient, reaching better performance without looking as far ahead, but it seems to suffer near the end of the game. At the end of the game, when the board is mostly cleared and there are only a few colored blocks left, there won't be much of any new perimeter made with any given move choice. It's more important to increase the perimeter rapidly early in the game, and later in the game we want to finish off with removing as many blocks as possible on each move. This strategy calls for a hybrid approach, where we use the max-perimeter heuristic for the first, oh 20 moves, let's say, and then switch to the area-counting heuristic to finish it off. We can easily make such a heuristic to explore this hypothesis:
function perimeterAreaHybrid() {
if (moves >= 20) return areaCount();
return perimeterCount();
}
And we add this hybrid heuristic to the list of choices: $('#solver_type').change(function () {
switch (this.value) {
// ...
case 'perimeter-area':
that.solverType = that.greedy;
that.metric = perimeterAreaHybrid;
break;
case 'perimeter-area-look-ahead':
that.solverType = that.greedyLookAhead;
that.metric = perimeterAreaHybrid;
break;
default:
that.solverType = that.roundRobin;
break;
}
Now we can run it and see how it compares to the other algorithms:Algorithm | Min | Mean | Max | Stdev |
---|---|---|---|---|
RR with Skipping | 37 | 46.9 | 59 | 4.1 |
Random with Skipping | 43 | 53.1 | 64 | 4.5 |
Greedy | 31 | 39.8 | 48 | 3.5 |
Greedy Look-Ahead-2 | 28 | 37.0 | 45 | 3.1 |
Greedy Look-Ahead-3 | 25 | 34.2 | 40 | 2.7 |
Greedy Look-Ahead-4 | 25 | 33.3 | 39 | 2.6 |
Greedy Look-Ahead-5 | 25 | 33.1 | 41 | 2.8 |
Max Perimeter | 29 | 37.4 | 44 | 3.2 |
Max Perimeter Look-Ahead-2 | 27 | 35.0 | 44 | 2.8 |
Perimeter-Area Hybrid | 31 | 39.0 | 49 | 3.8 |
Perim-Area Hybrid Look-Ahead-2 | 27 | 35.2 | 43 | 3.2 |
Perim-Area Hybrid Look-Ahead-3 | 27 | 33.5 | 41 | 2.7 |
Perim-Area Hybrid Look-Ahead-4 | 26 | 33.2 | 41 | 3.1 |
Perim-Area Hybrid Look-Ahead-5 | 28 | 33.0 | 41 | 2.5 |
Again, I'm surprised at how this algorithm performs, but this time it doesn't work as well as I thought it would. It does seem to perform a bit better than the max-perimeter look-ahead-by-2 version once it gets to look-ahead-by-3, but I was expecting it to do better than the greedy look-ahead-by-3 and later versions and it never quite achieves that. Maybe the hybrid approach doesn't work as well as I'd hoped, or we're just reaching the natural limits of what an algorithm can do in this game. Let's explore another avenue.
Constructing a Deep-Path Algorithm
The idea of clearing a deep path of blocks into the game board before expanding outward is another strategy that has some potential to work well. In manual attempts at playing the game, I found that this strategy of making a path deep into the center of the board first generally worked pretty well for clearing the board in a lower number of moves, and I could easily get below 35 moves when I drove towards the middle of the board first.
We should be able to encompass this strategy in another heuristic to use with the greedy algorithm, and it seems somewhat similar to maximizing perimeter. We can accentuate that type of search by trying to maximize the perimeter-area ratio, which should give added weight to color choices that result in long, narrow paths into the board. The corresponding metric function is straightforward:
function ratioCalc() {
var area = areaCount();
if (area === 0) return area;
return perimeterCount() / area;
}
Here we are careful to not divide by zero, and we can add a couple more algorithms to the list of choices: $('#solver_type').change(function () {
switch (this.value) {
// ...
case 'deep-path':
that.solverType = that.greedy;
that.metric = ratioCalc;
break;
case 'deep-path-look-ahead':
that.solverType = that.greedyLookAhead;
that.metric = ratioCalc;
break;
default:
that.solverType = that.roundRobin;
break;
}
This heuristic is fascinating because it does pretty much exactly what I wanted it to do. Take a look at an example game in progress:Deep, narrow paths are made into the blocks, as desired, but the algorithm performs terribly. Take a look at some runs with different look-aheads compared to the other algorithms:
Algorithm | Min | Mean | Max | Stdev |
---|---|---|---|---|
RR with Skipping | 37 | 46.9 | 59 | 4.1 |
Random with Skipping | 43 | 53.1 | 64 | 4.5 |
Greedy | 31 | 39.8 | 48 | 3.5 |
Greedy Look-Ahead-2 | 28 | 37.0 | 45 | 3.1 |
Greedy Look-Ahead-3 | 25 | 34.2 | 40 | 2.7 |
Max Perimeter | 29 | 37.4 | 44 | 3.2 |
Max Perimeter Look-Ahead-2 | 27 | 35.0 | 44 | 2.8 |
Perimeter-Area Hybrid | 31 | 39.0 | 49 | 3.8 |
Deep-Path | 51 | 74.8 | 104 | 9.4 |
Deep-Path Look-Ahead-2 | 50 | 74.9 | 112 | 9.8 |
Deep-Path Look-Ahead-3 | 50 | 75.2 | 112 | 9.8 |
Deep-Path Look-Ahead-4 | 50 | 75.4 | 112 | 9.5 |
It doesn't even improve as it looks further and further ahead. The problem is likely that while it may be a good idea to create a deep path at the beginning of the game, it's a waste of moves to keep doing it on the 30th move, and definitely has run its course by the 70th move. It may be worth seeing if using this heuristic only in the beginning will improve things with a hybrid heuristic similar to the perimeter-area hybrid approach we tried before. We can make a simple heuristic to try out this theory:
function ratioAreaHybrid() {
if (moves >= 12) return areaCount();
return ratioCalc();
}
I picked a move threshold of 12 simply by looking at where the deep path generally stops usefully extending when clicking through a game manually using the deep-path heuristic. We can also add a couple more choices to the list of algorithms: $('#solver_type').change(function () {
switch (this.value) {
// ...
case 'path-area':
that.solverType = that.greedy;
that.metric = ratioAreaHybrid;
break;
case 'path-area-look-ahead':
that.solverType = that.greedyLookAhead;
that.metric = ratioAreaHybrid;
break;
default:
that.solverType = that.roundRobin;
break;
}
This version of the algorithm performs much better than the pure deep-path version, but it never quite achieves the performance of the original greedy algorithm or even the max-perimeter heuristic:Algorithm | Min | Mean | Max | Stdev |
---|---|---|---|---|
RR with Skipping | 37 | 46.9 | 59 | 4.1 |
Random with Skipping | 43 | 53.1 | 64 | 4.5 |
Greedy | 31 | 39.8 | 48 | 3.5 |
Greedy Look-Ahead-2 | 28 | 37.0 | 45 | 3.1 |
Greedy Look-Ahead-3 | 25 | 34.2 | 40 | 2.7 |
Max Perimeter | 29 | 37.4 | 44 | 3.2 |
Max Perimeter Look-Ahead-2 | 27 | 35.0 | 44 | 2.8 |
Perimeter-Area Hybrid | 31 | 39.0 | 49 | 3.8 |
Deep-Path | 51 | 74.8 | 104 | 9.4 |
Path-Area Hybrid | 35 | 44.2 | 54 | 3.5 |
Path-Area Hybrid Look-Ahead-2 | 34 | 40.8 | 49 | 3.0 |
Path-Area Hybrid Look-Ahead-3 | 31 | 39.0 | 47 | 3.2 |
Path-Area Hybrid Look-Ahead-4 | 32 | 38.7 | 45 | 2.7 |
Even though it seemed like a good idea to start with a deep path toward the center of the board before spreading out and clearing more blocks, it just doesn't make progress fast enough to overcome the initial slowness of creating that deep path at the start. Oh well, it was worth a try, at least.
We've covered a lot of ground in this exploration of other heuristics for the greedy algorithm, and we've learned a lot about what makes a good heuristic. While we found some promising options by attempting to maximize the perimeter or take a hybrid approach of combining different heuristics, it turns out that it's fairly difficult to do better than the basic greedy algorithm of clearing out the most blocks on the current move or, even better, looking ahead to see how to clear out the most blocks a few moves ahead.
Even though we didn't find a better heuristic, it's still worth exploring because we improved the flexibility of the code and made it easier to add in more heuristics in case we come up with other ideas for potentially better ones in the future. We now have a ton of knobs and dials to fiddle with, and it's possible to spend an awful lot of time tweaking and tuning things. It also cannot be overstated how important and useful it is to gain as much knowledge about a problem space as possible. You never know when you'll come across a key insight that leads to a solution with much better performance. Next time we'll put additional heuristics for the greedy algorithm aside and instead turn to exploring other types of standard graph search algorithms. There are plenty of other algorithms to try, and we can see if it's possible to use them to some extent with the harsh exponential growth of move choices with this game.
Article Index
Part 1: Introduction & Setup
Part 2: Tooling & Round-Robin
Part 3: Random & Skipping
Part 4: The Greedy Algorithm
Part 5: Greedy Look Ahead
Part 6: Heuristics & Hybrids
Part 7: Breadth-First Search
Part 8: Depth-First Search
Part 9: Dijkstra's Algorithm
Part 10: Dijkstra's Hybrids
Part 11: Priority Queues
Part 12: Summary
Interview With Euphoria: Build A Better Dystopia Designer Jamey Stegmaier!
@coffeeswiller
Hello, gamers! We have a treat today. We had an interview with Jamey Stegmaier of Stonemaier Games. Jamey is the designer of Viticulture and Euphoria: Build A Better Dystopia, and you may have seen the previous interview with him over at the Escapade Games blog here. As I am writing this, he is in the last few days of the Kickstarter campaign for Euphoria, and he was nice enough to answer a few questions for us about Euphoria and Viticulture.
Growing Up Gamers: I'm excited to talk to you about Euphoria: Build A Better Dystopia, but I want to back up a little and talk about Viticulture, your first game. You really nailed production on that one, and did a phenomenal job delivering. How did you do that, and what advice can you offer for other designers' freshman attempts? Perhaps I should add "aside from the wealth of information in the Kickstarter Lessons column on the Stonemaier Games website". :)
Jamey Stegmaier: Thank you so much! I'm glad you're pleased with the production quality. I have to give credit to my graphic designer (Christine Bielke), my artists (Beth Sobel and Jacqui Davis), and Panda Game Manufacturing (Chris Matthew is amazingly responsive). The combination of those four parties created the game you see today. So my advice to other publishing startups is: Hire talented professionals and manufacturers. This is not a place to cut costs. This is not the time to have a friend do your graphic design or art for free. If they're good enough to do your graphic design or art, you'll know it because they'll charge you. Also, I'm sure there are some other great manufacturers out there, but I could not be happier with Panda. They are consummate professionals every step of the way.
GUG: Viticulture looks amazing, by the way! Looking at the game board and player boards for Viticulture, I noticed that that they are double-sided. One side has detailed descriptions, and the other side is more minimalist and lets the art stand out. What led to the decision to make them this way?
JS: When I got the board and player mat art from Jacqui, I was swept away into Tuscany. And then we covered both with graphic design, and I was still swept away, but not quite as much. So given the marginal cost to make the mats and boards double-sided (why have one side when you can have two?), I decided to have one side of the mat with as few words and design elements as possible.
GUG: Good call! In terms of number of players, 2-6 players is quite a range. I've seen quite a few games that indicated that they played with this range, but it often seems that playing with 2 players or 5-6 players can be clunky or frustrating. Do you feel that you have avoided this with Viticulture and Euphoria? Do you feel there is an optimal number of players for the games?
JS: I'm a big fan of games that pull off that range. I want games that I can play with my girlfriend (who is currently imaginary, but it's feasible she could exist in the future) or two other couples. In my games, I try to break down turns into single choices. Many worker-placement games let players use all of their workers each turn, which can lead to some interesting decisions, but it also means that you might be waiting a really long time between turns. In Viticulture and Euphoria, your turn consists of placing exactly 1 worker on the board. That keeps things moving along. Also, in Euphoria, if a worker occupies a spot on the board that you want, you can often place your worker on that spot and "bump" the other worker back to its owner. Thus the more players, the more bumping occurs, and the game moves quite quickly.
As for optimal numbers, based on the way it scales, Viticulture is a little looser and forgiving at 3 or 5 players. I would slightly lean towards those numbers, but I like tight games that make me think on my feet. Time will tell which number I prefer for Euphoria. So far I enjoy it with any number of players.
GUG: Are there any mechanical similarities between Euphoria and Viticulture? Was it easy to transition between working on the two games?
JS: Both are worker-placement games, but that's where the similarities end. The games have very different mechanics, starting with Euphoria using dice as the workers. That was one of the first elements I incorporated into Euphoria, and it set it apart from Viticulture from day one and helped with the transition. Viticulture had more of an indirect influence on Euphoria in that after the Viticulture campaign, I wanted to play more board games. I wasn't playing enough. So I started playing a lot more games, and it was tough for those games not to influence Euphoria. I played 7 Wonders and suddenly Euphoria was a drafting game. I played Belfort and suddenly Euphoria had a hexagon-shaped board with area control. I played Tzolk'in and suddenly Euphoria had a tech track. Fortunately I was able to distance myself from those games to make something unique and new. I wonder if other designers run into this—you play a game you love, and you want to make your version of it.
GUG: In all honesty, we have a new favorite mechanic every week; it's not just you! Aside from your own games, what games end up on your table most often? And what are your current top three favorite games?
JS: I'll leave Viticulture and Euphoria out of this answer, because those are the games I've played the most. In the last few months, 7 Wonders has probably hit the table the most. My current top 3 are: Tzolk'in, Libertalia, and Agricola. But there are a lot of games up there near that top 3. Some of the games I've played quite a bit through the ages are Settlers, Dominion, poker, and Magic. I'm sure those four continue to influence me even if I don't realize it.
GUG: How did you decide on the art and style? I really like the 1920's Art Deco style in Euphoria. What did your collaboration with the artist look like?
JS: Jacqui Davis is such a pleasure to work with, and her visual talents are truly amazing. She and I talked about the look of the game early on in the process, and after we were on the same page, I would send her the story behind the world, the markets, and the recruits, and se would take it from there. Sometimes I had a specific detail to mention, but usually I tried to give Jacqui complete creative freedom. She knows what she's doing better than I do.
GUG: We love the work of Jacqui Davis! She has created some aweome pieces for Storm Hollow: over 100 at last count! What drew you to the dystopia theme? What dystopian sources most inspired you? And what came first when designing Euphoria: mechanics, or theme?
JS: I've been a big fan of dystopian literature and movies for a long time. When I started brainstorming for the project, I made a long list of my favorite dystopian works…it's a long list. But a select few of my favorites are Ready Player One, Children of Men, The Matrix, and Oryx and Crake. Although Euphoria has a story of its own, there are lots of winks to other dystopian works in the game.
In the design process, theme came first, but each thematic element was paired with a mechanic after a brainstorming session. I made a list of the core elements of dystopian fiction, and those elements inspired the mechanics. Of course, the mechanics changed quite a bit over time, but by that point I had a different goal in mind: fun. Theme and mechanics are so important, but if they don't translate into fun, they don't mean anything.
GUG: Are you finding that it is easier to run a Kickstarter campaign the second time around? What would you say has been the biggest change between the campaign for Viticulture and the campaign for Euphoria?
JS: I wouldn't use the word "easier." :) I was more prepared this time, but it's still a learning process every time. Plus, the scope of Euphoria and the speed at which we funded put this project in a whole different category than Viticulture (Viticulture had 942 backers; Euphoria has over 3000 as I write this. Viticulture funded on Day 17; Euphoria funded after 1 hour). I thought I might sleep more during the Euphoria campaign, but that hasn't been the case. It's a 60-70 week job in addition to my day job.
The biggest change between the two campaigns is something I didn't expect and something I probably won't do again. Because Viticulture was released to the world during the Euphoria campaign, there has been an incredible amount of enthusiasm for it. The question I got asked the most during Week 1 was: When are you going to add Viticulture reward levels? I listen to my backers, so I added Viticulture levels, but it's always felt a little odd to me, because Viticulture is a completely different game than Euphoria. So there was a period during the project when there was a lot more attention on Viticulture than Euphoria. In the future I'd like to keep our games completely separate.
The plus side to all this is that we've completely sold out of Viticulture, so we're considering a second print run.
GUG: Lastly, I wanted to ask about playtesting. How much playtesting went into Viticulture? And how did the playtesting process evolve between Viticulture and Euphoria?
JS: Great question, because this was a big difference between the two. Hardly any blind playtesting went into Viticulture before the project began. Alan and I tested it a ton, but I don't think we realized the value of blind playtesting at that point. Thankfully, many backers became invested in the game during the Kickstarter project, so we had an unexpected outpouring of blind playtesting that really helped the project.
I learned my lesson for Euphoria, and I now had access to a ton of amazing, insightful gamers. So Euphoria went through a gauntlet of blind playtesting by 60+ people around the world while Alan and I continued to playtest it. We made the PnP (print and play) accessible to any backer during the project, so many more people have continued to blind-playtest it during the campaign. I would say that we easily have over 100 playtesters at this point, if not more. They are an amazing asset, and I can't think them enough for the ink, sweat, time, and effort they put into helping us build a better dystopia.
--
What a guy, eh? We're really happy Jamey took the time to talk to us. He's a great guy, and we're happy to see his project doing so well. Please pop over and check it out while there's still time!
Τετάρτη 27 Μαρτίου 2019
Defense Of Roman Britain
Play Defense of Roman Britain and take part in a whirlwind of battles and intrigues. Prosperity of Roman Empire and Emperor's life depends of you!
Categories : Action Battle Strategy Tower Defense
Downloads : 61.5K
Price : Free
It has been more than 10 years since the first Roman legions landed in Britannia. Celts and Brits tried to resist but the Roman army was stronger. Most of Britannia's territory has been captured but the war continues. You, as a young Roman patrician, will take part in the suppression of rebellious tribes. Build powerful weapons and plan strategy of protection. Wisely lead battles with many units on each level. Upgrade your weapons and spells.
Game Features:
- Non-linear storyline and exciting quests;
- Fun and addictive tower defense gameplay;
- Beautiful graphics & interesting sound effects;
- Over 60 levels with multiple difficulties;
- Over 30 types of enemies;
- 8 types of fighting weapons, each containing a variety of system upgrades;
- 5 types of installable gears for combat vehicles.
Screenshot
Requirements
Game Size: 118 Mb
Windows 98/XP/Vista/7/8/10
Important
All free games provided at this web-site were licensed, sublicensed for distribution by other game developers, game publishers or developed by internal game studio and provided free legally.
If you have questions about this game, please contact us using this form.