Skip to Content

Newsfeeds

Four studies on videogame genre preferences - by Wai Yen Tang

Gamasutra.com Blogs - 25 July 2014 - 12:36am
A review of four studies examining preferences for video games and video game genres.
Categories: Game Theory & Design

Letter Quest Price Change on PC and Mac - by Mark Smith

Gamasutra.com Blogs - 25 July 2014 - 12:22am
Letter Quest was originally released on PC and Mac for $9.99. After a lot of careful consideration (and very low sales), we lowered the price to $4.99, and would like to explain the reasoning behind the decision.
Categories: Game Theory & Design

DrupalCon Amsterdam: Countdown to Amsterdam - Shaping The Sessions After Selection

Planet Drupal - 24 July 2014 - 11:30pm

Business track chair Steve Parks writes on the work being done to develop the session content for DrupalCon between session selection and the event itself.

It seemed to happen in the blink of an eye. DrupalCon Austin finished, and within a week the window for submitting sessions for Amsterdam closed. After that, the track chairs had just two weeks to review and assess hundreds of submissions to sift them down to just 13 sessions per track-- and we all had day jobs to do too!.

Although selection is now complete, the work to make DrupalCon great isn’t over. The track chairs (and of course the Drupal Association staff) are still devoting considerable time each week until DrupalCon is actually over.

Feedback

Firstly, we committed to providing detailed feedback to anyone whose proposed session wasn’t selected. In the case of the business track, we went into quite a bit of detail providing tips about what could get each session selected in future. We also encourage new speakers, or those with new talks, to deliver them at DrupalCamps first to get practice.

Presentation Coaching

We offer all selected speakers presentation coaching, and some accept. In these cases Emma-Jane Hogbin works with them to hone their skills and their presentation so that it is ready for the DrupalCon stage. It can be pretty daunting to suddenly have hundreds of smart community members as your audience, especially when many of them will also have expertise in the subject of your talk, so having this coaching can really pay off.

Content Coaching

As track chairs we work with many of the speakers on each track to help them develop the content of their presentation for DrupalCon. This is partly to help ensure the talk is pitched at the right level and contains valuable information, and partly so it can add to previous similar talks rather than repeat them. We also help refine the session titles and descriptions so that delegates will want to choose to go to the session.

Scheduling

There are a range of room sizes available, and 3 days of conference. One of our next jobs is to guesstimate how popular each session will be and put it in an appropriately-sized room-- while also scheduling it at a suitable time. This means considering any requests from the speakers, avoiding clashes between sessions that complement each other, and placing more introductory sessions earlier than similar more advanced sessions, as well as a range of other factors. The aim is also to ensure that, as far as humanly possible, most delegates will have something to see in each time-slot regardless of their area of specialism or their level of experience.

Education, not promotion

One of the clauses in the DrupalCon speaker agreement covers a key part of the longstanding culture of DrupalCon that we’re trying to protect as Drupal grows. DrupalCon is not a typical industry sales conference. Audiences don’t want to sit through a product pitch, or a company’s credentials and ego pitch.

The aim of DrupalCon is for education and sharing by the community, for the community. Yes, companies are a vital part of that community - but they are respected based on what they give rather than what they try to get out of DrupalCon. At previous conferences I’ve heard the backchannel backlash against companies overstepping this line. Sales-y sessions are bad for delegates, bad for DrupalCon’s future, and even bad for the company concerned.

As track chairs, that means that we’re alert to sessions that may risk being a little too promotional, and we’ll chat to the speakers concerned (It was also a factor considered in the session selection, as a first filter). We review the slide decks in advance of the conference.

If you feel that any sessions on the business track this year are too promotional, I’d appreciate you letting me know, and I’ll raise it for discussion with the Drupal Association.

Getting Excited

Finally, there is still time for us as track chairs to get excited about the coming conference. I’ve now booked my ticket and my hotel - and can’t wait to land in Amsterdam at the end of September and see all the work come together.

See you there!

Categories: Drupal

NEWMEDIA: DrupalCamp Colorado 2014: Large Scale Drupal

Planet Drupal - 24 July 2014 - 8:26pm
DrupalCamp Colorado 2014: Large Scale DrupalWith less than a week until the camp, here is a preview of what to expect from our team!

Everyone here at NEWMEDIA is extremely enthusiastic about this year's DrupalCamp Colorado, which will be held on August 1st-3rd in Denver. This year’s theme for the camp is “Large Scale Drupal” where the focus is on how  larger organizations can become more collaborative with the Drupal community by pooling ideas and resources together to solve common issues they are facing. There will be a wide variety sessions this year, six of which will be presented by members of NEWMEDIA. We are also very excited about being a Platinum sponsor.

Drupal 8 Module Development: Just the Basics

Start off this years DrupalCamp Colorado right and jump into Drupal 8 module development.  Brandon Williams  will cover the basics of Symphony and the Drupal 8 module , including a review of what has replaced some of the most common hooks from D7. Brandon is an advocate for learning and change and in the technological world we experience that invariably. While Drupal 7 will be the best option for the short-term, it is never too early to dive in to D8 as he describes in why I love D8!

Jenkins 101: A Drupal Perspective

Want to know more about Jenkins from a Drupal perspective and have a better understanding on how Jenkins can be applied to multiple processes? Then you should join Brandon in his second session that will introduce Jenkins from a Drupal perspective and how it has been proven to be beneficial within NEWMEDIA. As a community we can take this knowledge and continue the conversation to help emerge the tools to permit everyone to become more effective.

