Sunday, March 29, 2020

Tech Book Face Off: Rails AntiPatterns Vs. The Rails 5 Way

It's been a while since I've cracked open a Ruby on Rails book, and there were still a couple of these books that I've been meaning to read. So far the Rails books I've read have been beginner's books and tutorials. With this latest pair of books, I wanted to go deeper into Rails and learn how to program fluently in the framework. The first book, Rails AntiPatterns: Best Practice Ruby on Rails Refactoring by Chad Pytel and Tammer Saleh, was published way back in 2010 when Rails 2.3 was cutting edge. I took a chance that the book would focus more on timeless advice than version-specific tips and tricks. The opposing book, The Rails 5 Way by Obie Fernandez, was published much more recently at the end of 2017 and should be at less risk of being out-of-date. Although, it looks like Rails 6 will be out soon. One thing's for sure: technology doesn't stand still, but that shouldn't matter too much if the books take that into account. Let's see how they fare.

Rails AntiPatterns front coverVS.The Rails 5 Way front cover

Rails AntiPatterns


Most programming books will tell you the right way to do things and give examples of how to implement that advice. This book takes a different tack and instead shows you what not to do, with examples of how to refactor those mistakes into clean Rails code. This change in approach is refreshing for the intermediate to advanced programmer because over time we develop certain habits as we try to discover how to do things in a language or a framework, and they're not always the best (or even very good) ways of doing those things. Having a book to help identify where our code has gone astray and how to fix it is a helpful tool indeed.

I was a bit worried about reading a book specifically about Rails that was written so many versions ago, being that Rails 2.3 was out at the time and we're now heading into Rails 6.0. I normally don't mind reading older books about programming in general, since those books have been filtered by time and tend to contain plenty of wisdom that has survived current fads. However, this is a book about a specific web framework, so if it is over eight years old, how could it possibly still be relevant? I needn't have worried. Most of the book focuses on general good programming practices within the context of the Rails environment. Such advice is still as valid in Rails 6.0 as it was in Rails 2.3, even if some of the implementation details have changed.

The structure of the book works well, with ten chapters each focusing on a different topic of the Rails framework. These topics range from the obvious models, views, and controllers on which the Rails architecture is based, to the related services, testing, and databases that are all a part of web application programming. Each topic covers a few antipatterns with descriptions of a common programming mistake and why it's wrong, followed by one or more solutions that fix up the antipattern into beautiful, DRY code. The obvious solutions—like that views should contain strictly display logic, controllers should be thin, and models should contain all of the business logic, but broken out into helpers and plain Ruby objects—are covered along with a number of less obvious antipatterns. Some of the more extended solutions are quite satisfying to follow as the refactorings morph an ugly hack into a pretty Rails implementation.

Throughout these refactored antipatterns the authors relate clear reasons for why things should be done a certain way and sound advice on how to choose between competing options. For example, when discussing whether or not to use scopes to create chainable filters on models, they say:
There are downsides to this approach, including problems with readability and simplicity, as well as abuse of the Law of Demeter. Whether you use this approach is a judgment call on your part. Will you use the added flexibility? Is it better than defining a handful of separate finders? Like many advanced refactorings, this one has no easy answer and depends greatly on your tastes.
I appreciate the honesty of this advice. In programming, as in most things in life, not all rules are hard and fast. Multiple good options can and do exist, and in these cases it comes down to a judgement call from the programmer, given the context of the specific situation. Experience and taste will develop into a programmer's style, and as long as they're not making a poor choice for the wrong reason, it's okay to prefer one viable option over another.

The authors aren't always so amenable to choice in correcting antipatterns. They do discourage attempts at divining the future, as in this example:
Developers new to the template pattern tend to want to err on the side of flexibility. This is a form of future-proofing, and it's a mistake—especially when working in a language as geared toward agile development and the refactoring cycle as Ruby.
It's almost always better to spend time fixing real problems in the here and now instead of trying to predict and head off future problems that may never happen.

The whole book was full of insights like these, and it was all packaged in easy-to-read prose and concise, relevant examples of how not to write Rails code, followed by how to fix it. I found it to be a quite enjoyable way to learn better Rails programming practices, and it reminded me of an old chess book that had followed a similar format: How Not to Play Chess. Seeing the mistakes that can be made and their consequences clearly laid out can prove quite helpful in identifying our own mistakes and seeing the path to correcting them. This teaching method was expertly executed in Rails AntiPatterns, and I highly recommend giving it a read if you do any programming in Rails.

The Rails 5 Way


This was definitely the longest book on a programming language or framework that I've read in a while. Weighing in at over a thousand pages, it definitely achieves tome status, and strives to be a comprehensive map of the Rails 5 framework. The forwards and introduction recommend reading it straight through at least once to get the lay of the land and see everything that's available in Rails before using it as a reference.

I would agree that knowing what tools are available in any given language or framework is half the battle when attempting to develop solutions as efficiently as possible. If you know that something you want to do is possible and you know where to look to research how to do it, then you're already ahead of the game in reaching an optimal solution. However, I was not going to read all the way through this book, considering the last third of it is a pure reference listing of the Active Model and Active Support APIs. That's skim-worthy material at best.

At least another third of the non-appendix part of the book is also reference listings of various APIs in the Rails framework. The trouble with this reference material is that it is interspersed with actual guidance on how to use the different parts of Rails. That makes it much harder to skim through the boring, tedious method descriptions without missing tidbits of more useful information, so most of the book was kind of a slog.

Obie Fernandez took a slightly unconventional approach to covering Rails, and instead of starting with Active Record, he started at a high level by covering the Rails configuration and environments, then followed the flow of a request by going into routes, REST, resources, and controllers before getting to Active Record. After five chapters of the various aspects of Active Record, he continued with Action View, helpers, and Haml, followed up by an assortment of short chapters on session management, security, Action Mailer, caching, background processing, Ajax, Turbolinks, Action Cable, and testing with RSpec. Whew. Like I said, comprehensive, and even if some things couldn't be included in depth, they were at least mentioned so that the reader could be aware of them and do more research on their own.

