Newsfeeds

Block Blacklist

New Drupal Modules - 31 December 2018 - 10:53am

Remove unnecessary blocks from the block list for better system performance.

Drupal provides an extensive list of blocks, many of which you may never use anywhere, and others you won't use in Layout Builder. Improve UX and system performance by removing blocks that won't be used on your site.

Categories: Drupal

Token Headers

New Drupal Modules - 31 December 2018 - 9:45am

Create a new token under site that allows one to grab a http header.

Example:
[site:header:HTTP_TRUE_CLIENT_IP]

Categories: Drupal

Jeff Geerling's Blog: Make composer operations with Drupal way faster and easier on RAM

Planet Drupal - 31 December 2018 - 7:42am

tl;dr: Run composer require zaporylie/composer-drupal-optimizations:^1.0 in your Drupal codebase to halve Composer's RAM usage and make operations like require and update 3-4x faster.

A few weeks ago, I noticed Drupal VM's PHP 5.6 automated test suite started failing on the step that runs composer require drupal/drush. (PSA: PHP 5.6 is officially dead. Don't use it anymore. If you're still using it, upgrade to a supported version ASAP!). This was the error message I was getting from Travis CI:

PHP Fatal error:  Allowed memory size of 2147483648 bytes exhausted (tried to allocate 32 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/RuleWatchNode.php on line 40

I ran the test suite locally, and didn't have the same issue (locally I have PHP's CLI memory limit set to -1 so it never runs out of RAM unless I do insane-crazy things.

Categories: Drupal

Geolocation ArcGIS

New Drupal Modules - 31 December 2018 - 7:21am

This module provides an integration to the Geolocation module with the ArcGIS API for Javascript.

It has a field widget, field formatter, and a views CommonMap plugin. More features will be added as time permits.

Categories: Drupal

Leveling Yourself in 2019

Gnome Stew - 31 December 2018 - 4:30am

Starting off 2019 with gaming goals in mind. Personal, creative, and community building goals are top of mind here as 2018 winds to a close.

One of the things I love about traditional RPGs is the concept of gaining experience and leveling up. I’ve probably spent weeks’ worth of time leveling the countless characters I’ve had during my life. I like the clarity in game of knowing that my character has advanced and has become “more” than they were at the start of the game. Outside of special occasions like graduations or awards, I don’t always take the time to reflect on and value the growth I’ve experienced in my own life.

Luckily, birthdays and new years are the culturally ingrained moments for both reflection and resolutions. I think about who I am now and who I want to become. While people do this in their normal lives related to personal or professional goals, I thought it would be worthwhile to reflect on 2018 through the lens of my gaming life and to make some resolutions for 2019 as well.

I’ve separated my reflections and resolutions into the following three categories.

Personal is about what I bring to a game, whether running or playing. It’s about being there, being present, and being an asset to the group through great role play, vulnerability, and advocating for myself to shape the experience I want.

Creating is about going beyond showing up to game and enjoying time with my friends. It’s about creating backstory, props, writing scenarios, or making new games altogether. Whether these creations are just for me (hello lengthy backstory), for a limited audience like a role playing partner/game group, or for publication and distribution – there are many exciting opportunities to bring more of yourself to the gaming world.

Community is about uplifting one another and building the community. It’s about being visible and present with others while sharing the love of the hobby. Building and strengthening the gaming community could mean many things from starting up a new game group to volunteering at a convention or helping moderate an online space for gamers to connect.

2018 Reflections:

Personal:

• Played my characters openly and vulnerably with my whole heart.
• Facilitated numerous convention games at a dozen conventions across North America.
• X-carded someone at a convention that was being abusive to another player.

Creating:

• Created three rules light RPGs and a LARP and playtested them with people across the country.
• Wrote for Gnome Stew (and book ended 2018 with the first and last post of the year!).
• Helped to design, write, and promote Wrath & Glory and saw it rise to the top seller on DriveThruRPG (Holy cats!).

Community:

• Continued to be an active participant in our Denver area GM community – the monthly GM Story Night put together a few years back by Camdon Wright.
• Strived to foster a safe and inclusive gaming environment with no cred checks for any participants.
• Upon request gave constructive feedback to fellow creators, game facilitators, and players to help them reflect and level up in real time.

Looking forward, I have put together my resolutions for 2019 and some of my fellow Gnomes chimed in, sharing theirs as well. I’ve divided everyone’s resolutions into the Personal, Creating, and Community categories listed above.

2019 Resolutions:

Personal:

Ang M.: My plans for the year include continuing to game as much as possible. I’ve got several cons on the horizon along with two regular groups and a handful of irregular groups.
Chuck L.: in 2019, I hope to not go more than two weeks at any time without running or playing a game. It’s easy to let life interfere, but I have to make it more of a priority.
Phil V.: I resolve to run Tales of the Flood for the people from my Tales from the Loop campaign. We are going to bring our characters and their lives into the 90’s. It was one of the best campaigns I have run, in several years. We finished off the campaign with a clean ending, but everyone was in love with their characters, so we are all excited to see them grow 10 years and go on to new mysteries.
Senda L.: In 2019 I’m hoping to get back into running more games again. I got a little burned out this year and had the luxury of sitting back, but I don’t want to get out of practice! I know I’ll run at cons but I want to run some things outside of that as well.
Wen R.: My goal is to run my first campaign in 2019. I’ve run one shots and convention games for over two years, and now’s the time to step up my game facilitation experience.

Creating:

Ang M.: My NEW resolution for the New Year is that I want to make a game. I’ve been poking at something with Chris Sniezak, but I want to put some more time and effort into that and turn it into something I can actually bring to the table. Baby steps, but you have to start walking sometime.
Senda L. and Pete P.: Working on publishing games through Kickstarter in 2019. Turning Point RPG an emotional game of life changing decisions for Senda; and Rest in Pieces, Pete’s dark comedy rpg where you play deadbeat roommates that share a “pad” with the Grim Reaper!
Wen R.: Self publish my first independent RPG and continue to contribute my voice to various RPG projects spanning interesting genres and systems.

Community:

Jen A.: organize a monthly indie RPG day at my FLGS!
Pete P.: In 2019, I’d like to take the Indie Game Developer Network to at least three new conventions and get my Games on Demand Meetup to an average of 12+ attendees
Wen R.: As a new member of the Tabletop Gaymers board I want to work on normalizing the exchange of pronouns (he/she/they) among gamers and working with conventions to offer gender neutral bathrooms like at Double Exposure conventions and PAX Unplugged.

What are some of your gaming accomplishments from 2018? How do you plan to level yourself up as a gamer in 2019? Do you have a goal for each of the three categories? Add your hearty accomplishments and spicy resolutions to the Stew by commenting below.

From our Gnome to yours; best wishes for a healthy, happy, and game filled 2019!

Categories: Game Theory & Design

AddWeb Solution: 2018 - A ‘Year’ full of Smiles, Stronger Bonds & Success!

Planet Drupal - 31 December 2018 - 4:03am

Past is a place, thoroughly familiar and yet the experience of revisiting it varies drastically. Revisiting some leaves you with happy nostalgia, some with innocent laughter, some with a moment of pride, and some, a prick of sadness or regret. But yet we choose to visit this place called ‘past’ through our memory, time and again. In fact, we recently did so by revisiting the year 2018, like many others, that is about to end in just a handful of hours. And fortunately, it was filled with a host of happy moments to rejoice and relish, topped by several breakthrough changes and chances we’ve embraced with all love & warmth.


The year 2018 has been the most eventful year for the AddWeb-traveling, counting right from the moment of moving into altogether new office space to officially being a supporting partner of Drupal.org and everything in between. It’s a journey no less than a cinematic experience, with all the drama, emotions and heroic ending - full of catharsis. Let us take you through this marvelous journey, as experienced by AddWeb-ians.

 

Welcoming 2018 - The Journey Begins, Quite Literally!

, ,

The hobby of traveling might be a trending one today. But we refrain from polluting our passion for traveling, by putting it under the category of ‘trending’. We’re so much about traveling that it has become just a part of our existence, now. Apart from all the traveling we individually do, throughout the year, we also make sure to plan at least one with our AddWeb family. And this time, we literally began our journey of 2018 by going on a trip to Jaisalmer - amidst sand dunes and folk tunes, starry nights and tipsy sites; quite literally!  

 

AddWeb Family Celebrate Emotions!

, ,

We promised you a journey with emotions at the backdrop. So, here we share a set of different emotions we shared and celebrated across the year.

  • Celebrating the born-day of our dear AddWebians with cakes, candles, and compassion

  • Celebrating the unity in diversity of the Republic of India with the strength of tri-color dress code and decorations

  • Celebrating the diverseness of our being with colors during the festival of Holi

  • Celebrating the feminine force on Women’s day by showing them the feeling of gratitude with ‘sweet’ presents

  • Celebrating the feeling of freedom on Independence day by painting our mood with patriotism

  • Celebrating the oneness of AddWeb family with an electrifying and energetic party - The AddWeb Annual Event at Olives Restaurant

  • Celebrating the almighty of auspiciousness - the cherubic Ganesha with an immense amount of faith and festive decorations on the occasion of Ganesh Chaturthi

  • Celebrating the festive mood of Diwali with DIY decorations, dazzling traditional dresses, delicious Diwali lunch, and gifts!

  • Celebrating the Christian festival of Christmas with a dress code, gifts, and our own two self-proclaimed Santas!

Level up, Metaphorically & Literally!

, ,

Well, it wouldn’t be an exaggeration if we said we literally levelled-up this year. Because this very year we moved into a new & bigger office space that is a few floors up from the old one. And we guess, this clearly states that we grew bigger in terms of our employee strength too, or as we like to address it - our AddWeb family grew even bigger! Yes, we started off from 50+ in January 2018 and today, by the end of December 2018, we’re almost a family of 100.

 

Apart from the above two, there are a few other spheres too, where we levelled-up. Like we launched a brand new website of ours, a couple of months before shifting into a brand new office space. Also, since we’re already following the international method of working, we also adopted the international standards of work hours by bringing the ‘5-days working’ policy into account. We also initiated sponsoring quarterly team lunches for our AddWeb family, who after travel bonds the most over food!  

 

Giving Back to the Society

, ,

The universe thrives and survives on the rule of ‘give & take’ and we firmly understand the importance of the same. Hence, we do believe in giving back to the society that has given us so much to relish upon. Maybe, that is why apart from doing things for the lesser privileged on a personal ground, we also choose to do a small act of charity on an official ground. We deliberately choose to publically share it, in order to inspire others to do the same.


This year too, we gave back to society by visiting a nearby government school. We spent some really good times with the happy and giving souls there and donated some stationary products, cookies, crayons, textbooks, et all for those kids. Believe us, it was one of the most wonderful time we had throughout the entire year. Something, that’s going to stay with us for a long, long time!

 

The AddWeb-Drupal Association, Elevated!

, ,

Our association with Drupal is as old as our existence. In fact, we as individual team members have been Drupal-ing even before the inception of AddWeb. And this year, we took a step ahead by giving the monetary contribution to the ‘Promote Drupal Initiative’ by Drupal.org. How could we not contribute, when it was about strengthening the community to a higher level.


And our support & passion for Drupal doesn’t end there. We also became the official ‘Supporting Partner’ of Drupal, which ultimately helped us in extending and strengthening our association with Drupal. We also made another contribution towards Drupal by organizing a ‘Drupal Meetup’ in our city and had multiple interesting knowledge-sharing sessions with the local community members.

And of course, how could we not attend the international Drupal events, worldwide! This year we attended the Standford Drupal Camp, DrupalCon Nashville, and Drupal Europe event that was voluntarily organised by the Drupal community members. We also attended our first ever Laravel event in Europe by the name of LaraCon EU.

 

AEDU Hits the Market, Successfully!

, ,

The joy of launching your very own dream-project is no less than winning an Oscar. Indeed! The year 2018 gave us one such moment when we launched our very own school management software - AEDU in the market. And to our surprise, it got adopted by more than 200+ schools across the nation with all love and warmth. Not just that, we also launched the Parent and Driver’s App, for the same and they also got an equal and elaborative response as the software did!

 

Community, Coding, Contributions & Client-Satisfaction

, ,

Last but not least! Our core passion for coding paved a path full of new endeavors and wealthy projects. Let us share these moments of pride and high spirits, from this year, with you before we all enter into a new year with goals to achieve and moments to live!

  • On one hand, when we introduced our very own Research Wing for Artificial Intelligence(AI); on the other hand, we also spent 1000+ hours on contributing towards the open-source community

  • We adapted the Intranet & Instant Communication Tool by the name of ‘Rocket.chat’, along with developing & launching our very own ‘AddWeb Ionic Chat

  • Witnessing the boom of ReactJS and ASP.Net, we also adopted them, for we love learning and excelling at new technologies

  • We automated the DevOps process that we follow with the use of Jenkins and Ansible, resulting in being more productive and futuristic!

  • And the most momentous achievement of the year - We successfully completed 100+ projects, worldwide along with one of the biggest project of the year, named ‘AnyQuip

 

With a wish that we haven’t bored with our smiles, stronger bonds and success, we again wish each one of you reading this a #HappyNewYear and blissful moments, manifold!

 

Categories: Drupal

Dyna Tree

New Drupal Modules - 31 December 2018 - 3:06am

By using Dyna Tree library Dyna Tree module provides Tree view of Taxonomies.
Very useful in managing Taxonomies if you have large number of Terms in a Vocabulary.

Categories: Drupal

Video Game Deep Cuts: End Of The Year Extravaganza

Social/Online Games - Gamasutra - 30 December 2018 - 7:56pm

This week's video game article & video highlights include another gigantic chunk of 'end of year' charts, discourses, thoughts and ruminations. ...

Categories: Game Theory & Design

Taiwan Address Field

New Drupal Modules - 30 December 2018 - 7:27pm

This is a field which provided the Address function in Taiwan. Integrate with jQuery-TWzipcode Plugin. it's light and easy to use.

Categories: Drupal

Dries Buytaert: Soft-launching your new Drupal theme

Planet Drupal - 30 December 2018 - 8:22am

Have you ever wanted to preview your new Drupal theme in a production environment without making it the default yet?

I did when I was working on my redesign of dri.es earlier in the year. I wanted the ability to add ?preview to the end of any URL on dri.es and have that URL render in my upcoming theme.

It allowed me to easily share my new design with a few friends and ask for their feedback. I would send them a quick message like this: Hi Matt, check out an early preview of my site's new design: https://dri.es?preview. Please let me know what you think!.

Because I use Drupal for my site, I created a custom Drupal 8 module to add this functionality. The module is probably too simple to share on Drupal.org so I figured I'd start with sharing it on my blog instead.

Like all Drupal modules, my module has a *.info.yml file. The purpose of the *.info.yml file is to let Drupal know about the existence of my module and to share some basic information about the module. My theme preview module is called Previewer so it has a *.info.yml file called previewer.info.yml:

name: Previewer description: Allows previewing of a theme by adding '?preview' to URLs. package: Custom type: module core: 8.x

The module has only one PHP class, Previewer, that implements Drupal's ThemeNegotiatorInterface interface:

<?php namespace Drupal\previewer\Theme; use Drupal\Core\Routing\RouteMatchInterface; use Drupal\Core\Theme\ThemeNegotiatorInterface; class Previewer implements ThemeNegotiatorInterface { /** * The function applies() determines if it wants to set the * active theme. If the ?preview query string is part of the * URL, return TRUE to denote that Previewer wants to set * the theme. determineActiveTheme() will be called to * ask for the theme's name. */ public function applies(RouteMatchInterface $route_match) { if (isset($_GET['preview'])) { return TRUE; } return FALSE; } /** * The function determineActiveTheme() is responsible * for returning the name of the theme that is to be used. */ public function determineActiveTheme(RouteMatchInterface $route_match) { return 'dries'; // Yes, the name of my theme is 'dries'. } } ?>

The function applies() checks if '?preview' is set as part of the current URL. If so, applies() returns TRUE to tell Drupal that it would like to specify what theme to use. If Previewer is allowed to specify the theme, its determineActiveTheme() function will be called. determineActiveTheme() returns the name of the theme. Drupal uses the specified theme to render the current page request.

Next, we have to tell Drupal about our theme negotiator class Previewer. This is done by registering it a service in previewer.services.yml:

services: theme.negotiator.previewer: class: Drupal\previewer\Theme\Previewer tags: - { name: theme_negotiator, priority: 10 }

previewer.services.yml tells Drupal to call our class Drupal\previewer\Theme\Previewer when it has to decide what theme to load.

A service is a common concept in Drupal (inherited from Symfony). Many of Drupal's features are separated into a service. Each service does just one job. Structuring your application around a set of independent and reusable service classes is an object-oriented programming best-practice. To some it might feel complex, but it actually promotes reusable and decoupled code.

Note that Drupal 8 adheres to PSR-4 namespaces and autoloading. This means that files must be named in specific ways and placed in specific directories in order to be recognized and loaded. Here is what my directory structure looks like:

$ tree previewer previewer ├── previewer.info.yml ├── previewer.services.yml └── src └── Theme └── Previewer.php

And that's it!

Categories: Drupal

Soft-launching your new Drupal theme

Dries Buytaert - 30 December 2018 - 8:22am

Have you ever wanted to preview your new Drupal theme in a production environment without making it the default yet?

I did when I was working on my redesign of dri.es earlier in the year. I wanted the ability to add ?preview to the end of any URL on dri.es and have that URL render in my upcoming theme.

It allowed me to easily preview my new design with a few friends and ask for their feedback. I would send them a quick message like this: Hi Matt, check out an early preview of my site's upcoming redesign: https://dri.es?preview. Please let me know what you think!.

Because I use Drupal for my site, I created a custom Drupal 8 module to add this functionality.

Like all Drupal modules, my module has a *.info.yml file. The purpose of the *.info.yml file is to let Drupal know about the existence of my module and to share some basic information about the module. My theme preview module is called Previewer so it has a *.info.yml file called previewer.info.yml:

name: Previewer description: Allows previewing of a theme by adding ?preview to URLs. package: Custom type: module core: 8.x

The module has only one PHP class, Previewer, that implements Drupal's ThemeNegotiatorInterface interface:

<?php namespace Drupal\previewer\Theme; use Drupal\Core\Routing\RouteMatchInterface; use Drupal\Core\Theme\ThemeNegotiatorInterface; class Previewer implements ThemeNegotiatorInterface { /** * The function applies() determines if it wants to set the * active theme. If the ?preview query string is part of the * URL, return TRUE to denote that Previewer wants to set * the theme. determineActiveTheme() will be called to * ask for the theme's name. */ public function applies(RouteMatchInterface $route_match) { if (isset($_GET['preview'])) { return TRUE; } return FALSE; } /** * The function determineActiveTheme() is responsible * for returning the name of the theme that is to be used. */ public function determineActiveTheme(RouteMatchInterface $route_match) { return 'dries'; // Yes, the name of my theme is 'dries'. } } ?>

The function applies() checks if ?preview is set as part of the current URL. If so, applies() returns TRUE to tell Drupal that it would like to specify what theme to use. If Previewer is allowed to specify the theme, its determineActiveTheme() function will be called. determineActiveTheme() returns the name of the theme. Drupal uses the specified theme to render the current page request.

For this to work, we have to tell Drupal about our theme negotiator class Previewer. This is done by registering it a service in previewer.services.yml:

services: theme.negotiator.previewer: class: Drupal\previewer\Theme\Previewer tags: - { name: theme_negotiator, priority: 10 }

previewer.services.yml tells Drupal to call our class Drupal\previewer\Theme\Previewer when it has to decide what theme to load.

A service is a common concept in Drupal (inherited from Symfony). Many of Drupal's features are separated into a service. Each service does just one job. Structuring your application around a set of independent and reusable service classes is an object-oriented programming best-practice. To some it might feel unnecessarily complex, but it actually promotes reusable, configurable and decoupled code.

Note that Drupal 8 adheres to PSR-4 namespaces and autoloading. This means that files must be named in specific ways and placed in specific directories in order to be recognized and loaded. Here is what my directory structure looks like:

$ tree previewer previewer ├── previewer.info.yml ├── previewer.services.yml └── src └── Theme └── Previewer.php

And that's it!

Categories: Drupal

Video Game Deep Cuts: End Of The Year Extravaganza - by Simon Carless

Gamasutra.com Blogs - 30 December 2018 - 7:46am
This week's video game article & video highlights include another gigantic chunk of 'end of year' charts, discourses, thoughts and ruminations.
Categories: Game Theory & Design

Login Notification

New Drupal Modules - 29 December 2018 - 3:25pm
INTRODUCTION

The login notification module allows site administrators to construct multiple notification messages, which will be displayed upon user login. The module utilizes the conditional plugin system to restrict what messages a user receives.

Categories: Drupal

An object at rest

Adventures in Interactive FIction - 17 May 2008 - 2:03pm

So obviously, the pendulum of progress stopped swinging on my game.  As much as I tried to prevent it, pressing obligations just wouldn’t take a back seat (nor would the burglars who, a few weeks ago, stole 90% of my wardrobe and who last week stole my monitor).  So after a string of hectic weekends and even crazier weeks, this weekend has been pretty wide open for doing whatever I want to do.  And not a moment too soon!

So after doing all the other things I try to do with my weekends, I finally loaded up the ol’ Inform 7 IDE and started working on my game.  To get me back in the swing of things, so to speak, I started reading through what I’d already written.  It was an interesting experience.

Strangely, what impressed me most was stuff I had done that I have since forgotten I learned how to do.  Silly little things, like actions I defined that actually worked, that had I tried to write them today, probably would have had me stumped for a while.  Go me!  Except, erm, I seem to have forgotten more than I’ve retained.

I also realized the importance of commenting my own code.  For instance, there’s this snippet:

A thing can be attached or unattached. A thing is usually unattached. A thing that is a part of something is attached.

The problem is, I have no idea why I put it in there – it doesn’t seem relevant to anything already in the game, so I can only imagine that I had some stroke of genius that told me I was going to need it “shortly” (I probably figured I’d be writing the code the next night).  So now, there’s that lonely little line, just waiting for its purpose.  I’m sure I’ll come across it some day; for now, I’ve stuck in a comment to remind myself to stick in a comment when I do remember.

It reminds me of all the writing I did when I was younger.  I was just bursting with creativity when I was a kid, constantly writing the first few pages of what I was sure was going to be a killer story.  And then I’d misplace the notebook or get sidetracked by something else, or do any of the million other things that my easily distracted self tends to do.  Some time later, I’d come across the notebook, read the stuff I’d written and think, “Wow, this is great stuff!  Now… where was I going with it?”  And I’d never remember, or I’d remember and re-forget.  Either way, in my mother’s attic there are piles and piles of notebooks with half-formed thoughts that teem with potential never to be fulfilled.

This situation – that of wanting to resume progress but fumbling to pick up the threads of where I left off –  has me scouring my memory for a term I read in Jack London’s Call of the Wild.  There was a part in the book where Buck’s owner (it’s late, his name has escaped me) has been challenged to some sort of competition to see if Buck can get the sled moving from a dead stop.  I seem to remember that the runners were frozen to the ground.  I thought the term was “fast break” or “break fast” or something to that effect, but diligent (does 45 seconds count as diligent?) searching has not confirmed this or provided me with the right term.  Anyway, that’s how it feels tonight – I feel as if I’m trying to heave a frozen sled free from its moorings.

The upside is, I am still pleased with what I have so far.  That’s good because it means I’m very likely to continue, rather than scrap it altogether and pretend that I’ll come up with a new idea tomorrow.  In the meantime, I’ll be looking for some SnoMelt and a trusty St. Bernard to get things moving again.

Categories:

Time enough (to write) at last…

Adventures in Interactive FIction - 14 April 2008 - 3:24pm

So I didn’t get as much coding done over the weekend as I had hoped, mainly because the telephone company *finally* installed my DSL line, which meant I was up til 5:30 Saturday am catching up on the new episodes of Lost.  That, in turn, meant that most of the weekend was spent wishing I hadn’t stayed up until such an ungodly hour, and concentration just wasn’t in the cards.

However, I did get some stuff done, which is good.  Even the tiniest bit of progress counts as momentum, which is crucial for me.  If the pendulum stops swinging, it will be very hard for me to get it moving again.

So the other day, as I was going over the blog (which really is as much a tool for me as it is a way for me to share my thoughts with others), I realized I had overlooked a very basic thing when coding the whole “automatically return the frog to the fuschia” bit…

As the code stood, if the player managed to carry the frog to another room before searching it, the frog would get magically returned to the fuschia.  This was fairly simple to resolve, in the end – I just coded it so that the game moves (and reports) the frog back to fuschia before leaving the room.  I also decided to add in a different way of getting the key out of the frog – in essence, rewarding different approaches to the same problem with success.

Which brings me to the main thrust of today’s post.  I have such exacting standards for the games I play.  I love thorough implementation.  My favorite games are those that build me a cool gameworld and let me tinker and explore, poking at the shadows and pulling on the edges to see how well it holds up.  A sign of a good game is one that I will reopen not to actually play through again, but to just wander around the world, taking in my surroundings.  I’ve long lamented the fact that relatively few games make this a rewarding experience – even in the best games, even slight digging tends to turn up empty, unimplemented spots.

What I am coming to appreciate is just how much work is involved in the kind of implementation I look for.  Every time I pass through a room’s description, or add in scenery objects, I realize just how easy it is to find things to drill down into.  Where there’s a hanging plant, there’s a pot, dirt, leaves, stems, wires to hang from, hooks to hang on, etc.  Obviously, unless I had all the time in the world, I couldn’t implement each of these separately, so I take what I believe to be the accepted approach and have all of the refer to the same thing.  Which, in my opinion, is fine.  I don’t mind if a game has the same responses for the stems as it does for the plant as a whole, as long as it has some sort of relevant response.  Even so, this takes a lot of work.  It might be the obsessive part of me, but I can’t help but think “What else would a person think of when looking at a hanging plant?”

Or, as I’ve come to think of it:  WWBTD?

What Would Beta Testers Do?

I’ve taken to looking at a “fully” implemented room and wondering what a player might reasonably (and in some cases unreasonably) be expected to do.  This is a bit of a challenging process for me – I already know how my mind works, so trying to step outside of my viewpoint and see it from a blind eye is hard.   I should stop for a second to note that I fully intend to have my game beta tested once it reaches that point, but the fewer obvious things there are for testers to trip over, the more time and energy they’ll have for really digging in and trying to expose the weaknesses I can’t think of.

I’ve found one resource that is both entertaining and highly informative to me:  ClubFloyd transcripts.  ClubFloyd, for the uninitiated (a group among which I count myself, of course) is a sort of cooperative gaming experience — if anyone who knows better reads this and cares to correct what may well be a horrible description, by all means!– where people get together on the IFMud and play through an IF title.  The transcripts are both amusing and revealing.  I recently read the Lost Pig transcript and it was quite interesting.  The things people will attempt to do are both astonishing and eye-opening.  In the case of Lost Pig (which, fortunately, I had already played before reading the transcript), what was even more amazing was the depth of the game itself.  I mean, people were doing some crazy ass stuff – eating the pole, lighting pants on fire, and so on.  And it *worked*.  Not only did it work, it was reversible.  You obviously need the pole, so there’s a way to get it back if, in a fit of orc-like passion, you decide to shove it in down Grunk’s throat.

Anyway, my point is, the transcripts gave me a unique perspective on the things people will try, whether in an effort to actually play the game, to amuse themselves, or to amuse others.  Definitely good stuff to keep in mind when trying to decide, say, the different ways people will try to interact with my little porcelain frog.

Other Stuff I Accomplished

So I coded in an alternate way to deal with the frog that didn’t conflict with the “standard” approach.  I also implemented a few more scenery objects.  Over the course of the next few days, I’m going to try to at least finish the descriptions of the remaining rooms so that I can wander around a bit and start really getting to the meat of it all.  I also want to work on revising the intro text a bit.  In an effort to avoid the infodumps that I so passionately hate, I think I went a little too far and came away with something a bit too terse and uninformative.  But that’s the really fun part of all of this – writing and re-writing, polishing the prose and making it all come together.

Whattaya know.  Midnight again.  I think I’m picking up on a trend here.

Categories:

Day Nothing – *shakes fist at real life*

Adventures in Interactive FIction - 8 April 2008 - 12:13pm

Grrr… I’ve been so bogged down in work and client emergencies that progress on the game is at a temporary (no, really!  Only temporary) standstill.  I’ve managed to flesh out a few more room and scenery descriptions, but have not accomplished anything noteworthy in a few days.  Hopefully after this week most of the fires on the work front will be extinguished, and I’ll have time to dive into the game this weekend.

(She says to no one, since there’s been one hit on this blog since… it started.)

Categories:

Pages

Subscribe to As If Productions aggregator