Sunday, October 16, 2022

The First Fantasy Campaign - Update

Two weeks ago, on October the 1st, Dave Arneson would have been 75 years old. Sadly, as anyone reading this blog probably already know, he is not with us anymore. His birthday reminded me that I never wrote any update on the digitized version that I made last year, so I thought I should give a little update here.

The version is now fully finished. I have gone through every word of every page thrice and cleaned all the little details on all the maps up and added OCR so the whole book is searchable. After approximately 100 hours of work the whole thing has been made into a neat little .pdf of 28 MB (not much when you think about it when this is 600 dpi scans) which ended up being just as perfect as I had hoped for.

I sent the file to someone who is in contact with the Arneson Estate, but sadly I have not heard back from him in some time. Now that I think about it I should probably try and check up with him on whether they have received it.

In the end I don't expect anything in return for my work and just hope that this original print of the work can be made available at DriveThruRPG or a similar website so it is not just collectors that have access to this source of inspiration and so much of the context for the early days of fantasy RPGs. So if you have the rights to the book, or know those who do, or can make digital distribution possible, please contact me at the mail listed on my profile.

 

 

Friday, October 1, 2021

The First Fantasy Campaign - Digitized

Happy Dave Arneson day to all of you! In celebration of this day, I have an exciting announcement -- the one I was referring to yesterday.

The Announcement

A couple of months ago I won an eBay auction of the 1977 print edition wherein all illustrations were done by Dave himself. The book cost me $150 -- and yes, it really is that hard to obtain, though it was in rather good condition with both maps present. The books is beautiful and a unique insight into the early days of our hobby. One that I am truly sorry to see people being restricted from by its steep price.

 

Through the last couple of months I have busied myself with the creation of a digital PDF version of the whole book and have gone to great lengths at creating the best result I possibly could. I will return to this digitizing process below, but before that I would like to present my plans to you.

I learned from this blog post by Dave Arneson, that he owned all the rights to the book. Rights which I assume has been transferred to his estate. I therefore contacted Kevin McColl, who hosts Dave Arneson's official website, and he agreed to send it along to the Dave Arneson Estate when I am finished with the PDF. I don't expect anything in return, but hopefully, the finished PDF will make it easy for the Dave Arneson Estate to upload the book (eg. to DriveThruRPG) and make it available again for everyone to enjoy.