Some chapters were quite useful and informative, like the main chapters on the MVC architecture of Rails. These chapters contained a fair amount of good advice and recommendations that can save developers a lot of trouble, such as:
Rails' schema definition provides the authoritative record of truth for the latest version of your database schema. If you need to recreate your database on another server, you should be using db:schema:load, not running all the migrations from scratch.
Anyone who's tried to run a long chain of migrations while setting up an application on a new machine can attest to the futile debugging situation you end up in when one of the migrations inevitably fails halfway through. Using the schema is definitely the way to go. I also found the chapters on security, caching, and Turbolinks to be quite helpful, and I learned a bunch of great things that will help me build better Rails applications.

On the other hand, there were large swaths of the book that were pure drudgery. Most of the helpers chapter was like this with page after page of very similar method descriptions:
11.3.1 asset_path(source, options = {})
Computes the path to asset in public directory. If :type options is set, a file extension will be appended and scoped to the corresponding public directory. All other asset *_path helpers delegate through this method.

<...code example...>

11.3.2 asset_url(source, options = {})
Computes the full URL to an asset in the public directory. This will use asset_path internally, so they behave the same way. If the :host option is set, it overrides the global config.action_controller.asset_host setting normally set in config/environments/production.rb.

asset_url "application.js", host: "http://cdn.example.com" # => http://cdn.example.com/assets/application.js

Also aliased as url_to_asset.
Ugh. This kind of stuff is much easier to search for in the online Rails documentation when you need to look it up, not by paging through a giant book. I was also surprised at how much of these method descriptions ended with comments about how useless they were. Maybe 20% of the methods would have a description of what they did with a code example, and then Fernandez would end it with saying he had never found a use for this method or you would never want to do things this way because some other method was much better. That got more than a little frustrating as the book dragged on.

It may sound a bit strange to criticize this book for including ways not to do things in Rails, having just praised a book whose entire structure was showing how not to do things and then showing the right way, but this is different. In Rails AntiPatterns, the author was showing common mistakes when programming in Rails and how to fix those mistakes by using Rails the right way. My complaint with The Rails 5 Way is that time is spent describing irrelevant methods that may have been included in the framework for completeness or for a specific, uncommon use case, but are hardly ever used in practice. When those things are included in a book whose title asserts that this is how things should be done, it muddies the waters.

Between the appendices, the long lists of method descriptions, and the inclusion of dozens of methods that are rarely used, this book is probably three to four times longer than it needs to be, all for the sake of being comprehensive. It was light enough on actual recommendations for how to use Rails, focusing more on every single thing that's available, that a more appropriate title would simple be The Rails 5 Documentation.


I much prefer reading programming books that directly address the 'how' and 'why' of programming, like these books I previously reviewed on how to use Rails. The Ruby on Rails Tutorial is especially good and the latest version is also up-to-date with Rails 5.  Even Rails AntiPatterns is still relevant nearly a decade later because it addresses the fundamentals of developing in Rails. I would rather leave the 'what' of programming to the online documentation where it is easily searchable and stays updated to the latest version of the tools. In that respect The Rails 5 Way falls flat. It would have been a much more compelling book if it had stripped out all of the drab documentation and focused on showing the right way to program in Rails and explaining why that was the best way to do it. As it is, reading through Rails AntiPatterns and referring to the online documentation is the more productive path.

Saturday, March 28, 2020

Let's Play Batman Arkham Asylum Part - 1 Walkthrough GTX 750TI (60FPS) [...

Modular Vs Integrated Expansions

Having recently done an expansion for Crusaders, and having done 3 expansions for Eminent Domain and one for Isle of Trains as well, I have noticed a particular style I like to use when creating expansions, and I've identified two distinct types of expansions: Modular and Integrated.

Modularity

A modular expansion is one with several distinct modules that can be added in various combinations. These can be good because they allow the players to use the modules they enjoy, and simply ignore the ones they don't care for. It allows players to customize their experience. Undoubtedly, this is something that some players will appreciate.

However, it also requires playing each module at least once to determine if it works well for your group, and it requires some effort to curate the expansion content to provide that perfect customized experience. For a group that loves a game and plays it all the time, one that's willing to put in the effort and plays to find the perfect combination of modules, this could be fine. But in today's market, I wonder if players will put in that time and effort? Or would they prefer to just buy a curated expansion, where the "best combination of modules" is the only thing provided?

Another down side to a modular expansion is that because of that modularity, the pieces of the expansion may feel bolted together and disparate rather than feeling like a seamless experience.

Integration

An integrated expansion is one where the new parts play off of each other and off of the original content. When done well, this type of content fits seamlessly with the base game, and it can be difficult to differentiate the new stuff from the old.

This loses the opportunity for customization provided by a modular expansion, but it gains the curated feel, and doesn't require any work on the part of the player to get to the "best" configuration.

Another down side to integrating an expansion is that it may be more difficult to remove the content when you want to play the game with new players. For an insular group who plays the same game many times, an integrated expansion may be preferable, while for a group where new players come and go with each play, it may be more difficult to pop the expansion content in and out.

My personal preference

It's probably clear in the above paragraphs that modular expansions aren't my preferred format. Well integrated, expansion content fits together with the base game in such a way that it feels like it was always there, or like it belongs. I find something attractive in the thought that the expansion integrates so well that a new player might not be able to identify the new content from the old.

Looking at the expansions I've done, I think it's clear I've attempted to go for integration over modularity:

In the Eminent Domain expansions, you simply add the new tech cards, shuffle the new planets into the deck, and the Fleet, Mining, and Political Influence tiles tie it all together.