Securing customers credit card data

Security for your clients credit cards is now a necessity in today's growing eCommerce market. Rick Manelius  will review all of the parts of the standard that apply to Drupal along with providing efficient advice on how to best reduce one's risk when processing credit cards. As the amount of eCommerce transactions continues to rise it becomes even more critical to support every part in the system. If you would like more information on PCI compliance for Drupal  visit DrupalPCICompliance.org you can also download the free, community sponsored white paper.

The SCSSy Wild West: Partial Organization for a Complete Site

Take a look at Tim’s blog Partial to Partials: BoF Recap for a recap of last years session about the organization of partials.This year Tim Whitney  will go over a partial layout strategy for all scales of Drupal and non Drupal. Going over common pain points of SCSS partials and how to alleviate them while including approaches to help make life a little easier for everyone.

Integration Testing with KitchenCI & Multiple Provisioners

“Works on my machine” is no longer an acceptable reason for a Drupal site to not perform as expected across multiple environment (i.e. production, staging, development, and local development). This is particularly important as projects become larger, more complex, and have stringent requirements on performance, uptime, and security. Kevin Bridge's presentation will start with the basics of “Infrastructure as Code” and then quickly ramp up to review how to use provisioning tools and integration tests to ensure your infrastructure is achieving the desired state.

Intro to Frontend Ops

Discover the tools that help frontend developers stay consistent as they develop their drupal themes. This discussion from Ryan McVeigh will focus on gruntjs and bower and will also discuss Gulp JS, Phantomjs, PageSpeed, and Slimer JS. You will be able to watch some of his pre-recorded demos of the tools in action. Come and join in on the  discussion and see how the use of these various tools can contribute to your routine work day.

Come Join Us!

There is still time to sign up for this weekend and better yet it is free with the option to donate.  Any registration contributions beyond DrupalCamp Colorado’s  budget target will be donated to 3 charities: The Ada Initiative, Code.org, and Electronic Frontier Foundation.  This weekend has a  great full-day Training Day on August 1st and will be offering three separate classes you can pay and sign up for.

Categories: Drupal

Another Drop in the Drupal Sea: Ways to shoot yourself in the foot: element validation

Planet Drupal - 24 July 2014 - 8:21pm

I needed to do some custom validation of fields on a form. So, I decided to use #element_validate. One of the fields I was validating appeared a bit strange to me, though. When I displayed its $form_state['values']['field_face_palm'] information I saw that it looked like:

$field_face_palm['und'] = 'you_knucklehead'

instead of like:

$field_face_palm['und'][0]['value'] = 'you_knucklehead'

read more

Categories: Drupal

Drupal.org frontpage posts for the Drupal planet: Drupal 7.30 released

Planet Drupal - 24 July 2014 - 3:12pm

Drupal 7.30, a maintenance release with several bug fixes (no security fixes), including a fix for regressions introduced in Drupal 7.29, is now available for download. See the Drupal 7.30 release notes for a full listing.

Download Drupal 7.30

Upgrading your existing Drupal 7 sites is recommended. There are no new features in this release. For more information about the Drupal 7.x release series, consult the Drupal 7.0 release announcement.

Security information

We have a security announcement mailing list and a history of all security advisories, as well as an RSS feed with the most recent security advisories. We strongly advise Drupal administrators to sign up for the list.

Drupal 7 includes the built-in Update Manager module, which informs you about important updates to your modules and themes.

There are no security fixes in this release of Drupal core.

Bug reports

Drupal 7.x is being maintained, so given enough bug fixes (not just bug reports), more maintenance releases will be made available, according to our monthly release cycle.

Changelog

Drupal 7.30 is a bug fix only release. The full list of changes between the 7.29 and 7.30 releases can be found by reading the 7.30 release notes. A complete list of all bug fixes in the stable 7.x branch can be found in the git commit log.

Update notes

See the 7.30 release notes for details on important changes in this release.

Known issues

None.

Front page news: Planet DrupalDrupal version: Drupal 7.x
Categories: Drupal

Mediacurrent: Code Review for Non-Technical Folks

Planet Drupal - 24 July 2014 - 2:07pm

Andrew Riley leads us through a high level walkthrough of what Code Reviews are and why we need them. In this talk he covers what we check for at Mediacurrent (syntax, security, efficiency etc) and why code reviews are important for our customers and any company that writes their own code.

Additional Resources

Drupal 8 In Pictures (for Users) | Mediacurrent Blog

Categories: Drupal

Get a job: Obsidian is hiring a Visual Effects Artist

Social/Online Games - Gamasutra - 24 July 2014 - 12:41pm

Handy with Maya and 3ds Max? Irvine, CA-based Obisidian Entertainment is looking to hire a visual effects artist to work with the designers and art director of an upcoming MMORPG. ...

Categories: Game Theory & Design

Don't Miss: Khris Brown on the secrets of great voice acting

Social/Online Games - Gamasutra - 24 July 2014 - 12:31pm

Gamasutra speaks to voice director, consultant and game industry veteran Khris Brown to better understand how high-quality voicework in games comes together from a developer perspective. ...

Categories: Game Theory & Design

Forum One: Drupal 8 Code Sprint at the Jersey Shore

Planet Drupal - 24 July 2014 - 11:52am