I would say that I am about 75% finished with the whole process, but with my slow rate going through this I expect some more weeks before I will be done (The work has taken me 30+ hours until now and I don't have a lot of spare time currently). I will of course update you all when I get done.

Here are two samples of completed pages of the book:

The process

I have been photo editing for a long time (as seen from my previous posts as well), but quite recently learned about a great tool for taking on bigger projects like the scans of books. ScanTailor can, among other functions, organize, crop, rotate, de-skew and optimize images for the creation of beautiful PDF files with a small size. A lot of these functions can even be done automatically, though for some books it works a lot better than for others.

The whole process of digitizing this book can be listed like so:

  1. Scan all 96 pages + cover + two maps equivalent to 8 pages in best scanner resolution
  2. Go through all pages in ScanTailor to create preliminary PDF
  3. Read through the whole book and mark printing errors, speckles, spots for editing
  4. Retouch all marked places in Affinity Photo
  5. Separate the grid from the maps in Affinity Photo for 18 pages (plus the equivalent of 8 pages from the two separate maps) to get both grid and map represented in a 3 color index image compression.
  6. Go through the retouched pages in ScanTailor to create the final PDF
  7. OCR to make the text searchable and copy/paste-able
  8. Create PDF bookmarks for all headings

At the moment, I am through 75% of the pages in step 5 though it is a slow process. Retouching and editing of each image takes me at least half an hour. For most book purposes, steps 1, 2, 7 and 8 is enough to get a good usable PDF. In this case, however, I wanted the book to look as good as possible. This is two examples of the fixes I did throughout the whole book:

If anyone is interested I will gladly post some guide or detailed instructions at some point. Just ask in the comments

Thursday, September 30, 2021

Dave Arneson's True Genius - First impressions

In celebration of Blackmoor week and Dave Arneson day tomorrow I have occupied myself with the book Dave Arneson's True Genius by Robert Kuntz.

I only received the book quite recently, since I had put it off for a while due to the shipping and import tax in Europe. The book is only available from USA and our postal service have some steep fees for their service. For an item that is only $15, the shipping+VAT+fee can easily triple or quadruple the cost. Luckily, I was offered the book as a private gift (no VAT on those) and for that I am thankful! Now that I read the book, I am so glad I finally have it.

I wanted to do a full review of the book. I did not think this would take much time since it is only 69 pages. Boy was I wrong. The book is so densely written that there is easily enough review material for a whole series of blog posts. Additionally, I have been hard at work recently on another Blackmoor project of mine of which I will have exciting news to share tomorrow. All things considered, this post will end up being a "first impressions" and the rest of the review will have to wait a bit until I have some more time.

First impressions: What a wonderful and thought-provoking little book. The intricate writing, grand concepts, systems, and scientific approach to a subject such as the invention of role playing games makes this a really unique read. The subject and ideas are fantastic and I eagerly look forward to the expansion of this subject that hopefully will be published in the form of Kuntz' A New Ethos in Game Design.

The writing is passionate, quirky and relevant, though the book certainly doesn't do much to communicate the message in an easily consumable way. The first time I read it, some passages were almost incomprehensible. I have seen people call it unreadable, but that is really not the case. I can imagine that my engineering textbooks on continuum mechanics would be unintelligible to anyone other than engineers (Even as a student they were close to I will tell you!). The point is that the book treats advanced subjects such as Systems Science and Game Theory and it does not make any effort to explain the majority of the terms and concepts that it uses.

In connection with this post, I have started reading the book again and I must say, the second time through is a much easier read. A read that is worth it. The task that Kuntz has set himself is admirable, not to say genius in itself and I can imagine I will read the book many times more -- at least until A New Ethos in Game Design is released.

I don't have a foundation in either Systems Science or Game Theory so that is where I will start. I have compiled the references from the citations in the book and will read each of them before I return to the book again. I have now read The Architecture of Complexity and about half of The Sciences of the Artificial. Not only does some of Kuntz' concepts make a lot more sense already but the material is riveting -- The Architecture of Complexity was downright mind blowing! 

I feel like the indirect push into reading the references of the book has genuinely done me a bigger favor than if Kuntz had spent a lot of time explaining every concept in the book itself.

Bibliography of DATG:

Gem appraiser

I wanted to write a blog post today in celebration of Blackmoor week and Dave Arneson day tomorrow. Then I saw this draft of a blog post and thought, why not just finish it to get myself into gear before writing the actual post. There's not that much to say in this post anyway.

Ages ago I wrote a blog post detailing how to embed small scripts of code written in java script into a blog post. Last time i showed how to do one that could roll on a random table. I thought that would be the most useful since so many people publish random table constant on their blogs. With a few simple steps each of those posts could be interactive.

Since last time I have found out that you don't even need to host the code anywhere else that directly in the text field here on blogger. The code from the example below can be coped and pasted directly in between the lines of text and it will produce the program embedded into the post.

The program is a simple calculator of gem prices, that could easily be expanded upon. I thought I would make it as simple as possible so that most people would understand what the code does. The idea of the program is to be able to put a price on complex items. Instead of a simple table, the DM could set up parameters, such as quality, color, size, nature etc. and their influence on the price of the gem. For example the size might multiply the value of the gem exponentially. They might even put in a factor for the place in the world or a random factor representing luck. When this has been set up, the DM would always be able to price any gem just by inputting its details.

 


I think this is a great idea since objects of wildly varying prices can be put into the world, and their value will not be up to DM fiat, but instead will be a constant of the world. The DM doesn't have to produce a list of prices of all combinations since every combination can be appraised and will always give the same answer. 

Type of gem

Number of gems

Size of gem oz.

Press appraise to get a price

The code for the above program is the following. Try to go to HTML view while editing a blog post and pasting it in (though please note that java script will not work when the post is rendered as a preview).

<p style="color:grey">Type of gem <select id="gem_type" value="diamond"><option value="1">Diamond</option><option value="pearl">Pearl</option></select>
<p style="color:grey">Number of gems <input id="gem_no" type="number" value="1" step="1" /></p>
<p style="color:grey">Size of gem <input id="gem_size" type="number" value="1.2" step="0.1" /> oz.</p>
<button onclick="appraise()">Appraise</button>
<p style="color:grey"><span id="gem_result">Press appraise to get a price</span></p>

<script>
function appraise() {
	var gemTypeSelection = document.getElementById("gem_type")
	var gem_type = gemTypeSelection.options[gemTypeSelection.value].text;
  	var gem_no = document.getElementById("gem_no").value;
	var gem_size = document.getElementById("gem_size").value;
  	var price = Math.round(gem_no * gem_size * 277.78).toLocaleString('en');
	document.getElementById("gem_result").innerHTML = "The " + gem_type + " is worth " + price + " gold pieces";
}
</script>

Addendum: I just realized that you need to enable "Interpret Typed HTML" In the blogger settings. See the last post on programming JavaScript for instructions on how to enable the setting.

Thursday, May 2, 2019

Clean maps of B2 Caves of Chaos and wilderness


So I wanted to learn how to use Inkscape, and I thought that I might as well do something productive while learning it. I have been preparing to run B2 Keep on the borderlands for a while and the blurred washed out map in my PDF version really didn't do it for me. I had trouble even seeing the numbers in the rooms.

So I decided to reproduce the maps in vector format so it can be printed at any size and still be sharp and crisp. I also wanted to make a version of the wilderness maps based on hexes as i find them far easier to run at the table. Below I will explain the maps in more detail, but if you just want the maps they can be downloaded at the bottom of the page.

The Wilderness

I have discretized the map into hexes. I decided on a scale of 1 mile per hex as this scale could contain all the general features of the original map and sized the map to fit exactly with the scale. In the image below you can see how they fit on top of each other

Wilderness map around B2 keep on the borderlands

I wanted to make it all fit inside a 6 mile hex so I expanded on it a little. You could also just decide that the hexes are 6 miles instead if you want a trip to the caves to take around a day. This would make the super hex 36 miles

The Caves of Chaos

Maps of the Caves of Chaos from B2 The Keep on the Borderlands

For the Caves of Chaos I only wanted to change three things. First I wanted all the features to be clear and easily readable and able to be printed in large size. Second, I wanted to separate the above ground features and the below ground ones since they are not used at the same time and only clutters the map. Third, I wanted a handout version so new players could have a good starting point for their own mapping. It should also be noticed that only the DM version of the above ground map contains the caves that are hidden by foliage and the identifying letters for the caves (I didn't want them to feel there was any order they should explore them in). The PDF of the caves therefore comes in three pages:

  1. Below ground
  2. Above ground
  3. Player handout

The Keep

I did not make a version of the map of the Keep, since the only problem i had with the original (the grid) has already been taken care of by Dyson in his version.

The Maps

The maps can be downloaded a the links below.
Caves of Chaos A4
Caves of Chaos Letter
Wilderness map


I hope the maps can be of use

Monday, March 11, 2019

Using simple JavaScript on blogger


I recently became interested in learning JavaScript. I have done a lot of programming before but for some reason it only recently dawned on me how easy and powerful it is to use JavaScript on the web. Much to my delight I found out that Blogger fully supports it. This means that all the Excel functions, all the Random tables, all the house ruled home brewed calculation programs could be directly available and interactive right there on the blog posts themselves.

To introduce this to people that haven't tried JavaScript, or even tried programming I will show a small example of a function that rolls a random result from a table in 9 lines of code. The table used in this example are the first level encounter table from Basic D&D. It can be seen (and interacted with) below:

Wandering Monsters: Level 1

1-8 Acolytes
1-8 Bandits
1-8 Fire beetles
1-6 Dwarves
1-6 Gnomes
2-8 Goblins
1-4 Green slimes
3-18 Halflings
1-10 Killer Bees
4-16 Kobolds
1-3 Gecko Lizards
2-8 Orcs
1-10 Giant Shrews
3-12 Skeletons
1-6 Cobra Snakes
1-4 Crab Spiders
3-18 Sprites
1-10 Stirges
1-8 Traders
2-12 Wolves






Preparations for JavaScript on a blog post

To allow blogger to interpret the markup and code you are about to add, there is only one thing you need to do. In the post editor, you need to enable the setting "Interpret typed HTML" as shown below in the picture. For this example it will also be advantageous to enable "Press "Enter" for line breaks" to make sure there are line breaks in your table. (that is how my function known where to separate the table)
Settings to enable "interpret typed HTML" on blogger

The HTML markup

My function works by reading content directly from the blog post, manipulating it, and putting the result back into the blog post. Therefore, it needs to know where each element is located. To do this we use a thing called id in HTML. If you go to the HTML of your blog post (upper left corner) you will see what is called tags. The ones that start with < are opening tags and the ones that start with </ are closing tags. Everything in between those two are the tagged content. To tag a line of text as a paragraph for example we would do this:
<p>This is a paragraph</p>
If we then want to give the paragraph the id, this_is_an_id, we would write:
<p id="this_is_an_id">This is a paragraph</p>
The function I have written is hard coded to look for elements with the ids random_table and table_result so we need to use these ids for the function to work. The table is therefore tagged like so:
<div id="random_table">
1-8 Acolytes
1-8 Bandits
1-8 Fire beetles
1-6 Dwarves
1-6 Gnomes
2-8 Goblins
1-4 Green slimes
3-18 Halflings
1-10 Killer Bees
4-16 Kobolds
1-3 Gecko Lizards
2-8 Orcs
1-10 Giant Shrews
3-12 Skeletons
1-6 Cobra Snakes
1-4 Crab Spiders
3-18 Sprites
1-10 Stirges
1-8 Traders
2-112 Wolves</div>
and the empty place where the result is wanted is tagged like so:
<div id="table_result">
</div>

The button

A button can be inserted using the HTML code below. Whatever is entered as the attribute onclick is the name that the button will be searching for when it is clicked, so we want to make sure there is a function named random_table_roll(). As you might have guessed from the example, the content of the button tags is the text shown on the button:
<button onclick="random_table_roll()">Roll</button>

The JavaScript

The JavaScript itself is shown below. To keep the colours and make it easily readable I just went and took a screenshot. If you want to view or copy the actual file it is located here. You can use any text editor to read or write these files as long as you give it the file extension ".js". I have explained each line in the code but in short, the function does the following: (1) read whatever is given the id random_table, (2) separate each line and clean up line breaks and (3) spit out one random line by inserting it into whatever is given the id table_result.
The random table roll javascript function
To attach the script to your blog post, there are two ways. First, the actual lines of the script could be pasted directly into the HTML. You only need to tag the whole script with the opening tag <script> and the closing tag </script>. What I would suggest however, is hosting it somewhere else. This is necessary if you want to reuse your script on other posts without copy/pasting it all, it also lets you update the script everywhere at once and it generally lets you avoid pasting huge chunks of code into your HTML. I have hosted this example function on my google drive using the directions found here.

To link an externally hosted script to your HTML you put the following line of code in and change the link to the direct link to your script instead. (without any line breaks in the src attribute)
<script src="https://drive.google.com/uc?export=view&id=1DBvamKwCSeutLiSbkXJX0RiGVtn7OvVM" type="text/javascript"></script>

Finished part to put into blog post

The below HTML is all that was added to this post to create the interactive table:
<script src="https://drive.google.com/uc?export=view&id=1DBvamKwCSeutLiSbkXJX0RiGVtn7OvVM" type="text/javascript"></script>
<div id="random_table">
1-8 Acolytes
1-8 Bandits
1-8 Fire beetles
1-6 Dwarves
1-6 Gnomes
2-8 Goblins
1-4 Green slimes
3-18 Halflings
1-10 Killer Bees
4-16 Kobolds
1-3 Gecko Lizards
2-8 Orcs
1-10 Giant Shrews
3-12 Skeletons
1-6 Cobra Snakes
1-4 Crab Spiders
3-18 Sprites
1-10 Stirges
1-8 Traders
2-112 Wolves</div>
<button onclick="random_table_roll()">Roll</button>
<div id="table_result">
</div>





Tuesday, February 26, 2019

A realistic magnitude for the extreme human pushing force

Following Simon's latest post On the classic crushing trap i wondered why on earth the sliding block in the false entrance to the Tomb of Horrors was made so big. With a mass of 170 tonnes, it weighs 17 times as much as the biggest blocks used in the pyramids.

To keep characters locked inside until they starve to death, this certainly seem overkill (at least if you are forced to figure out how the hell this gigantic this moves seemingly on its own) But how how strong can we actually assume that characters in D&D are? Would they, given enough men, be able to push it?

The AD&D DMG explains that a character will be able to lift the equivalent of this own body weight over his head with a strength score of 18. For each percentage point of exceptional strength above 18, he will be able to lift more up until the limit of around 500 lbs (230 kg) if the character were to weigh 210 lbs. This is actually pretty spot compared to the real world as the current record according to Guinness is at 233 kg. (or 2,3 kN).

The AD&D DMG, however, produces no numbers that i can find of how much weight a character might push. So what kind of pushing force can a human being actually produce? We can start by looking at real world weight lifting records to get an impression of how much force the muscles in a human body is capable of. If we assume ideal conditions we should start by looking at bench press records for arm pushing strength and leg press records for leg pushing strength. These are 488 kg (1075 lbs) and 1118 kg (2465 lbs) respectively, giving a 1606 kg total. or 15,7 kN. This number would certainly be an extreme upper limit of the human muscles considering that no reducing factors are considered and the muscles are seen at their individual limits.

In engineering we often use the terms of upper and lower bound solution meaning that the real solution must be in between these two, so looking at the before mentioned records of actual weight lifting where the contestant also has to balance whatever he or she is lifting we are looking at only 15% of the extreme solution. It can therefore be concluded that the actual maximum pushing force of the human body lies between 2,3 kN and 15,7 kN.

The factors that determine where the actual maximum lies would be balance, footing, inclination and the strength of human bones. First, even though pushing an object is not the same as lifting something over your head, there is still some sort of balance that must be kept. Second, the limit is also strictly subject to the footing since you would slip or slide when the limit of the friction force between the floor and the soles were met by the pushing force. This factor can be mitigated by pushing something vertically over your head, but then balance becomes more of an issue. Third, unless you are pushing something directly over your head, not all of the force you create will be translated horizontally. The force will also have a vertical component. Last, The maximum forces found above was found by simply adding the maximum force of the muscles in the legs and arms together. I have seen videos of men breaking their own bones from the force of their arms alone, so it seems very plausible that the combined force of two muscle groups could break bones before reaching their extreme.

So in the end, there are too many factors to make a more precise presumption than a feeling that going over 50% of the upper bound solution would seem too unrealistic as there are many factors that will always apply. So even though this can only serve as a figure of magnitude of the maximum pushing strength of the human body, A force of 8 kN shouldn't be too unrealistic.