When I first played Isle of Trains: All Aboard (which hasn't been published... yet) with the publisher, they were skeptical going into it that the game really needed an expansion. After we played, they said they were surprised how well integrated the expansion was, and that it was not obvious the expansion content wasn't just part of the base game in the first place.

Crusaders: Divine Influence is about to ship from China, so not many have played it yet, but my goal with that one was to seamlessly integrate the new content with the old. I replaced the Influence action with something more involved, and I added new buildings and a few factions. If you know the rules of the base game already, then playing with the new content should be easy to pick up. Learning the game for the first time with the expansion content included will be a bit more complicated than learning just the base game, but I have had some success teaching the game that way most of the times I have played the expansion with strangers.

Conclusion

There might be a temptation to make expansions modular, because as a designer it can be easy to think that's what players want, and it abdicates the responsibility of curating the expansion to the players. My advice for designers is to consider the game you are expanding, and that game's audience. In this day and age, with thousands of new titles coming out every year, is modularity really the best format for your expansion? Or would your audience be better served with a well integrated, curated expansion? For most of the games I work on, I think it's the latter.

Tuesday, March 24, 2020

Game 363: Ultima VII: The Black Gate

A deceptively pleasant introductory screen.
             
Ultima VII: The Black Gate
United States
ORIGIN Systems (developer and publisher)
Released in 1992 for DOS; 1994 for SNES
Forge of Virtue expansion released later in 1992 for DOS
Date Started: 20 March 2020

I first played Ultima VII in 1999. I had just purchased my first Windows laptop after 7 years of Mac-exclusive ownership, and I was ready to catch up on a decade of RPGs. I had staved off my addiction while serving in the Army Reserves, going to college, meeting my eventual wife, and starting my career, and it was best for all of those endeavors that I did. But life had settled down by then, and I was ready to take the risk.

The first two "new" RPGs that I played were Might and Magic VI and Ultima VII. ("New" being post-1990, when my Commodore 64 had died. By then, Ultima VII was 7 years old, of course, but I still think of it on the "new" side of the dividing line between "old" games and "new" games.) I had a similar reaction to each of them: initial distaste, followed by growing admiration, followed by absolute awe.
          
This may be the first CRPG with an expansion pack that takes place within the main quest.
            
But I still remember the reasons behind my initial reaction, and a few of them remain valid criticisms. I bought it as part of an Ultima anthology, so I would have played it after hitting Ultima IV-VI in quick succession. Compared to the small, crisp icons of the previous games, the Ultima VII characters seemed impossibly lanky and awkward. The creators must have taken to heart the criticisms of the tiny Ultima VI game window because they made the entire screen the game window--but then they zoomed it in so much that you still only see a tiny area.

They removed the ability to choose a character portrait, and I hated--still hate, really--the long blond-haired jerk that I'm forced to play. The guy looks like he's about 50, which doesn't bother me as much today as it did then. The typed keyword-based dialogue that I absolutely cherished had been replaced by clicking on words spoon-fed to you by the game. And then there was all the clicking! For the first time, the Ultima interface wasn't using my beloved keyboard shortcuts but instead wanted me to click around on things. I hate that now and I hated it more then, when the mouse was still new and uncomfortable.
          
I still find everything about this screen annoying.
          
Finally, there was the plot. 200 years have passed?! And all my old companions are still alive?! Who is this Red Thanos taunting me through the computer screen? And what in Lord British's name have they done to Lord British?!

This is all to say that I'm glad I'm not playing Ultima VII for the first time. This is a game that vastly benefits in a replay, at a point where I've accepted its weaknesses but also have a full understanding of its strengths. In fact, the position that I'm in right now--knowing that I'm in for a good game but not remembering much of it because I haven't played it in maybe 13 years--is just about perfect.

So let's back up and note all the things that the game does right, starting with the animated, voiced introduction, perfectly scored. The game opens on a pleasant scene of Britannia. A butterfly dances around a grassy hillside at the edge of a forest. There's a lilting tune with a timbre suggesting an organ but a melody suggesting more of a flute.
                
The first appearance of the Guardian.
           
But after a few seconds, the music fades and is replaced with an ominous, themeless tune in a low register. Black and blue static fill the screen. A red face with glowing yellow eyes and teeth like rocks pushes through the screen to address the player directly:
               
Avatar! Know that Britannia has entered into a new age of enlightenment. Know that the time has finally come for the one true Lord of Britannia to take his place at the head of his people. Under my guidance, Britannia will flourish, and all the people shall rejoice and pay homage to their new Guardian! Know that you, too, shall knell before me, Avatar. You, too, shall soon acknowledge my authority, for I shall be your companion, your provider, and your master!
            
I would note that in contrast to the comically awful narrations at the beginning of both Ultima Underworld and Ultima VII: Part Two, the Guardian's voice is reasonably well-acted by Arthur DiBianca, who I gather was just a programmer who happened to have a nice bass voice. [Edit: I was wrong. The Guardian was voiced by a professional actor, Bill Johnson, who remained with the character for the rest of the series. He also played Leatherface in The Texas Chainsaw Massacre.] The voice immediately gives us a paradox because the Guardian looks like an ape, an orc, a monster, yet his voice is clear, his speech intelligent and articulated. Just what kind of foe are we facing? One who knows who we are, who has the ability to push through into our world.

(Incidentally, having never played Ultima VIII or Ultima IX, I still don't really know the answers to the questions about the Guardian's origin and motivations. I know it'll be tough, but I'd appreciate if no one spoils it.)
            
As the screen fades, the camera pulls back to show that the player is somehow playing Ultima VII on his computer, with a map of Britannia and a Moonstone sitting beside it. No, it doesn't make sense. Don't think about it.
          
I can't not think about it. How is my character playing Ultima VII? Does he have his own character? How far down does it go?
           
"It has been a long time since your last visit to Britannia," the title screen says, two years constituting "a long time" back in those heady days of annual releases. The character picks up his moonstone and heads out to the circle of stones in his back yard--only to find a moongate already there. Without hesitation, he plunges through to the title screen, which features not the triumphant, adventurous introductory music of most RPGs but rather a dark, dreadful march in 2/4 time. Something awful is coming, it says.
                
I'm not sure this ever gets answered.
         
Before we get into character creation and the opening moments of the game, let's diverge to the manual, which is perhaps the most brilliant game manual of all time--a superlative unlikely to ever be broken now that game manuals no longer exist. It manages to educate the player on the basics of Britannia and the past Ultima games while perfectly serving the plot of the current game. It is the only manual that I know that was written by the game's villain. I realize that's a bit of a spoiler, but you'd have to be a particularly dense player to not realize that something is at least a little fishy with "Batlin of Britain," and a veteran player of the Ultima series reads it with an escalating horror.

The manual is called The Book of Fellowship, and it describes the history, geography, and society of Britannia in the context of the growth of a quasi-religious/philosophical order called the Fellowship. Jimmy Maher has a particularly excellent article examining the parallels between the Fellowship and the Church of Scientology. (Garriott had apparently read a 1991 Time magazine exposé of the Church while the game was in its planning phase.) But I also see a lot of the (then-) growing "prosperity gospel" in the Fellowship, and Batlin strikes me as much of a Joel Osteen (although no one at ORIGIN would have been aware of him in 1992) as an L. Ron Hubbard. One particular analogue with prosperity theology (and not Scientology) is the organization's "layered" approach to scripture. The Fellowship does not reject the Eight Virtues of the Avatar any more than prosperity theology rejects the Bible. It simply adds its own new layer of interpretation (simplification) on top of them, encouraging its followers to hold true to the past without really focusing on it. The emphasis is all on the new material--in the case of the Fellowship, their Triad of Inner Strength.

The manual begins with Batlin of Britain's introduction of himself. He presents himself with false humility as just a regular man, a fellow "traveller" through life, who has happened to stumble upon a bit of wisdom that he wants to share. Throughout his biography, he brags-without-bragging that he has served in all eight of the classical Ultima roles: Born and raised by druids in Yew, a first career as a fighter in Jhelom, then as a bard in Britain; trained by a mage from Moonglow; serving for a while among a company of paladins in Trinsic and as a tinker in Minoc; and finally spending a sojourn with the rangers of Skara Brae before ending up as a humble shepherd in New Magincia. His series of portraits through these sessions show a square-jawed, hale, charismatic figure, and it's no surprise when we actually meet him in-game to find a fatter, oilier version than is presented in the official portraits.
            
What kind of pretentious jackass divides his own biography into sections called "part the first" and "part the second"?
             
During his description of overcoming some wounds in Minoc, Batlin says:
              
A healer there told me that without the proper treatments (for which he charged outrageous prices) I would most probably die! I angrily sent him away. After a time I did mend. I had learned that the healing process takes place mostly in one's mind and have since placed no trust in healers who greedily prey upon the afflicted.
               
Here is our first actual contradiction with the world as we've come to know it as an Avatar. It manages to parallel Scientology's rejection of traditional psychology, sure, but also the Christian Science rejection of traditional medicine and perhaps "New Age" medicine in general.

He describes in his history how he met his two co-founders of the Fellowship, Elizabeth and Abraham (the "E.A." being an intended swipe at Electronic Arts, which would have the last laugh by purchasing ORIGIN the same year), and how his experiences led him to develop the Triad of Inner Strength. If the casual reader is not yet convinced of Batlin's villainy, it should become apparent in the section where he discusses the "ratification" of the Fellowship by Lord British. Though calling him "wise" and paying him obsequious homage, Batlin manages to paint the king as a capricious, dismissive sovereign, uninterested in the Fellowship until Batlin managed to "prove" himself with a display of confidence that manages to reflect the Fellowship's own philosophies. The section brilliantly manages to associate Batlin with the king and the king's favor (for those who still admire the king) while also planting a seed of doubt about Lord British's fitness to rule.

What he does to the Avatar is less subtle but far more damaging. Batlin knows that if his Fellowship is going to replace the Eight Virtues as Britannia's predominant theology, and if he himself is going to replace the Avatar as the spiritual figurehead, he must undo the Avatar. But the memory of the Avatar is too popular, his friends too influential, for Batlin to use a direct attack. Thus, he snipes and undermines and saps from all angles while pretending to admire the Avatar himself. "The Fellowship fully supports the Eight Virtues of the Avatar," he says, but that "it is impossible to perfectly live up to them. Even the Avatar was unable to do so continuously and consistently." Thus pretending to support the Eight Virtues while rejecting them, he introduces the Fellowship's Triad of Inner Strength:
            
  1. Strive for Unity: Work together to achieve common goals.
  2. Trust Thy Brother: Don't live your life full of suspicion and doubt.
  3. Worthiness Precedes Reward: Do good for its own sake before expecting compensation.
  
Maher's article points out how these three principles are not only kindergarten-level theology, but how easy it is to twist them towards evil ends. "Work together, don't question, don't ask anything in return" could be the motto of a fascist organization as easily as a charitable one.

Most of the slights against the Avatar occur during the second half of the manual, ominously titled "A Reinterpretation of the History of Britannia." Batlin walks through the events of Ultima I through VI much as the previous game manuals did, but with the occasional anti-Avatar salvo disguised as support. For instance, after describing the events of Ultima II, he says:
          
While there have been speculations as to the motivations of the Avatar, there is insufficient evidence to show that the Avatar was driven to violence by jealously over Mondain's romantic involvement with Minax. That being said, such theories are hereby denounced and should not be given consideration.
           
Soon afterwards, he "formally disagrees" with "those who say the Avatar should have handled [the events of Exodus] differently." He casts aspersions--no, sorry, alludes to other people casting aspersions--on the Avatar's motives in the Quest of the Avatar. As for Ultima VI: "Those who say that this terrible and destructive war could have been prevented had the Avatar not appropriated the Codex from its true owners are merely dissidents who are grossly misinformed." Leaving aside the fact that the Avatar wasn't the one who took the Codex, Batlin commits here the slimy politician's trick of introducing a slur while simultaneously denying it, thus seeding doubt while trying to remain above it. I've learned the hard way to at least try to keep politics out of my blog, but it's literally impossible not to think of Donald ("many people are saying") Trump when reviewing this aspect of the Batlin character or indeed the Batlin character as a whole. If I didn't say it here, someone would have filled in the blank in the comments as they did in the Maher article.

Aside from the undermining of the Eight Virtues, Lord British, and the Avatar, the manual is notable for numerous asides that make the veteran player eager to jump in and start swinging his sword. In his description of his time as a fighter, Batlin talks about "unruly lords wag[ing] war against each other . . . over Lord British's objections." Clearly, peace has broken down, but why? We later hear that Skara Brae is for some reason a "desolate ruin" (remind me to come back to another Batlin quote when I actually visit Skara Brae). Lock Lake near the city of Cove has become polluted. The town of Paws is said to be languishing in poverty. Some mysterious figure called the "Sultan of Spektran" has set up his own government on the island previously occupied by Sutek. The gargoyles have their own city, called Terfin, but there's a suggestion that local mines might be exploiting them for labor. Runic writing has fallen out of favor. There have been recent droughts. And worst of all, magic has been breaking down and its practitioners going insane.

Perhaps the biggest shock is that it has been 200 years since the Avatar last visited Britannia. This is presumably since his last visit in Ultima VI, not Ultima Underworld. The manual makes no acknowledgement at all of the events of Underworld; no mention is made of a colony on the Isle of the Avatar, nor its destruction in a volcanic eruption.

Ultima IV: Quest of the Avatar still has the best quest of the series, in my opinion, but Ultima VII may have the best plot. This isn't the first time that a CRPG has featured writing and plotting worthy of a novel (I would probably give that award to Starflight), but it's still rare in the era. I understand that we owe this depth of narrative to lead writer Raymond Benson, who would later go on to take over the James Bond novel series. Benson was a playwright and composer who had previously worked on computer adaptations of Stephen King's The Mist (1985) and the James Bond games A View to a Kill (1985) and Goldfinger (1985). He was recruited by ORIGIN in 1991 and wrote some dialogue for Martian Dreams before beginning Ultima VII.

Someone like Benson was exactly what ORIGIN needed. The company may have "created worlds," but they always did so in a way that was both a little sloppy and a little too tidy, with poor respect for their own canon. I have discussed at length my disappointment over the way the game treated the concept of "the Avatar" after Ultima IV. Well, here, in the opening documentation of Ultima VII, we have an in-game character who personifies that lack of respect, who manages to take the confusion over ORIGIN's retcons--was the Avatar really the same hero who defeated Mondain?--and twist it to his own ends. When I finished the manual in 1999, I was never more eager to leap into a world and start putting things right. I am only slightly less eager now.

Note: To avoid loading transitions and other throwbacks to an earlier age, the developers of Ultima VII changed the way DOS allocates memory. Their solution required players to boot from a special disk. I remember that this created all kinds of problems when I originally tried to play the game in the late 1990s. Also, processors had gotten so much faster that the characters moved at lightning speed, and I had to use a special program called Mo'Slo to slow things down. I don't think I ever got the sound working properly back then. The emulation era and the folks at GOG sure make this much easier.

Saturday, March 21, 2020

Game 362: OrbQuest (1981)

I'm playing the second edition of the game. The first is not available anywhere.
            
OrbQuest
United States
Alternate World Simulations
Released in 1981 for CP/M
Date Started: 10 March 2020
Date Finished: 15 March 2020
Total Hours: 25
Difficulty: Moderate-Hard (3.5/5)
Final Rating: (to come later)
Ranking at time of posting: (to come later)
       
Digital Research's CP/M operating system only boasted two original RPGs, and it turns out that both of them were adapted directly from games on the PLATO mainframe. A year ago, I covered how Nemesis (1981) was just a microcomputer version of Oubliette (1977), and now it's clear that OrbQuest is nothing more than a microcomputer version of The Game of Dungeons (1975), more popularly known by its file name, "DND." Specifically, it is a direct adaption of the game's fifth edition.
          
Finding a treasure chest in the OrbQuest dungeon offers the same options as The Game of Dungeons.
          
We've discussed at length how Daniel Lawrence based his own DND (c. 1976) on The Game of Dungeons, but OrbQuest is a far more literal porting of the code than Lawrence's. Indeed, if I'd known about it when I won The Game of Dungeons, I might have been content to discuss OrbQuest in an addendum rather than playing it as a separate game. Among the things it shares in common:
            
  • A goal to recover an Orb, held by a powerful guardian (a dragon in Game, a "dragon wizard" here)
  • Twenty 9 x 9 levels with the same system of movement (e.g., SHIFT to go through a door), secret doors, and one-way doors
  • No staircases, just "teleporters" that take you to the next and previous levels, and the teleporters are oddly spaced between squares rather than in them
  • The same attributes, with "piety" substituted for "wisdom" 
  • Experience based on monsters killed and gold retrieved
  • Most of the same spells, divided into cleric and mage, with slots given to the character upon leveling
  • The same combat options, including minimized importance of "fighting" and each enemy having a particular weakness to a particular spell
  • The same commands and results for opening chests, drinking potions, and reading books
  • Most of the same items of magical equipment to find
  • Most of the same monsters
  • On dungeon Level 1, monsters are never higher than Level 1 
  • Options to toggle on or off automatic collection of gold and automatic fighting of enemies below a certain level
        
I'm assuming that Dirk Pellet and the other Game authors didn't know about this attempt to monetize their work, or certainly they would have objected as strongly as they did to Lawrence's. Relative obscurity must have helped: OrbQuest appeared only for a dying platform, and the creator notes on a message board that he only ever sold about 100 copies.
           
The Game of Dungeons' cleric spells were, in contrast, "Light Candle," "Holy Water, "Exorcise," "Pray," "Hold," "Dispell," and "Datspell."
               
As to that creator, his name was Walter E. Donovan, and his company--existing only for this game, it seems--has an address in Milpitas, California. So far, I have not been able to tie Donovan directly to a PLATO campus (unlike Lawrence and the author of Nemesis), so I'm not sure how he was exposed to it, but it's clear that somehow he got the source code or otherwise thorough documentation of its elements and mechanics.
               
A nice cover leads the game manual, which is otherwise typewritten and photocopied.
           
As usual, this is not to say that Donovan added nothing to the game. In fact, he smoothed away some of Game's most egregious imbalances and made the game less random. Gold is less plentiful, particularly on earlier levels, chests (and thus magic items) rarer, and traps less deadly. A player can no longer spend half the game just wandering the same corridors of Level 1 and picking up nearly every magic item along the way. Chests have only about 10 times the gold as random loot on their levels, not 1000 times. Chests aren't trapped as often, and when they are, they rarely kill you unless you've delved too far too fast. Magic items are never trapped. Books and potions help more than they hurt, so it's worth taking the chance on them.
               
Potions and books are less deadly here than in the source game.
       
The result is a game that is, even with permadeath, far more survivable than The Game of Dungeons but also less "gameable." There aren't any tricks to help you get rich quick (unlike in Game, you can't cache gold, either) or otherwise bypass the long and tedious process of grinding yourself senseless for several dozen hours. I've been doing it while clearing out my Netflix queue, but I can't imagine that even back in the day, when it was the only game for my platform, I would have had a lot of fun with it.
             