On the heels of our own Drupal 8 code sprint in DC, I spent the last weekend with the New Jersey Drupal group who organized a Drupal 8 code sprint in Asbury Park, NJ – and although I was never greeted by The Boss, I was pleased to participate thanks to the generosity of the event organizers.

Issue-Focused

I worked on the MenuLink NG part 1 issue extensively with Peter Wolanin and YesCT. This issue is part of the [Meta] New plan, Phase 2 issue which proposed performance improvement and UI improvement in Drupal 8. This issue originally had a 600KB patch, but to make it more reviewable/committable the issue was split into five child issues.

Three of us spent a solid two days and more than 30 hours addressing every single point that had been raised by reviewers – and which had been holding up the process of adding this to Core.

Image courtesy of Blink Reaction

About this Issue (a high level overview)

A site builder or developer can create menu links in Drupal via configuration by changing the weight, position, creating links in menu, or in code. All these different types of menu links need to be rendered together in menus, so that they present the same in the API to developers. The developer experience on this issue needs to be easy, as almost everything depends on menu items.

While we toiled on this issue, other sprinters worked on DrupalCon Austin’s Consensus Banana, testing the migration path from Drupal 6 to Drupal 7, along with some other issues.

Results and Commits

The sprint was a very productive one, and resulted in Menu part 1 and Menu part 2 being committed to Core, which was a beta-blocker issue. As of this sprint there were seven beta-blocker issues, but solving the Menu issue helps to put us one step closer to the Drupal 8 Beta release!

For those interested, here are the commits for part 1 and part 2. And for those needing a chuckle, Alex “The Situation” Pott – who thankfully preferred DCC (Drupal Core Commits) over GTL (Gym, Tan, Laundry) – drew this goaty looking lama to celebrate his commit

Image courtesy of Blink Reaction

It was very rewarding to work for a weekend with this group of talented developers, and I think we all left the shore content in the knowledge that we’d made strides toward bringing Drupal 8 that much closer to completion.

Check out these other pictures taken by Peter Wolanin and DrupalCamp NJ at the event »

Categories: Drupal

Blog: WildStar's CREDD system explained

Social/Online Games - Gamasutra - 24 July 2014 - 11:01am

"WildStar CREDD can be used to lengthen a subscription by one month, allowing players to exchange game gold for game time. If players don't want to farm gold, they can just pay a regular subscription fee." ...

Categories: Game Theory & Design

Paddle Color Palettes

New Drupal Modules - 24 July 2014 - 10:26am

Allows to define color palettes for Paddle Themer. Depends on Paddle Style.

Categories: Drupal

Sony seeks to settle lawsuit over PSN data breach for $15 million

Social/Online Games - Gamasutra - 24 July 2014 - 10:16am

Sony has agreed to a preliminary $15 million settlement in a long-running class action lawsuit over the PlayStation Network security breach in April 2011. Here's what they're offering to those affected. ...

Categories: Game Theory & Design

Differences between software testing and game testing

Social/Online Games - Gamasutra - 24 July 2014 - 10:07am

A senior QA engineer at King (Candy Crush Saga) with a background in software testing and mobile phone QA takes a look at the differences between the two worlds. ...

Categories: Game Theory & Design

Urban Dressing: Borderland Town

New RPG Product Reviews - 24 July 2014 - 10:05am
Publisher: Raging Swan Press
Rating: 5
Borderland towns have great potential for adventure in themselves, as well as being a useful jumping-off point for adventure in lands beyond... somewhere to gather rumours and supplies if nothing else.

So, how to make it more interesting than a stop at the supermarket? Try this book for a start.

In the style common to many Raging Swan Press books, this work consists of several tables covering different aspects that might apply to, in this case, a borderland town. Reading through them is recommended, you will find ideas spawning as you do so; but if you are in a hurry rolling dice and using whatever you come up with generally works well too.

The first table is Sights and Sounds, and is good for setting the scene and making the place come alive in your player's minds as you describe it. There's a full hundred sights and sounds... and the odd smell... any of which could lead to a whole side-adventure of their own if you (and the party) choose to follow it up.

Next up is a fine list of Businesses. For many parties, coming into town is for the purpose of conducting business: now it can be a lot more than selling loot and purchasing supplies, new weapons and armour and so on. This is followed by a collection of Folk of Interest. They might be who the party has come to see, they might have a job for them... or they might merely be sitting at the next table in the inn and strike up a casual conversation.

Finally, if you want to make things really interesting for the party, grab a d20 and roll on Hooks, Complications and Opportunities. This is a mixed bag of events that will involve them, like it or not, in the ongoing life of the town. Poisoned wells, invasions of rats or enemies, offers of money and strange events... about the only thing missing is an earthquake!

The party will never forget their next visit to town!
Categories: Game Theory & Design

Game developer layoffs were up in 2013, according to new survey

Social/Online Games - Gamasutra - 24 July 2014 - 8:35am

While previous years have seen a downward trend in layoffs, 2013 saw a slight increase, according to Gamasutra's Game Developer Salary Survey 2014. ...

Categories: Game Theory & Design

The business behind Open Source

Dries Buytaert - 24 July 2014 - 7:38am
Topic: DrupalAcquiaBusinessThe future

A few days ago, I sat down with Quentin Hardy of The New York Times to talk Open Source. We spoke mostly about the Drupal ecosystem and how Acquia makes money. As someone who spent almost his entire career in Open Source, I'm a firm believer in the fact that you can build a high-growth, high-margin business and help the community flourish. It's not an either-or proposition, and Acquia and Drupal are proof of that.

Rather than an utopian alternate reality as Quentin outlines, I believe Open Source is both a better way to build software, and a good foundation for an ecosystem of for-profit companies. Open Source software itself is very successful, and is capable of running some of the most complex enterprise systems. But failure to commercialize Open Source doesn't necessarily make it bad.

I mentioned to Quentin that I thought Open Source was Darwinian; a proprietary software company can't afford to experiment with creating 10 different implementations of an online photo album, only to pick the best one. In Open Source we can, and do. We often have competing implementations and eventually the best implementation(s) will win. One could say that Open Source is a more "wasteful" way of software development. In a pure capitalist read of On the Origin of Species, there is only one winner, but business and Darwin's theory itself is far more complex. Beyond "only the strongest survive", Darwin tells a story of interconnectedness, or the way an ecosystem can dictate how an entire species chooses to adapt.

While it's true that the Open Source "business model" has produced few large businesses (Red Hat being one notable example), we're also evolving the different Open Source business models. In the case of Acquia, we're selling a number of "as-a-service" products for Drupal, which is vastly different than just selling support like the first generation of Open Source companies did.

As a private company, Acquia doesn't disclose financial information, but I can say that we've been very busy operating a high-growth business. Acquia is North America's fastest growing private company on the Deloitte Fast 500 list. Our Q1 2014 bookings increased 55 percent year-over-year, and the majority of that is recurring subscription revenue. We've experienced 21 consecutive quarters of revenue growth, with no signs of slowing down. Acquia's business model has been both disruptive and transformative in our industry. Other Open Source companies like Hortonworks, Cloudera and MongoDB seem to be building thriving businesses too.

Society is undergoing tremendous change right now -- the sharing and collaboration practices of the internet are extending to transportation (Uber), hotels (Airbnb), financing (Kickstarter, LendingClub) and music services (Spotify). The rise of the collaborative economy, of which the Open Source community is a part of, should be a powerful message for the business community. It is the established, proprietary vendors whose business models are at risk, and not the other way around.

Hundreds of other companies, including several venture backed startups, have been born out of the Drupal community. Like Acquia, they have grown their businesses while supporting the ecosystem from which they came. That is more than a feel-good story, it's just good business.

Categories: Drupal

Dries Buytaert: The business behind Open Source

Planet Drupal - 24 July 2014 - 7:38am
Topic: DrupalAcquiaBusinessThe future

A few days ago, I sat down with Quentin Hardy of The New York Times to talk Open Source. We spoke mostly about the Drupal ecosystem and how Acquia makes money. As someone who spent almost his entire career in Open Source, I'm a firm believer in the fact that you can build a high-growth, high-margin business and help the community flourish. It's not an either-or proposition, and Acquia and Drupal are proof of that.

Rather than an utopian alternate reality as Quentin outlines, I believe Open Source is both a better way to build software, and a good foundation for an ecosystem of for-profit companies. Open Source software itself is very successful, and is capable of running some of the most complex enterprise systems. But failure to commercialize Open Source doesn't necessarily make it bad.

I mentioned to Quentin that I thought Open Source was Darwinian; a proprietary software company can't afford to experiment with creating 10 different implementations of an online photo album, only to pick the best one. In Open Source we can, and do. We often have competing implementations and eventually the best implementation(s) will win. One could say that Open Source is a more "wasteful" way of software development. In a pure capitalist read of On the Origin of Species, there is only one winner, but business and Darwin's theory itself is far more complex. Beyond "only the strongest survive", Darwin tells a story of interconnectedness, or the way an ecosystem can dictate how an entire species chooses to adapt.

While it's true that the Open Source "business model" has produced few large businesses (Red Hat being one notable example), we're also evolving the different Open Source business models. In the case of Acquia, we're selling a number of "as-a-service" products for Drupal, which is vastly different than just selling support like the first generation of Open Source companies did.

As a private company, Acquia doesn't disclose financial information, but I can say that we've been very busy operating a high-growth business. Acquia is North America's fastest growing private company on the Deloitte Fast 500 list. Our Q1 2014 bookings increased 55 percent year-over-year, and the majority of that is recurring subscription revenue. We've experienced 21 consecutive quarters of revenue growth, with no signs of slowing down. Acquia's business model has been both disruptive and transformative in our industry. Other Open Source companies like Hortonworks, Cloudera and MongoDB seem to be building thriving businesses too.

Society is undergoing tremendous change right now -- the sharing and collaboration practices of the internet are extending to transportation (Uber), hotels (Airbnb), financing (Kickstarter, LendingClub) and music services (Spotify). The rise of the collaborative economy, of which the Open Source community is a part of, should be a powerful message for the business community. It are the established, proprietary vendors whose business models are at risk, and not the other way around.

Hundreds of other companies, including several venture backed startups, have been born out of the Drupal community. Like Acquia, they have grown their businesses while supporting the ecosystem from which they came. That is more than a feel-good story, it's just good business.

Categories: Drupal

Valiant Universe: The Roleplaying Game

New RPG Product Reviews - 24 July 2014 - 5:47am
Publisher: Catalyst Game Labs
Rating: 5
Originally posted at: http://diehardgamefan.com/2014/07/24/tabletop-review-valiant-universe-the-roleplaying-game/