Collecting gold to raise my level. I have a pretty good set of equipment here.
          
The game begins with random rolls of 3-18 for strength, dexterity, intelligence, and piety. After that, you begin on Level 1 of the dungeon. The 9 x 9 levels have a fixed layout but a random distribution of gold, chests, and other items, re-randomized every time you change levels or exit the dungeon. Encounters are completely random and also extremely variable. Sometimes, I walked 20 steps or more with no encounters; other times, I had three or four in the same square.
                
The limited character creation process.
            
For the most part, you meet the same monsters on all levels, but the monsters themselves have levels. The monster's level is far more important in determining his danger than the monster type; that is, a Level 3 ghoul is deadlier than a Level 1 dragon. On dungeon Level 1, monsters are never higher than Level 1 themselves. On other dungeon levels, their levels are randomized to a maximum of roughly 5 times the dungeon level for levels 1-10--unless you're carrying gold, in which case their maximum level is something like 4 times the dungeon level plus 1 for every 5,000-10,000 gold pieces you carry.
             
My maps of the first nine levels.
           
OrbQuest lacks the "excelsior transport" from Game, but several of the levels have pits that take you directly to lower levels. The levels have varied layouts with secret doors, one-way doors, and such, but no special encounters until Level 10. Playing the game is a process of exploring downward, picking up gold until you start to encounter monsters you can't handle, then hauling it back up to Level 1 and then exit in order to level up. The next time, you can go a little further and collect a little more gold.