Well, it’s finally here. After four Quick Start Rules sets and a Free RPG Day 2014 release, the final version of Valiant Universe: The Roleplaying Game is finally available to all…in PDF form anyway. You’ll have to wait a few more months for the physical copy. I have to tell you I am more than a LITTLE tempted by that Red Leather X-O Manowar version.

If this is the first time you are hearing about the Valiant Universe RPG, then welcome! Yes, much like how Green Ronin has the DC Universe license and Evil Hat has the Atomic Robo license, Catalyst Game Labs has added Valiant’s cast of characters to its RPG collection. No you won’t be seeing a crossover with Battletech or Shadowrun any time soon, but you finally have the chance to play as all your favorite Valiant Universe characters like Shadowman, Ninjak, Sting (Not Steve Borden), Livewire and more. Even better, the system is extremely rules-lite which makes it very easy to learn. The Cue System, or the engine that powers Valiant Universe RPG is a huge paradigm shift for a CGL game. Usually their products are extremely mechanics heavy, with all sorts of little rules for everything. Not the Cue System. This really feels designed for newer or casual gamers, which makes sense as this will be the first tabletop RPG for a lot of Valiant fans. If anything the system is kind of a mix of Cortex, Savage Worlds and the old Marvel RPG from TSR that first made me fall in love with gaming all those years ago. Honestly, the system will probably be a bit of culture shock to CGL’s longtime fans since it’s so streamlined, but for a super hero oriented game, the Cue System is a great choice as it focuses more on imagination and co-operative storytelling than letting the dice do all the work.

Now, a couple quick notes. First, the game is not up to date with current Valiant continuity. This is because new issues come out every month and games take a LOOOOOONG time to make. So characters like Rai, Dr. Silk or the antagonists from Armor Hunters are not in here. You also won’t see recent story developments so Flamingo is still alive, Monica Jim isn’t a member of the Renegades, and so on. It’s also worth noting for older gamers like myself that this only covers the current Valiant universe. There is no mention of the original Jim Shooter or Akklaim versions that came before it, so if you were hoping to see stats for Magnus, Dr. Solar or Turok….nope. That’s not going to happen for a whole bunch of reasons. On this particular note it also is important to note that the writers of the Valiant Universe RPG only have read the current Valiant Universe and the stat blocks for characters reflect what they have seen and not necessarily what some long-time fans know these characters are capable of. So yes, Master Darque is extremely underpowered in his character sheet and is lacking the ability to create undead creatures or summon demons. Things like this will probably annoy the more anal-rententive fans of the current universe or people like myself who own a lot of old trades/issue runs from the original Valiant era, but it shouldn’t. It’s a game after all and if you can’t wait for new stat blocks for these characters to be released, you can always tweak them to your own liking. House rules and all that rot. The point I’m trying to make is that Valiant Universe: the Roleplaying Game is written by readers of the new universe FOR readers of the new universe and I think that was the smart way to go. It prevents references to characters who have yet to appear in the current Valiant continuity and probably never will, like Mothergod, The Visitor or Nettie. Maybe someday we’ll get a look at “Classic Valiant” as a supplement (I’ll write it up!), but for now the focus is purely o the current version of Valiant’s offerings and that’s the way I like it.

So, remember how earlier I mentioned how the Valiant Universe RPG is extremely rules lite? Well, out of the 210 pages in this PDF, only twenty pages are devoted to rules. I can’t think of any other major release that has that little in the way of rules! This is both a good thing and a bad thing. The good is that this makes the rules easy to learn and memorize, but the bad side of it is that things can be a little too vague for gamers used to a lot of structure and mechanics, like Pathfinder or Dungeons and Dragons. So what else is in the book? Well, there are thirteen pages devoted to character creation. Yes, the character making rules are almost as long as the complete mechanics for the game. Now that’s different. This is mainly because character creation is pretty free form. We’ll take a look at that later. The bulk of the Valiant Universe RPG is about the comic continuity itself. Eighteen pages about the core nine comics, fourteen pages on various organizations and secret societies and a whopping EIGHTY-EIGHT pages devoted to Valiant characters. There are roughly three dozen major characters listed here, along with forty eight minor characters or NPCs to throw into your homebrew games. That’s pretty amazing. I can’t think of too many super hero RPGs that give you that many characters right off the bat. All the major characters right now except Rai, Ax, Dr. Silk and the Armor Hunters are here. Again, you might quibble on the stats. Faith probably should have a d4 or d6 in Might and Action instead of d8s and Archer is missing his ability to duplicate any super power or skill, but what’s here is pretty good, if not entirely accurate. Again tweak things to fit your own vision of the Valiant Universe. It’s your game after all.

So let’s talk rules. To be honest, not much has changed since I first reviewed the quick start version of the rules back in May. Each player takes turn acting as the Lead Narratior, which is the game’s equivalent of the Dungeon Master, Storyteller, Keeper or whatever you like to call the person running the show. This allows everyone a chance to both play AND direct. I like the idea very much. Of course, there are some people that like RPGs that aren’t very good at running games and some who aren’t good at playing characters, so you don’t have to do the regular switching of the Lead Narrator role if you are more comfortable using the standard way of doing things.