There are 13 monsters in the game: balrogs, deaths, demons, dragons, evil curates, ghouls, green slimes, hirebrands, huge spiders, mindworms, specters, wizards, and zombies. A few of them have special attacks. If mindworms do any damage to you at all in combat, they'll sap intelligence permanently. Same goes for specters and strength. Green slimes eat inventory items.
                  
Despite my victory, the specter manages to eat a point of strength.
            
As with Game, fighting here is a last resort except for enemies significantly below your level (you can set the game to auto-fight such enemies so you don't even need to press "F"). Instead, you need to learn, through trial and error, each enemy's weaknesses to various spells. For instance, balrogs are susceptible to the "Fatal Charm" mage spell. The cleric spell "Holy Water" deals with demons, evil curates, and zombies. As in Game, the cleric's "Hold" and the mage's "Sleep" work reliably against enemies below Level 5 and hardly at all after that. As long as the enemy isn't more than three times your level, he should die immediately from the spell that works best against him. At higher levels, the spell might partly work (depending on the spell), leaving you to finish him off (or vice versa) in melee combat. Again, you can control the level of enemy you face by controlling the amount of gold you carry and the dungeon level you're visiting.
              
Combat options.
       
The occasional potion or tome offers a chance to increase your attributes, and unlike the ones in Game, they don't have an equal chance of decreasing attributes, although they do have an occasional negative effect like poison or a trap. "Clerical detection" reliably determines if the item is safe.

Chests occasionally deliver magic items. Swords, shields, helms ("haumes"), hauberks, Cloaks of Defense, and Belts of Healing are all initially found at +1, and as you find more, you gain additional pluses. Amulets of Revival will save the character from one death. Small Idols of Luck increase the amount of treasure that you find. Necklaces of Eyes allow you to see secret doors. I was never sure what Rings of Power or Glory did.
             
The Belt of Healing is a useful tool that regenerates hit points.
           
Level 9 has a bunch of one-way doors that funnel the player to one of the teleporters to Level 10. Immediately on arrival to Level 10, the character is attacked by Demogorgon. This is a test encounter to see if you're strong enough for the lower levels, and you need to be around Level 100 to beat him. Once he's dead, he never appears again.
              
Killing Level 10's Demogorgon is a key milestone.
          
Levels 10-20 are a lot harder. Not only are the monsters much higher level, but there are more navigation obstacles. There are invisible walls, wrapping levels, lots more one-way walls and doors, and other difficult terrain. Downward teleporters sometimes skip two levels. Level 15, with a bunch of concentric squares, is a copy of Game of Dungeons' Level 11. Level 16, featuring a spiral of corridors, is a copy of Game's Level 15. And Level 17, with a bunch of featureless north/south corridors connected by secret doors, is a copy of Game's Level 20.

The Dragon Wizard is found somewhere on Level 20. The level has a couple of squares that halve your available spells and another one that blinds you. If you defeat the Dragon Wizard, you get the Orb and millions of gold pieces--which it would be sensible to immediately drop, as the Orb itself is going to attract enough high-level monsters. You then have to make your way back up 20 levels, apparently somewhere encountering The Grim Reaper, who's even harder than the Dragon Wizard.

Here is where I run into problems. Although I've explored them both multiple times, I cannot find the up teleporters from Levels 19 or 13. A "Teleport" spell that's supposed to move you upward for one cleric and one mage spell slot absolutely never works. Thus, although I have managed to obtain the Orb, I can't find my way out of the dungeon.
             
I had the Orb at one point; I just couldn't get it out.
          
I haven't been adhering to permadeath, of course. The game makes it easy to cheat. It saves your character with every level transition and doesn't record his "death" until you acknowledge the death message. This is an opportunity for players to quickly remove the disk from the drive, or in my case kill the emulator. Reloading is a pain, though, so death still has consequences. Since I'm emulating the CP/M from within DOSBox, I have to restart two emulators with their associated commands and sit through a timer in the unregistered CP/M emulator. It was probably easier for a 1981 player to restart his game than it is for me.
              
            
Thus, having wasted an absurd number of hours on the game, I can't show you a winning screen. But if I know my readers, one of them will eventually grow curious enough to poke around in the game's code and let me know what I missed, and I'll be able to come back with an addendum. For now, the game ties with Game for an 18, although the individual stories aren't exactly the same. Game of Dungeons at least tried to make up a story about the dungeon, which OrbQuest doesn't, but OrbQuest has a slightly better variety of equipment.
             
OrbQuest gets some credit for slightly more gruesome combat language than its source.
           
We'll take our second look at Planet's Edge next while I gear up to plan fan (and Addict) favorite Ultima VII. Replacing it on the "upcoming" list is Catacombs (1982) for the ZX81, for which I haven't even found an emulator yet, so we'll see.

Friday, March 20, 2020

Introducing Python, 2Nd Edition - IT eBooks

Introducing Python, 2nd Edition

TOP 10 MOVIES OF 2019


The new year is here, and so Top 10 season is upon us. The tradition is to rank media in a seemingly arbitrary fashion so here's my oh-so personal list of moves faves that came out 2019. What will be number 1? Read on to find out...

Read more »

Thursday, March 19, 2020

People Behind The Meeples - Episode 214: David Van Drunen

Welcome to People Behind the Meeples, a series of interviews with indie game designers.  Here you'll find out more than you ever wanted to know about the people who make the best games that you may or may not have heard of before.  If you'd like to be featured, head over to http://gjjgames.blogspot.com/p/game-designer-interview-questionnaire.html and fill out the questionnaire! You can find all the interviews here: People Behind the Meeples. Support me on Patreon!


Name:David Van Drunen
Email:theartlion@gmail.com
Location:Toronto
Day Job:Freelance game designer, and homemaker.
Designing:Two to five years.
Webpage:theartlion.com
BGG:DavidVanDrunen
Twitter:@DAVanDrunen
Find my games at:https://analoggamestudios.com/product/gnomes-at-midnight/
Today's Interview is with:

David Van Drunen
Interviewed on: 12/4/2019

This week's interview is with David Van Drunen, the designer of Gnomes at Midnight from Analog Game Studios. In addition to designing games, David is also a very talented artist, using paints to create dynamic, energetic abstract paintings on canvas. Check out his work (both paintings and games) at http://www.theartlion.com/

Some Basics
Tell me a bit about yourself.

How long have you been designing tabletop games?
Two to five years.

Why did you start designing tabletop games?
It started with changing rules in games to 'fix them', and then to making up expansions in games I really enjoyed. After a while I realized I could make a game "from scratch" and designed my first game.

What game or games are you currently working on?
I like to work on a couple at a time, to bounce between them when I get stuck on one. Right now I'm designing a social deduction game called, "Royal Pie Fight", a real-time game called "Ding-dong Donuts", and a co-op game about grief.

Have you designed any games that have been published?
I'm fortunate enough to have "Gnomes at Midnight" published by Analog Game Studios.

What is your day job?
Freelance game designer, and homemaker.

Your Gaming Tastes
My readers would like to know more about you as a gamer.

Where do you prefer to play games?
In a home.

Who do you normally game with?
Mostly with friends, but also every time with my family when I visit them.

If you were to invite a few friends together for game night tonight, what games would you play?
Magic Maze, Tussie Mussie, Vikings on Board, Shadows Amsterdam, Seikatsu, Timeline...

And what snacks would you eat?
Pretzels and candy are best, (no oily, cheesy, sticky fingers).

Do you like to have music playing while you play games? If so, what kind?
Softly a random mix of pop, soundtracks, and alt rock.

What's your favorite FLGS?
I frequent Snakes & Lattes, the College location.

What is your current favorite game? Least favorite that you still enjoy? Worst game you ever played?
My current favourite is Keyforge, (specifically the 'Call of the Archons' series). Catan is my least favourite I'll still play because I've over played it and there are better games now. Worst: Tic-Tac-Toe, or as it should be called 'Go First and Win or Tie Again'.

What is your favorite game mechanic? How about your least favorite?
Favourite mechanic: Area Control, (I'm a bit of a hoarder by nature). Not really a mechanic but least favourite: Reading, (if I wanted to read a novel of text I wouldn't be playing a game!)

What's your favorite game that you just can't ever seem to get to the table?
Game of Thrones the board game. It taught me war games don't need chance or dice, but it's a big time commitment, and lengthy teach time.

What styles of games do you play?
I like to play Board Games, Card Games, Miniatures Games, Video Games

Do you design different styles of games than what you play?
I like to design Board Games, Card Games, Miniatures Games

OK, here's a pretty polarizing game. Do you like and play Cards Against Humanity?
No

You as a Designer
OK, now the bit that sets you apart from the typical gamer. Let's find out about you as a game designer.

When you design games, do you come up with a theme first and build the mechanics around that? Or do you come up with mechanics and then add a theme? Or something else?
Feeling first; 'wouldn't it be cool if'. From there it splits evenly between whether the feeling relates better to a theme or mechanic. For 'Gnomes at Midnight' it related to mechanics of how pieces move around a shifting board. My unfinished spy game based on the TV show Turn was theme first, and then I built how it would physically work.

Have you ever entered or won a game design competition?
I entered HABAs box of bits contest. It's a great design exercise, (you have to make a game with a random box of their wooden pieces) and very different from my normal design process.

Do you have a current favorite game designer or idol?
I consistently enjoy J. Alex Kevern's designs, (World Fair 1893, Sentient).

Where or when or how do you get your inspiration or come up with your best ideas?
Anywhere! That's why I have notepads all around the house. I'll be watching a movie, reading a book, or just about to fall asleep and it will just hit me. If I want to coax it out, I'll watch a bunch of how to play game videos.

How do you go about playtesting your games?
First I run a couple games by myself acting out different play styles, (normal, timid, wacky) to see if I can break it. Then I'll try to explain it to someone; if I can't get them playing in 5 mins, then something's off. If it works then it's off to Designer Nights at Snakes & Lattes.

Do you like to work alone or as part of a team? Co-designers, artists, etc.?
All my designs are solo, that's why playtesting with many others is so key. I'm open to co-designing, but it's just so much easier right now to do it solo.

What do you feel is your biggest challenge as a game designer?
Going from designer to self-marketer to pitch the game to publishers is tough.

If you could design a game within any IP, what would it be?
I'd love to do an "All you Need is Kill, by Hiroshi Sakurazaka" game. Or an "Annihilation, by Jeff VanderMeer" game.

What do you wish someone had told you a long time ago about designing games?
Start simple. My first design was a mix of Catan meets Risk, and it was too much. Also, avoid designing war games because most publishers won't touch it.

What advice would you like to share about designing games?
Get it playtested sooner rather than later. Learn how to decipher playtesters' feedback well. Get to the core of the feeling they are expressing. Keep asking yourself throughout the process, "why?". Why 10 cards not 9? Why cards not dice? Having a good answer for everything will help strip away the excess.

Would you like to tell my readers what games you're working on and how far along they are?
Published games, I have: Gnomes at Midnight
Games that will soon be published are: My 3D block stacking game will launch in 2020, publisher: Inside Up Games.
Currently looking for a publisher I have: Ding-dong Donuts (Real-time donut disaster!)
Games I feel are in the final development and tweaking stage are: Mystic Nomads (Rondel, area control, minis game)
Games that are in the early stages of development and beta testing are: Grief Game
And games that are still in the very early idea phase are: A stand-alone sequel to Gnomes at Midnight

Are you a member of any Facebook or other design groups? (Game Maker's Lab, Card and Board Game Developers Guild, etc.)
Yes, I'm around online. But mostly just browsing.

And the oddly personal, but harmless stuff…
OK, enough of the game stuff, let's find out what really makes you tick! These are the questions that I'm sure are on everyone's minds!

Star Trek or Star Wars? Coke or Pepsi? VHS or Betamax?
Star Trek because of all the issues it tackled. Water. VHS! because Betamax beta-sux!

What hobbies do you have besides tabletop games?
I really enjoy Sci-Fi movies and unique graphic novels, (Chew, Come Back to Me, Unknown Soldier).

What is something you learned in the last week?
I'm slowly learning where spices grow naturally in the wild, and some of the wacky harvesting required.

Favorite type of music? Books? Movies?
Music: Alt Rock. Books: Sci-Fi. Movies: Time travel.

What was the last book you read?
Why the Dutch are Different, by Ben Coates. A cool look at the reasons behind my ancestral quirks.

Do you play any musical instruments?
I learned the clarinet in grade school, and have recently tried to get back into it.

Tell us something about yourself that you think might surprise people.
I'm in the movie Crimson Peak, and have a brief interaction with Tom Hiddleston.

Tell us about something crazy that you once did.
I did a comedy gig at Yuk Yuks Comedy Bar once. It was crazy scary but it went well.

Biggest accident that turned out awesome?
"There are no accidents, only collisions." - my Young Drivers Instructor.

Who is your idol?
Anyone who stands up against bullies.

What would you do if you had a time machine?
Realistically I'd nit-pick everything trying to change it and then go back to ultimately undo the horrible butterfly effects.

Are you an extrovert or introvert?
Introvert.

If you could be any superhero, which one would you be?
Captain Marvel, it'd be great to shoot beams out of my hands and fly around.

Have any pets?
I'm allergic to cats and dogs, so now I have a papier-mâché cat, who is very good at 'stay'.

When the next asteroid hits Earth, causing the Yellowstone caldera to explode, California to fall into the ocean, the sea levels to rise, and the next ice age to set in, what current games or other pastimes do you think (or hope) will survive into the next era of human civilization? What do you hope is underneath that asteroid to be wiped out of the human consciousness forever?
Smote from space is a fitting end to Cards Against Humanity. I hope Magic Maze endures to delight the future peoples. (Or maybe Trivial Pursuit to teach people about the past.)

If you'd like to send a shout out to anyone, anyone at all, here's your chance (I can't guarantee they'll read this though):
Thank you Ainsley for all your love and support! I couldn't do this without you, and it's been a blast! And to Richard of Analog Game Studios, thank you for believing in Gnomes at Midnight!

Just a Bit More
Thanks for answering all my crazy questions! Is there anything else you'd like to tell my readers?

"Be excellent to each other." Bill & Ted's Excellent Adventure.




Thank you for reading this People Behind the Meeples indie game designer interview! You can find all the interviews here: People Behind the Meeples and if you'd like to be featured yourself, you can fill out the questionnaire here: http://gjjgames.blogspot.com/p/game-designer-interview-questionnaire.html

Did you like this interview?  Please show your support: Support me on Patreon! Or click the heart at Board Game Links , like GJJ Games on Facebook , or follow on Twitter .  And be sure to check out my games on  Tabletop Generation.

Tuesday, March 17, 2020

Uclan Games Design Students In Global Games Jam 2020!

What a truly awesome bunch of students and Alumni we have!
They've all worked really hard together in groups over the whole weekend for long hours and they've now completed the Global Game Jam 2020.























The Global Game Jam 2020 started on Fri 31st Jan in all sites around the world, and this year's theme is...

Repair
The theme reveal clip at the end of the GGJ20 keynote video showed objects in various states of repair, breaking and repairing buildings and pots, repairing relationships, and plants repairing themselves.

See the theme video.

You can see the UCLan Game Jam link here.

https://globalgamejam.org/2020/jam-sites/university-central-lancashire



























Lewis Wright, who organised the event at UCLan with Simon Ashcroft said, 'Everyone smashed it out of the park, cleanest game jam I've been a part of. Every group had fun and a working game by the end of it.'

They recorded all of the games that were shown at the end, including the game dev ones as a comparison. They're gonna make a show-reel out of them for us all to see on the YouTube channel.

They even tidied the studio room before they left. Time for some well deserved sleep for them all. Wish I could have joined them this year as the comradery and sense of fun was evident as always as we watched them working away via Twitch TV. ☺️

So proud of you all!