Characters have five stats: Might (Physical Build), Intellect, Charisma (Personality and force of will), Action (combat) and Luck. Each stat except for Luck has a die attached to it: d4, d6, d8, d10 or a d12. The bigger the die, the more powerful the character is, the better they are in that field. Powers are run the same way. Luck is unusual as it is a random number between 1 and 12. There is no intentional correlation with the Luck number and a character’s power level. When generating a new character, you are told to just pick a number and slap it in. Luck comes into play whenever you roll a die. If your Luck number comes up on a roll, BAM – instant success even if you would otherwise fail. Now the clever min/max gamer will realize something that others won’t. The LOWER your luck number, the more likely you are to actually roll it. Eternal Warrior has a Luck of 10. That means whenever he rolls a 10 on a die, it’s an automatic success. Let’s look at his stats. Gilad has a d10 Might, a d8 Intellect, a d6 Charisma and a d10 Action. Now since his luck is 10, he can never get a Luck success on his Intellect or Charsima. Those dice don’t go up to 10! Your best bet with Luck is to have it between numbers 1-4 as it shows up on any die, thus maximizing your chance for it to occur. However, that is MIN/MAX’ing, which I tend to frown upon. Plus, there is something to be said in a character who doesn’t need luck or is generally unlucky. So while a Luck from 1-4 is best for rolling, it might not be best for ROLE-PLAYING, am I right?

Making rolls is pretty easy. When a character needs to take an action they roll a D12 + the appropriate die on their character sheet. So if you are trying to be stealthy with Ninjak, you’d roll your standard D12 + his d10 in Adaptive Camouflage and then add the results together. Meanwhile the Lead Narrator would roll a d20. Whoever gets the highest wins the challenge. Now it’s not always that simple. There are occasional modifiers to the rolls and some powers might take precedence over a stat die. There are times where you can even roll both a power AND a stat die with the d12 and then you drop the highest, drop the lowest or keep them both! It all just depends. D12+ appropriate die vs. d20 is the universal equation for the Cue System though and it’s extremely intuitive.

There are rules for weapons, vehicles, combat in vehicles, mind control, breathing, being in space and other things that you’ll want for comic book style battles or situations. One thing that is notably missing are hard and fast rules for death. This is on purpose because 1) unlike other comics book universes with a revolving door policy on death, Valiant has been and always will be a place with only permadeath. Now that isn’t to say there isn’t necromancy or ghosts, otherwise we wouldn’t have characters like Dr. Mirage or Sandria, but when you are dead, you are DEAD here in the Valiant-verse. Because the game wants to keep that intact, death in tabletop Valiant only comes about when the Lead Narrator and players feel it is appropriate. Say a heroic sacrifice or it really fits the story. As such you’ll notice when a character loses all armor and health in the game, they are only Knocked Out, Pokémon style. I think that is a good idea, especially since you can’t raise the dead in some fashion here unless you are Master Darque and even then, it’s a mockery of life, not a second chance at things. I like this idea on many levels. This allows the story to come first and the dice to come second, which is how things should be. It makes death more interesting and meaningful when it happens. It also makes the group more co-operative because everyone has a say, not just a bad or jerky LN. This is just one of the many ways the Cue System and the Valiant Universe RPG really focuses on being a storytelling and role-playing game rather than a roll-playing dice fest. Some might not like it while other will love it. I’m definitely in the latter camp.

Let’s talk character creation. Better yet, let’s make one together! I’m going to make a classic Valiant character that might actually have a chance of showing up at some point in the current universe so everyone wins with this example. It’s a Bionisaur, one of the cybernetic dinos from the original Unity that shows up in the Valiant take on Turok: Dinosaur Hunter. I mean, I’m pretty sure Archer and Armstrong and/or Quantum and Woody are going to run into one of these sooner rather than later, right? So we have our concept. Let’s assign stat dice. You get a d6 two d8s and a d10 to make your character. I’ll give the Bionisaur a d10 in Might, a d8 in Action, a d8 in Intellect and a d6 in Charisma. I then have the option of turning my d10 into a d12 at the expense of turning my d6 into a d4. I am fine with this. Charisma is a dump stat for an evil cyborg tyrannosaur from beyond space-time after all. So our final build looks like this: Might: d12 Intellect: d8, Charisma: D4, Action: d8. We have a d12 in Might, so our health is as set on the character sheet – no changes needed. We pick our Luck and I’m going to choose 6 because it is my favorite number and because Bionisaur doesn’t need Luck on his Charisma roll. It gives him a really workable flaw to offset his sheet power.

Next comes powers. We have four levels for powers, with each one giving us more points to spend and a cap of powers. Now Bionisaurs are generally NPC cannon fodder for Valiant heroes, but this one we are making is special and a playable character. I’m going to choose the second tier of powers called “Hero,” which gives me 30 points to spend and a maximum of 3 powers. There are no set powers in the game. You get to use your imagination, but you also have to be pretty clear about what they do. The first power I will take is “Accelerated Healing” which comes from the cybernetic enhancements to the dinosaur. I’ll choose a d10 and the option to “discard lowest” as my option for this power, which means I roll the d12, the Stat Die, the Power Die and discard the lowest of the two non-core d12 rolls. I check the chart and this costs 10 points. So I have 20 left to spend. I next power will be “Tracking” based off of the Bionisaur’s keen sense of smell and its cyber gizmo doo-dads. I’m going to choose a d6 here and also “Keep Both” which will let me roll both the stat and the power die and then add each of them to the core d12 roll. This costs me 9 points so I have 11 left to spend. For Bionisaur’s last power I’m going to take “Protection Against Mental Manipulation.” Because he has a reptilian brain enhanced by computers I’m going to say powers like mind control, illusion, telepathy and the like have trouble with the alien nature of his thought process. This will also help shore up his Charisma based rolls in certain areas. I’m going to do a d6 and “Keep Both” again which costs another nine points. That leaves me with two points left over that I can’t do anything with. Which is fine, as the three powers we do have make him a good defensive villain that can be used as a PC or a midboss antagonist.

After that we get armor with is used (and depeleted) before Health starts to go down. Each character gets a minimum of 10 along with (Might+Action)/2 more points. In this case that’s an extra ten for a total of 20 armor points on Bionisaur. After that you pick your weapons (in this case big sharp teeth, tail smash and stepping on soft squishy mammals,) and you do the personality side of things. That’s it. It took us a page in Microsoft Word to give an example of character creation, which shows you how quick and easy this whole process is.

The book then closes with almost forty pages of adventure seeds, or Story Briefs, as is the vernacular here. These are divided into nine categories – eight for specific books and their characters like X-O Manowar or Eternal Warrior and then one four part story for immortal or time travelling characters like Ivar and Armstrong which will span literally thousands of years across the Valiant continuity. Some stores adhere closely to plots or story arcs from the comics, while some are completely original pieces. The sheer amount of briefs included means you won’t have to create your own homebrew adventures for a very long time. Of course, briefs are well, brief, so the Narrating team will have to flesh things out to make a full story out of them. This is how adventures for Valiant Universe RPG are done though due to the group effort of storytelling and the emphasis towards “on the fly” imaginative thinking. This is neither bad nor good – it simply is. I feel this affords new gamers a lot more flexibility than the on-rails format of most published adventures and it allows the group to think for themselves and become better GMs for it. At the same time, newcomers MAY want a little more structure and handholding with adventures, which isn’t something the current Story Briefs system offers.

Overall, I think Valiant Universe: the Roleplaying Game is fantastic. My favorite comic book universe is finally melded with my favorite hobby and the result is spectacular. The Cue System is a wonderful way to learn how to tabletop roleplay as the rules are simple and it really focuses on story telling over dice rolling. You have a great co-operative atmosphere that prevents the GM vs PC situations that develop with some other RPGs. Valiant Universe RPG is a very fun and easy to use system. The fact the PDF version of the game is only ten bucks makes this must buy for ANY superhero fan, even if you have little to no exposure with the Valiant Universe. Those same newcomers to Valiant might want to hold on the regular or deluxe version of the physical game as that money would be better spent purchasing a few trades (Start with Archer and Armstrong then pick up either Quantum and Woody or X-O Manowar). After all, you want to know you like the characters before you spend 30-50 bucks on a game you might not play. That’s why getting the PDF version first is the smart bet. At worst you’re only out ten dollars and even if you don’t like the game system, you might want the characters intriguing and want to learn more about them. At best, you’ve got a new gaming system to love and some new comic series to pick up! Again, with a ten buck price tag, any RPG or comic book fan should grab this without hesitation as the game is as well done as it is affordable. Valiant Universe RPG won’t be replacing TSR’s Marvel game or Mayfair’s DC Universe as my top two super hero RPGs, but I can safely say this one of the best new games of the year, Between Valiant Universe: The Roleplaying Game, Atomic Robo and the new version of ICONS, this is one of the best years for super hero RPGs in a very long time.
Categories: Game Theory & Design

drunken monkey: Updating the Search API to D8 – Part 3: Creating your own service

Planet Drupal - 24 July 2014 - 5:28am

Even though there was somewhat of a delay since my last post in this series, it seems no-one else has really covered any of the advanced use cases of Drupal 8 in tutorials yet. So, here is the next installment in my series. I initially wanted to cover creating a new plugin type, but since that already requires creating a new servive, I thought I'd cover that smaller part first and then move on to plugin types in the next post.
I realize that now already a lot more people have started on their Drupal 8 modules, but perhaps this will make this series all the more useful.

Services in Drupal 8

First, a short overview of what a service even is. Basically it is a component (represented as a class) providing a certain, limited range of functionality. The database is a service, the entity manager (which is what you now use for loading entities) is a service, translation, configuration – everything handled by services. Getting the current user – also a service now, ridding us of the highly unclean global variable.
In general, a lot of what was previously a file in includes/ containing some functions with a common prefix is now a service (or split into multiple services).

The upsides of this is that the implementation and logic is cleanly bundled and properly encapsulated, that all these components can easily be switched out by contrib or later core updates, and that these systems can also be very well tested with unit tests. Even more, since services can be used with dependency injection, it also makes it much easier to test all other classes that use any of these services (if they can use dependency injection and do it properly).

(For reference, here is the official documentation on services.)

Dependency injection

This has been covered already in a lot of other blog posts, probably since it is both a rather central concept in Drupal 8, and a bit complicated when you first encounter it. However, before using it, I should still at least skim over the topic. Feel free to skip to the next heading if you feel you already know what dependency injection is and how it roughly works in Drupal 8.

Dependency injection is a programming technique where a class with external dependencies (e.g., a mechanism for translating) explicitly defines these dependencies (in some form) and makes the class which constructs it responsible for supplying those dependencies. That way, the class itself can be self-contained and doesn't need to know about where it can get those dependencies, or use any global functions or anything to achieve that.

Consider for example the following class:

<?php
class ExampleClass {

  public function getDefinition() {
    return array(
      'label' => t('example class'),
      'type' => 'foo',
    );
  }

}
?>

For translating the definition label, this explicitly uses the global t() function. Now, what's bad about this I, hear you ask, it worked well enough in Drupal 7, right?
The problem is that it becomes almost impossible to properly unit-test that method without bootstrapping Drupal to the point where the t() function becomes available and functional. It's also more or less impossible to switch out Drupal's translation mechanism without hacking core, since there is no way to redirect the call to t().

But if translation is done by a class with a defined interface (in other words, a service), it 's possible to do this much cleaner:

<?php
class ExampleClass {

  public function __construct(TranslationServiceInterface $translation) {
    $this->translation = $translation;
  }

  public function getDefinition() {
    return array(
      'label' => $this->translation->translate('example class'),
      'type' => 'foo',
    );
  }

}
?>

Then our example class just has to make it easily possible for code that wants to instantiate it to know how to pass its dependencies to it. In Drupal, there are two ways to do this, depending on what you are creating:

  • Services, which themselves use dependency injection to get their dependencies (as you will see in a minute) have a definition in a YAML file that exactly states which services need to be passed to the service's constructor.
  • Almost anything else (I think) uses a static create() method which just receives a container of all available services and is then responsible for passing the correct ones to the constructor.

In either case, the idea is that subclasses/replacements of ExampleClass can easily use other dependencies without any changes being necessary to code elsewhere instantiating the class.

Creating a custom service

So, when would you want to create your own service in a module? Generally, the .module file should more or less only contain hook implementations now, any general helper functions for the module should live in classes (so they can be easily grouped by functionality, and the code can be lazy-loaded when needed). The decision to make that class into a service then depends on the following questions:

  • Is there any possibility someone would want to swap out the implementation of the class?
  • Do you want to unit-test the class?
  • Relatedly, do you want dependency injection in the class?

I'm not completely sure myself about how to make these decisions, though. We're still thinking about what should and shouldn't be a service in the Search API, currently there is (apart from the ones for plugins) only one service there:

The "Server task manager" service

The "server tasks" system, which already existed in D7, basically just ensures that when any operations on a server (e.g., removing or adding an index, deleting items, …) fails for some reason (e.g., Solr is temporarily unreachable) it is regularly retried to always ensure a consistent server state. While in D7 the system consisted of just a few functions, in D8 it was decided to encapsulate the functionality in a dedicated service, the "Server task manager".

Defining an interface and a class for the service

The first thing you need, so the service can be properly swapped out later, is an interface specifying exactly what the service should be able to do. This completely depends on your use case for the service, nothing to keep in mind here (and also no special namespace or anything). In our case, for server tasks:

<?php
namespace Drupal\search_api\Task;

interface ServerTaskManagerInterface {

  public function execute(ServerInterface $server = NULL);

  public function add(ServerInterface $server, $type, IndexInterface $index = NULL, $data = NULL);

  public function delete(array $ids = NULL, ServerInterface $server = NULL, $index = NULL);

}
?>

(Of course, proper PhpDocs are essential here, I just skipped them for brevity's sake.)

Then, just create a class implementing the interface. Again, namespace and everything else is completely up to you. In the Search API, we opted to put interface and class (they usually should be in the same namespace) into the namespace \Drupal\search_api\Task. See here for their complete code.
For this post, the only relevant part of the class code is the constructor (the rest just implements the interface's methods):

<?php
class ServerTaskManager implements ServerTaskManagerInterface {

  public function __construct(Connection $database, EntityManagerInterface $entity_manager) {
    $this->database = $database;
    $this->entity_manager = $entity_manager;
  }

}
?>

As you can see, we require the database connection and the entity manager as dependencies, and just included them in the constructor. We then save them to properties to be able to use them later in the other methods.

Now we just need to tell Drupal about our service and its dependencies.

The services.yml file

As mentioned earlier, services need a YAML definition to work, where they also specify their dependencies. For this, each module can have a MODULE.services.yml file listing services it wants to publish.

In our case, search_api.services.yml looks like this (with the plugin services removed):

services:
  search_api.server_task_manager:
    class: Drupal\search_api\Task\ServerTaskManager
    arguments: ['@database', '@entity.manager']

As you see, it's pretty simple: we assign some ID for the service (search_api.server_task_manager – properly namespaced by having the module name as the first part), specify which class the service uses by default (which, like the other definition keys, can then be altered by other modules) and specify the arguments for its constructor (i.e., its dependencies). database and entity.manager in this example are just IDs of other services defined elsewhere (in Drupal core's core.services.yml, in this case).

There are more definition keys available here, and also more features that services support, but that's more or less the gist of it. Once you have its definition in the MODULE.services.yml file, you are ready to use your new service.

Using a service

You already know one way of using a service: you can specify it as an argument for another service (or any other dependency injection-enabled component). But what if you want to use it in a hook, or any other place where dependency injection is not available (like entities, annoyingly)?

You simply do this:

<?php
/** @var \Drupal\search_api\Task\ServerTaskManagerInterface $server_task_manager */
$server_task_manager = \Drupal::service('search_api.server_task_manager');
$server_task_manager->execute();
?>

That's it, now all our code needing server tasks functionality benefits from dependency injection and all the other Drupal 8 service goodness.

Categories: Drupal
Syndicate content


Google+
about seo