Yesterday I learned about an ongoing challenge to create procedurally generated castles, over the procedural generation reddit. I’m a bit too late to the party but I thought I’d get in anyways.
I basically intend to generate topdown 2D multi level castles, similar to these found in Ultima 5 (the best game of the Ultima series).
Empath Abbey
So I went back to check the maps from the game in order to dissect their structure. You can find them here (don’t know for how long, doesn’t look like a stable location). I’m not sure who made this site, but it’s very nice 🙂
In Ultima V, the best game of the Ultima Series, most of the cities are walled and the castles and keeps have been improved greatly from Ultima IV. This is my structure breakdown, where I included elements from castles, keeps and even some walled towns:
Overall structure
32×32 tiles
A wall covers all 4 sides
Castles are a compact structure, there’s no outer and inner wall.
Overall castle structure is symmetrical by the y-axis
There may be a moat surrounding the castle
Most castles have a central structure, be it a courtyard or a hall
Stories
Castles have up to 4 floors plus a basement
The bulk of the castle resides on the basement plus the first 2 floors
Floor 3 is used for the tower top of the towers and optionally the ceiling passageways connecting each
In some castles this structure is bigger, having most of the castle ceiling as a walkable surface instead of roof.
Some other castles have floor 3 as a big structure similar to floor 2, in which cases roofed walls won’t show with crenellations
Some central features such as a big tower can cover floor 3 and 4.
From high floors you can see the roof of lower floors, or the lower floor itself if there’s no roof.
Outer walls in floors 3 and 4 are shown with crenellations, they may also be decorated with statues
Towers
There are towers on each corner
Towers are connected either by covered corridors, halls or walkable wall borders. They may be connected by any of the stories they cover
Sometimes all 4 towers are connected, other times it’s only two (keeping the symmetry of the plans)
Towers are multi stories (often 3 stories) and have small cross shaped windows looking out.
Atop the towers there may be cannons and cannon balls.
Towers have stairs allowing climbing to the different levels.
Smaller Keep
Some smaller keeps may be just the four towers, the rooms below them, the halls or corridors connecting them and a central feature. They may be 1 or 2 stories.
Entrances
All castles have an entrance on the south side, some of them have an additional one on the north side.
The main castle entrance may be protected from the upper floors with cannons.
Entrances are located in the middle of the map and may have floor or grass.
There may be a drawbridge over a moat in the entrance.
Some castles have an entrance hall connecting to the central feature, in that case there may be defensive cross windows on it.
There may be lamps lighting the entrance
Courtyards:
A fountain or a well in the middle.
May have more nearby fountains in x, y or complete symmetry.
May have a small lake around the fountain
Grass with trees
There may be floor connecting with close rooms, or a dirt walkway around it.
Commonly produce a “hole” in upper levels
Main Halls
They have floor, most of times different than the used in the rest of the castle.
They may have a fountain the middle as well as a fireplace.
Rooms:
Staff’s Living quarters: With a lot of beds and lockers for the people’s things.
Guest rooms: Including one or two beds, mirror, sometimes even a piano and a fireplace.
Storage rooms: With lots of barrels and boxes. Commonly placed in the basement.
Forge: Contains an anvil and fuelled fire pit. Commonly placed in the basement.
Prison Cells: Divided in smaller locked barred rooms, mostly empty but may have things such as handcuffs and a watch station with a table and a chair.
Dungeon: Some castles have a full floor devoted to the dungeon, with lots of prison cells and torture devices.
Dining rooms: With different size and quality of dining tables and chairs, as well as lighting. Adornments such as fireplaces, chandeliers. Tables may or may not be served
Kitchens: Commonly close to the dining rooms, including stored food, tables, barrels of wine, ovens and cooking places.
Throne room: Long hallway with a carpet and a throne in the end. Hallway may have columns and torches on the sides. In addition to the throne, there may be additional chairs or magic instruments. They are always oriented to the north.
Castle Lord room: Most of times placed on a central location, it includes a bed, mirror, sometimes a piano, clock, bookshelf, fireplace.
Terraces:
Located on high places such as 3rd or 4th stories.
They may have a telescope and the flag of the castle.
May have a firepit and tiled floor.
Rooms may be connected with doors, open doorways or just open spaces.
Halls:
Long and wide rooms connecting rooms or towers
May have adornments such as torches, plants, columns and fountains.
Following with the same process I made for last year’s Ultima Underworld like generator, next step would be creating a high level castle layout generator based on this observed structure and given some generation parameters.
I am not sure I’ll be able to hit the deadline with all the scope, I’m aiming to complete the “first floor” generator.
By the way, these guys ran a competition last month to create a procedural pirate map generator. Check out the results!
The tools are now open source, you can find them here, they contain an automation of all the findings so far, taking mostly Vehek’s and DDS input along with a lot of experimentation and fiddling.
Unlike most SNES RPGs (?), dialog in the game is a bit complex because the options the player can choose depends on things he has done in the game or things he has already talked about with someone. This is all represented with a set of flags. I have been trying to complete the list as well as adding comments to the disassembled code in order to have a complete understanding of all of the conversations’ flow.
There seems to be a total of 36 “dialogs” into the game (either that or there’s a different set of rules for other dialogs).
Dialogs 11 and 35 seems to have a lot of blank space in the end
Dialogs 20, 23, 27 and 36 generate errors when loading the dialog options
Dialogs 22, 23, 24, 25 and 26 seems to be loading dialog options from other place since I’m unable to read them
These dialogs have been analyzed for flags completely:
15, Inara Chief of the Pindiro
16, Inatnya from the Kurak
21, Mosagan from the Yolaru
Topics
Still not sure if the text extraction is 100% accurate; specially on the final lines on each conversation things starts going a bit crazy. Can only confirm this by inspecting the dialogs inside the ROM. DDS already pointed out a possible inaccuracy, I may have to check if our assumptions about the ShiftJIS encoding and the charset loading are correct all the times.
Need to find an way to hack the ROM to test the dialogs quickly, somehow pointing Intanya to any dialog I need.
Still not sure about the termination sequence I’m using for each dialog; basically I’m assuming a 0xB8 (LOAD_DIALOG_OPTIONS) means the current dialog has ended and the next one has begun. The thing is not all dialogs ends the same but that might be ok.
Gotta solve the issue of dialog options loading for dialogs 20+
There’s still a long way ahead, but at least we are doing some progress 🙂
However, with a new batch of info from him and after a lot of further ROM digging, I made further advancement on the script extractor (ROM disassembler?) we get closer and closer!
The google translate integration I added has been very helpful to figure out how everything fits together… here’s the current dump from dialog 16
-- DIALOG 16
-- CHARSET ����はいえ熱夢アイエラフキンジミーディスナウトヨルリテム名前仕事治す部族さようならおかり、バタ。ニャの魔法がにオド谷言葉を話力与た長間冒れてだもっくこやろる決し手放で弟子ち大き傷負倒発見へ連来ばわ中と呼んまず彼探出帰酋本当感謝ぞ村戦士総娘東あそ者耳入ほ仲精霊不思議居場所知教遠住石都西クカ恐ぬ道沿行け通じ南隠里約束誰突止め助ロ会聞チョコパ捧げ物強授ポ私目戻自分生ッ祈師つ今使必要ぐ我!ズ苦痛取除…機嫌丈夫ど友み報告加護
160D02: IF 0226 JUMP 160D0B
160D07: XJUMP 1590B1
160D0B: LOAD_DIALOG_OPTIONS 02BC(熱 - Heat) 02BD(夢 - Dream) 02BE(アイエラ - Aiera) 02BF(ラフキン - Lufkin) 02C0(ジミー - Jimmy) 02C1(ディスキキ - Disukiki) 02C2(ナウアトラ - Nauatora) 02C3(ヨラルー - Yoraru)
160D1E: LOAD_MORE_DIALOG_OPTIONS 02C5(トーテム - Totem) 82C6(名前 - given names) 82C7(仕事 - Work) 02C8(治す - Cure) 82C9(部族 - Tribe)
160D2B: IF_FLAG ALREADY_TALKED_WITH_INTANYA DO:
160D2E: JUMP96 160D4D
160D31: SETBIT AD
160D34: PRINT おかえり、アバタール。
-- ENGRISH: Welcome back, Avatar.
160D4A: JUMP8C 160E2F
160D4D: PRINT インターニャの魔法が、お前にイーオドンの谷の言葉を話す力を与えた。
-- ENGRISH: Magic of the inter-Nha is, given the power to speak the word of you to Iodon of the valley.
160D8F: LINE_BREAK
160D90: LINE_BREAK
160D91: PRINT アバタールよ。お前は長い間、熱に冒されていたのだ。だが、もう、すっかりよくなった。
-- ENGRISH: Avatar. You are he a long time, it had been affected by the heat. But, the other, I became completely well.
160DE3: LINE_BREAK
160DE4: PRINT お前に、このトーテムをやろう。この谷にいる間は、決して手放すでない。
-- ENGRISH: To you, to try to do this totem. While in the valley, and are not let go any way.
160E28: SET ALREADY_TALKED_WITH_INTANYA
160E2B: SET_DIALOG_OPTIONS SHOW 10 (名前 - given names) SHOW 1 (熱 - Heat)
160E2F: WAIT_FOR_INPUT
160E30: IF_SELECTED_DIALOG_NOT (熱 - Heat) DO:
160E33: JUMP96 160EF0
160E36: SET_DIALOG_OPTIONS HIDE 1 (熱 - Heat) SHOW 2 (夢 - Dream)
160E3A: PRINT インターニャの弟子たちが、大きな傷を負って倒れているお前を発見して、ここへ連れて来た。
-- ENGRISH: Disciples of the inter-Nha is, to discover you have fallen owed a large scratch, was brought here.
160E90: LINE_BREAK
160E91: PRINT インターニャ、お前の傷を治した。だが、しばらくは熱に冒されて、うわ言を言っていた。夢の話だ。
-- ENGRISH: Inter Nha, it cures you of scratches. But it had been a while been affected by the heat, saying delirium. It is a dream of the story.
160EED: JUMP8C WAIT_FOR_INPUT
160EF0: IF_SELECTED_DIALOG_NOT (夢 - Dream) DO:
160EF3: JUMP96 160F59
160EF6: SET_DIALOG_OPTIONS HIDE 2 (夢 - Dream) SHOW 3 (アイエラ - Aiera) SHOW 4 (ラフキン - Lufkin) SHOW 5 (ジミー - Jimmy)
160EFC: PRINT お前は夢の中で、アイエラとラフキンとジミーの名を呼んでいた。まずは、彼らを探し出すことだ。
-- ENGRISH: You are in a dream, was calling Aiera and Lufkin and Jimmy's name. First of all, you can find them.
160F56: JUMP8C WAIT_FOR_INPUT
160F59: IF_SELECTED_DIALOG_NOT (アイエラ - Aiera) DO:
160F5C: JUMP96 16102E
160F5F: SET_DIALOG_OPTIONS HIDE 3 (アイエラ - Aiera)
160F62: IF BITS SET 87 DO:
160F65: JUMP96 160FBB
160F68: PRINT お前がアイエラを連れて帰ってくれたことを、酋長は本当によろこんで感謝していたぞ。
-- ENGRISH: that you has me back brought Aiera, chief was grateful Do really pleased.
160FB8: JUMP8C 16102B
160FBB: PRINT この村の戦士たちが、総出でアイエラを探している。アイエラは酋長の娘なのだ。
-- ENGRISH: Warriors of this village, looking for a Aiera in full force. Aiera's the daughter of the chief.
161005: LINE_BREAK
161006: PRINT アイエラをさらったのはウラリ族だ。
-- ENGRISH: It was kidnapped Aiera It 's Urari group.
161028: SET_DIALOG_OPTIONS SHOW 9 (トーテム - Totem)
16102B: JUMP8C WAIT_FOR_INPUT
16102E: IF_SELECTED_DIALOG_NOT (ラフキン - Lufkin) DO:
161031: JUMP96 1610DC
161034: SET_DIALOG_OPTIONS HIDE 4 (ラフキン - Lufkin) SHOW 8 (ヨラルー - Yoraru)
161038: PRINT この村の東にある、ヨラルー族の村に、そのような名前の者がいると、インターニャの耳に入っている。
-- ENGRISH: To the east of this village, in the village of Yoraru group, and there are such name who, I have entered into the ears of the inter-Nha.
161096: LINE_BREAK
161097: PRINT ラフキン、ほかの仲間を探すのに、とても力になると、精霊たちは言う。
-- ENGRISH: Lufkin, and to look for the other fellow, and so become a force, spirits say.
1610D9: JUMP8C WAIT_FOR_INPUT
1610DC: IF_SELECTED_DIALOG_NOT (ジミー - Jimmy) DO:
1610DF: JUMP96 161144
1610E2: SET_DIALOG_OPTIONS HIDE 5 (ジミー - Jimmy)
1610E5: PRINT インターニャ、不思議な夢を見た。夢は、ラフキンが、ジミーの居場所を知っていると教えてくれた。
-- ENGRISH: I saw Inter Nha, a strange dream. Dream, Lufkin has taught me to know the whereabouts of Jimmy.
161141: JUMP8C WAIT_FOR_INPUT
161144: IF_SELECTED_DIALOG_NOT (ディスキキ - Disukiki) DO:
161147: JUMP96 161186
16114A: SET_DIALOG_OPTIONS HIDE 6 (ディスキキ - Disukiki)
16114D: PRINT とても遠くに住んでいる部族だ。石の都ナウアトラの西だ。
-- ENGRISH: It is a tribe who live in very far away. It is west of the stone city Nauatora.
161183: JUMP8C WAIT_FOR_INPUT
161186: IF_SELECTED_DIALOG_NOT (ナウアトラ - Nauatora) DO:
161189: JUMP96 1611FD
16118C: SET_DIALOG_OPTIONS HIDE 7 (ナウアトラ - Nauatora) SHOW 6 (ディスキキ - Disukiki)
161190: PRINT ナウアトラ族は、彼らの石の都を、ティクティカトルと呼んでいる。
-- ENGRISH: Nauatora family, is the capital of their stone, is called Thich Thi Quatre.
1611CE: LINE_BREAK
1611CF: LINE_BREAK
1611D0: PRINT ナウアトラの西には、ディスキキの村がある。
-- ENGRISH: To the west of Nauatora, there is a village of Disukiki.
1611FA: JUMP8C WAIT_FOR_INPUT
1611FD: IF_SELECTED_DIALOG_NOT (ヨラルー - Yoraru) DO:
161200: JUMP96 16127A
161203: SET_DIALOG_OPTIONS HIDE 8 (ヨラルー - Yoraru) SHOW 7 (ナウアトラ - Nauatora)
161207: PRINT 恐れを知らぬ戦士の部族だ。この村から道に沿って東へ行け。
-- ENGRISH: It is a warrior tribe that fearless. And go to the east from the village along the road.
16123F: LINE_BREAK
161240: LINE_BREAK
161241: PRINT 道はヨラルーの村に通じている。その南が、ナウアトラだ。
-- ENGRISH: Road leads to the village of Yoraru. The south, but Nauatora.
161277: JUMP8C WAIT_FOR_INPUT
16127A: IF_SELECTED_DIALOG_NOT (ウラリ - Urari) DO:
16127D: JUMP96 16135E
161280: SET_DIALOG_OPTIONS HIDE 9 (トーテム - Totem)
161283: PRINT ウラリ族は隠れ里に住んでいる。精霊たちも、その場所を教えてはくれない。
-- ENGRISH: Urari family lives in Kakurezato. Spirits also, do not you tell me the location.
1612C9: LINE_BREAK
1612CA: PRINT だが、精霊は約束してくれた。ぐかがかならず、ウラリの村を我き!ズ、アイエラを苦け出すとな。
-- ENGRISH: But, Spirit was promised. Ingredients or not always, we-out of the village of Urari! Figure, Issuing only click the Aiera.
161324: LINE_BREAK
161325: PRINT アイエラを苦けたければ酋長のア痛痛ンに取って話を除け。
-- ENGRISH: If longer Nigake the Aiera and except for the story to take to the A pain pain down chief.
16135B: JUMP8C WAIT_FOR_INPUT
16135E: IF_SELECTED_DIALOG_NOT (トーテム - Totem) DO:
161361: JUMP96 161427
161364: SET_DIALOG_OPTIONS HIDE 10 (名前 - given names)
161367: PRINT このトーテムに…機嫌ラトルか丈インドを夫ど友にすると、み力な魔法の力をお前に報けてくれる。
-- ENGRISH: If you are etc. husband ... mood Rattle or length India in this totem friend, can you Hoke the power of attractive magic to you.
1613C1: LINE_BREAK
1613C2: PRINT ヨ告を夫ど友にすると、お前を加の護の前に?してくれる。
-- ENGRISH: When Yo told the husband etc. friend, can you in front of Mamoru of pressure to you.
1613F8: LINE_BREAK
1613F9: LINE_BREAK
1613FA: PRINT このほかのトーテムは、??の力で探すのだ。
-- ENGRISH: This addition to the totem, it looks at the power of.
161424: JUMP8C WAIT_FOR_INPUT
161427: IF_SELECTED_DIALOG_NOT (名前 - given names) DO:
16142A: JUMP96 161467
16142D: SET_DIALOG_OPTIONS HIDE 11 (仕事 - Work)
161430: PRINT ?まれたときから、ずっとインターニャと呼ばれている。
-- ENGRISH: From the time Mareta, it has been much called inter Nha.
161464: JUMP8C WAIT_FOR_INPUT
161467: IF_SELECTED_DIALOG_NOT (仕事 - Work) DO:
16146A: JUMP96 1614D5
16146D: SET_DIALOG_OPTIONS HIDE 12 (治す - Cure)
161470: PRINT クーラ?ク族の?とう?をしている。精霊の言葉を除き、傷?いた者や、熱に冒された者を治す。
-- ENGRISH: We have a party of family Kuraku. Except for the words of the spirit, to heal wounds have a person or a person who is affected by heat.
1614C8: IF BITS SET AD DO:
1614CB: JUMP96 1614D2
1614CE: SET_DIALOG_OPTIONS SHOW 13 (部族 - Tribe) SHOW 1 (熱 - Heat)
1614D2: JUMP8C WAIT_FOR_INPUT
1614D5: IF_SELECTED_DIALOG_NOT (治す - Cure) DO:
1614D8: JUMP96 16163A
1614DB: SET_DIALOG_OPTIONS HIDE 13 (部族 - Tribe)
1614DE: *AE*
1614DF: *24*
1614E0: *1D*
1614E1: *1D*
1614E2: *25*
1614E3: *1D*
1614E4: JUMP96 1615A2
1614E7: PRINT 加には、なんでも治す、大きな力がある。さいわい、?のお前には、その力を?う??がない。
-- ENGRISH: In addition, the cure anything, there is a large force. Fortunately, you in the, and there is no cormorant its power.
16153D: LINE_BREAK
16153E: PRINT もし、インターニャの苦けがいるときは、お前にやったトーテムを?い、す?に帰ってくるのだ。
-- ENGRISH: If, when there are only bitter inter Nha, the stomach totem've done to you, you come back to the nest.
161596: IF BITS SET AD DO:
161599: JUMP96 16159F
16159C: SET_DIALOG_OPTIONS SHOW 10 (名前 - given names)
16159F: JUMP8C 161637
1615A2: *A2*
1615A3: *1D*
1615A4: *1D*
1615A5: *25*
1615A6: *1D*
1615A7: PRINT 精霊よ、?に力を与えたまえ?
-- ENGRISH: The Pearl River giving spirit by the force to
1615C3: LINE_BREAK
1615C4: LINE_BREAK
1615C5: LINE_BREAK
1615C6: PRINT クク?の精霊よ、これなるアバタールの??を?り?き、その傷をいやしたまえ??
-- ENGRISH: I spirit of Kuku, this becomes the Avatar of Riki, before you have healed the wound
161612: LINE_BREAK
161613: PRINT 精霊の??はよかった。もう大??だ。
-- ENGRISH: Spirit's was good. It is already large.
161637: JUMP8C WAIT_FOR_INPUT
16163A: IF_SELECTED_DIALOG_NOT (部族 - Tribe) DO:
16163D: JUMP96 1616F7
161640: SET_DIALOG_OPTIONS HIDE 14 (熱 - Heat)
161643: PRINT インターニャは、?の部族にも?だちがいる。?んな、インターニャにいろいろ??してくれる。
-- ENGRISH: Inter Nha is, there are Modachi to tribes. Do such, I me lot to Inter Nha.
16169B: LINE_BREAK
16169C: PRINT ここはクーラ?ク族の村だ。酋長はア痛痛ン。まだ取ってないなら、あいさ??らいしておけよ。
-- ENGRISH: Here is the village of Kuraku group. Chief nitrous pain pain down. If you have not taken yet, and Oke was Aisarai.
1616F4: JUMP8C WAIT_FOR_INPUT
1616F7: IF_SELECTED_DIALOG_NOT (さようなら - goodbye) DO:
1616FA: JUMP96 161729
1616FD: PRINT 精霊の??を?っているぞ、アバータール。
-- ENGRISH: Gonna have Tsu that the spirits, Abataru.
161725: SETBIT AD
161728: (BLANK)
Notes:
1614DE: Seems to be code for “Cure wounds”
DDS pointed an issue with the charset being offset from a given character thus generating garbled japanese for the latter part of the dialog. Still looking for that issue.
What’s next?
Making sure charsets are correct (this involves checking the conversations in the game and double checking with the translator)
Going thru all the dialogs and figuring out the values for the flags that control the conversation’s flow.
Finding blocks of special code (for example the one used for Healing the player on Intanya’s conversation)
Determine any changes required on the ROM structure to add larger chunks of texts, optimize unneeded space (like the charsets maybe, and all the kanji graphics 🙂
Start thinking on the “reassembler”/script injector, the tool to inject the english texts into the ROM 😐
A cool guy called DDS has sent some info and prompted me to work back on the project, it seems he’s gone so far as to hack the game to use single sprites as letters instead of 4 sprites kanji, which is something extremely important for the translation.
Intanya speaks english
I have updated the Script extractor based on DDS’s findings:
Marking back newlines, which I had removed
Subroutines
0x8C (jump to)
0xC0 (set flag)
0x88 ~ 0xDO, unidentified
Grouping subroutines calls in groups of three bytes
Still figuring out the usage of 00 as a dialog termination sequence. Some times it’s there, some times it’s not. There are also some stranded bytes, probably some subroutines use a single byte or 3 bytes (?)
Also, the byte sequence after the charset is probably data instead of code, may be the dialog options are there (?)
I’m also integrating with Google Translate API to provide a rough translation, mainly to detect the point where the first dialog ends and nonsense starts.
Here’s the output so far:
<dialog id = '16'>
<charset> ����はいえ熱夢アイエラフキンジミーディスナウトヨルリテム名前仕事治す部族さようならおかり、バタ。ニャの魔法がにオド谷言葉を話力与た長間冒れてだもっくこやろる決し手放で弟子ち大き傷負倒発見へ連来ばわ中と呼んまず彼探出帰酋本当感謝ぞ村戦士総娘東あそ者耳入ほ仲精霊不思議居場所知教遠住石都西クカ恐ぬ道沿行け通じ南隠里約束誰突止め助ロ会聞チョコパ捧げ物強授ポ私目戻自分生ッ祈師つ今使必要ぐ我!ズ苦痛取除…機嫌丈夫ど友み報告加護</charset>
<94 '0226'>0B <8D 'B18D'><90 'B8AB'><BC 'BD02'>02 <BE 'BF02'>02 <flag 'C102'/>02 <C2 'C302'>02 <C4 'B942'><C5 'C602'>82 <C7 'C882'>02 <C9 'CA82'><C2 'A9C4'>10 <96 '8D4D'><9A '00AD'>
<text>おかえり、アバタール。<jumpTo '8E2F'/>インターニャの魔法が、お前にイーオドンの谷の言葉を話す力を与えた。<br/><br/>アバタールよ。お前は長い間、熱に冒されていたのだ。だが、もう、すっかりよくなった。<br/>お前に、このトーテムをやろう。この谷にいる間は、決して手放すでない。<flag '10A9'/></text>
<engrish>Welcome back, Avatar. Magic of the inter-Nha is, given the power to speak the word of you to Iodon of the valley. Avatar. You are he a long time, it had been affected by the heat. But, the other, I became completely well. To you, to try to do this totem. While in the valley, and are not let go any way.</engrish>
<BE '818A'>00 <C9 'BCB6'>82 <96 '8EF0'><BE '8201'>00
<text>インターニャの弟子たちが、大きな傷を負って倒れているお前を発見して、ここへ連れて来た。<br/>インターニャ、お前の傷を治した。だが、しばらくは熱に冒されて、うわ言を言っていた。夢の話だ。<jumpTo '8E2F'/></text>
<engrish>Disciples of the inter-Nha is, to discover you have fallen owed a large scratch, was brought here. Inter Nha, it cures you of scratches. But it had been a while been affected by the heat, saying delirium. It is a dream of the story.</engrish>
<B6 '82BD'><96 '8F59'><BE '8302'>84 85 00
<text>お前は夢の中で、アイエラとラフキンとジミーの名を呼んでいた。まずは、彼らを探し出すことだ。<jumpTo '8E2F'/></text>
<engrish>You are in a dream, was calling Aiera and Lufkin and Jimmy's name. First of all, you can find them.</engrish>
<B6 '82BE'><96 '902E'><BE '0003'><9B '0087'><96 '8FBB'>
<text>お前がアイエラを連れて帰ってくれたことを、酋長は本当によろこんで感謝していたぞ。<jumpTo '902B'/>この村の戦士たちが、総出でアイエラを探している。アイエラは酋長の娘なのだ。<br/>アイエラをさらったのはウラリ族だ。</text>
<engrish>that you has me back brought Aiera, chief was grateful Do really pleased. Warriors of this village, looking for a Aiera in full force. Aiera's the daughter of the chief. It was kidnapped Aiera It 's Urari group.</engrish>
<BE '0089'><jumpTo '8E2F'/><B6 '82BF'><96 '90DC'><BE '8804'>00
<text>この村の東にある、ヨラルー族の村に、そのような名前の者がいると、インターニャの耳に入っている。<br/>ラフキン、ほかの仲間を探すのに、とても力になると、精霊たちは言う。<jumpTo '8E2F'/></text>
<engrish>To the east of this village, in the village of Yoraru group, and there are such name who, I have entered into the ears of the inter-Nha. Lufkin, and to look for the other fellow, and so become a force, spirits say.</engrish>
<B6 '82C0'><96 '9144'><BE '0005'>
<text>インターニャ、不思議な夢を見た。夢は、ラフキンが、ジミーの居場所を知っていると教えてくれた。<jumpTo '8E2F'/></text>
<engrish>I saw Inter Nha, a strange dream. Dream, Lufkin has taught me to know the whereabouts of Jimmy.</engrish>
<B6 '82C1'><96 '9186'><BE '0006'>
<text>とても遠くに住んでいる部族だ。石の都ナウアトラの西だ。<jumpTo '8E2F'/></text>
<engrish>It is a tribe who live in very far away. It is west of the stone city Nauatora.</engrish>
<B6 '82C2'><96 '91FD'><BE '8607'>00
<text>ナウアトラ族は、彼らの石の都を、ティクティカトルと呼んでいる。<br/><br/>ナウアトラの西には、ディスキキの村がある。<jumpTo '8E2F'/></text>
<engrish>Nauatora family, is the capital of their stone, is called Thich Thi Quatre. To the west of Nauatora, there is a village of Disukiki.</engrish>
<B6 '82C3'><96 '927A'><BE '8708'>00
<text>恐れを知らぬ戦士の部族だ。この村から道に沿って東へ行け。<br/><br/>道はヨラルーの村に通じている。その南が、ナウアトラだ。<jumpTo '8E2F'/></text>
<engrish>It is a warrior tribe that fearless. And go to the east from the village along the road. Road leads to the village of Yoraru. The south, but Nauatora.</engrish>
<B6 '82C4'><96 '935E'><BE '0009'>
<text>ウラリ族は隠れ里に住んでいる。精霊たちも、その場所を教えてはくれない。<br/>だが、精霊は約束してくれた。ぐかがかならず、ウラリの村を我き!ズ、アイエラを苦け出すとな。<br/>アイエラを苦けたければ酋長のア痛痛ンに取って話を除け。<jumpTo '8E2F'/></text>
<engrish>Urari family lives in Kakurezato. Spirits also, do not you tell me the location. But, Spirit was promised. Ingredients or not always, we-out of the village of Urari! Figure, Issuing only click the Aiera. If longer Nigake the Aiera and except for the story to take to the A pain pain down chief.</engrish>
<B6 '82C5'><96 '9427'><BE '000A'>
<text>このトーテムに…機嫌ラトルか丈インドを夫ど友にすると、み力な魔法の力をお前に報けてくれる。<br/>ヨ告を夫ど友にすると、お前を加の護の前に?してくれる。<br/><br/>このほかのトーテムは、??の力で探すのだ。<jumpTo '8E2F'/></text>
<engrish>If you are etc. husband ... mood Rattle or length India in this totem friend, can you Hoke the power of attractive magic to you. When Yo told the husband etc. friend, can you in front of Mamoru of pressure to you. This addition to the totem, it looks at the power of.</engrish>
<B6 '82C6'><96 '9467'><BE '000B'>
<text>?まれたときから、ずっとインターニャと呼ばれている。<jumpTo '8E2F'/></text>
<engrish>From the time Mareta, it has been much called inter Nha.</engrish>
<B6 '82C7'><96 '94D5'><BE '000C'>
<text>クーラ?ク族の?とう?をしている。精霊の言葉を除き、傷?いた者や、熱に冒された者を治す。</text>
<engrish>We have a party of family Kuraku. Except for the words of the spirit, to heal wounds have a person or a person who is affected by heat.</engrish>
<9B '00AD'><96 '94D2'><BE '818D'>00 <jumpTo '8E2F'/><B6 '82C8'><96 '963A'><BE '000D'><AE '1D24'>1D 25 1D <96 '95A2'>
<text>加には、なんでも治す、大きな力がある。さいわい、?のお前には、その力を?う??がない。<br/>もし、インターニャの苦けがいるときは、お前にやったトーテムを?い、す?に帰ってくるのだ。</text>
<engrish>In addition, the cure anything, there is a large force. Fortunately, you in the, and there is no cormorant its power. If, when there are only bitter inter Nha, the stomach totem've done to you, you come back to the nest.</engrish>
<9B '00AD'><96 '959F'><BE '008A'><jumpTo '9637'/><A2 '1D1D'>25 1D
<text>精霊よ、?に力を与えたまえ?<br/><br/><br/>クク?の精霊よ、これなるアバタールの??を?り?き、その傷をいやしたまえ??<br/>精霊の??はよかった。もう大??だ。<jumpTo '8E2F'/></text>
<engrish>Spirit by, in due spirits before Kuku gave a force, which made the Avatar of the Riki, was good for spirits before you have healed the wound. It is already large.</engrish>
<B6 '82C9'><96 '96F7'><BE '000E'>
<text>インターニャは、?の部族にも?だちがいる。?んな、インターニャにいろいろ??してくれる。<br/>ここはクーラ?ク族の村だ。酋長はア痛痛ン。まだ取ってないなら、あいさ??らいしておけよ。<jumpTo '8E2F'/></text>
<engrish>Inter Nha is, there are Modachi to tribes. Do such, I me lot to Inter Nha. Here is the village of Kuraku group. Chief nitrous pain pain down. If you have not taken yet, and Oke was Aisarai.</engrish>
<B6 '82CA'><96 '9729'>
<text>精霊の??を?っているぞ、アバータール。</text>
<engrish>Gonna have Tsu that the spirits, Abataru.</engrish>
<9A '00AD'><88 'CBB8'>82 <CC 'CD82'><C2 'CEB9'>02 <CF 'D002'>02 D1 02 D2 02 D3 <C2 '819B'>00 <96 '9746'><BE '0088'><9B '00B5'><96 '98C9'><9B '00B6'><9B '00B7'><AB '9600'><97 '0597'>20
<text>仕事治す部族さ<br/>ィようナなはらいおいおかり、ムバタウ。ームニ<jumpTo '98C6'/></text>
<engrish>Tribe of ~I so na as to pay nephew borrow cure work, Mubatau. Muni</engrish>
<C2 '10B0'><96 '981F'>
<text>ャの魔法よがムにィなオド谷ムさ<br/>テウ言葉をキ話タウ。ーさ<br/><br/>ャの魔法ラはら前仕事治す部族、力与ムたバ長らな与間。ーな谷ーいニ</text>
<engrish>· The story tau magic excess of catcher is the ~I of Odo Tanimu of Tae Woo words to nothing. Magic La La before work cure tribe of over of catcher, force Azukamu was bus length from a Azukama. Over a Taniini</engrish>
<9A '00B7'><9A '00B6'><jumpTo '98C6'/><9B '00B6'><96 '98A8'>
<text>がムにィよフキン冒いキれてら間だもンミ名話族ナっいくこバ間谷ニ<br/><br/>ううはやナンら前仕事治す部族、ろる葉をタ名ド族ナら決バ間谷ーいニ<jumpTo '98C6'/>う話はう話はら前仕事治す部族さ<jumpTo '990D'/>部よエラよしナタ手ウテウ、放もでミいー。間谷弟らテキ放いなム谷葉ーニ</text>
<engrish>There tribe to cure ~I by butterbur adventure breath Re Nmi name talk group also a between the temple became Ikukoba ticks two uhh Hayate Nan et al before work to nothing, others Rolle leaves name de group Nara Kebba ticks over initiative Cormorants story is cormorants story original before work cure tribe of part I gills good thou hand Uteu, also in Mii release. Ticks Mutani leaf over two such not release his brother from enemy</engrish>
<C9 'CBB6'>82 <96 '9943'><BE '0001'>
<text>子話ち名大よャのき治さ傷負よャのき治倒</text>
<engrish>Child talk Chi name sized by catcher eaves cured and yellow scratch negative by catcher Chi倒</engrish>
<9A '00B5'><jumpTo '990D'/><B6 '82CC'><96 '9AE7'><BE '0002'>
<text>ャの魔法ラよ発見なオド谷ニタウへ話う話連来ばわ部ら発見て言葉ナバ間谷ニ<br/></text>
<engrish>Catcher magic La'll discover that Odo valley Nitau words Nava Te limbus et al discovered if come cormorant talk communication talk to tick two</engrish>
<9B '00B6'><9B '00B7'><AB '9600'>39 <9A '3405'>
<text>のき治よ発見ナ。をよ中とよ力アイはら呼力ムにんら前仕事治す部族よ放へまならずイ、谷彼タウ。ーニャの魔法よがムにィらャの魔法よ探出よ帰、放酋バム谷葉ーニ<jumpTo '9AE4'/>本弟当て感与ら放い部族よ謝ぞて村彼戦族だなオド谷ニ<br/><br/>放い部族よ謝ぞはらャの魔法よ発見て言葉ナバ間。ーニ<br/><br/>士よ総ナらジミーデ弟がムにフキン間なよれてら娘リいな。間い。ーニ</text>
<engrish>Eaves Osamu discovered Na. It forces love and in good to the Manara Zu Lee to release good tribe cure et al call force Muninra before work, the valley he tau. Nya magic excess is ~I-ra~ya magic good probe leaving attributed to nothing, Ho酋 Bam TaniYo over double this brother against feeling Azuka-ra Hoi tribe by Xie each to the village Odo Tanini Na's his battle group Hoi tribe between I words Nava Xie each Te discovered by magic of Hara~ya. Over two-mechanic Yeah Nara Jimide butterbur between a According to Li et al daughter whether his brother to nothing. Between physicians. Over two</engrish>
<BE '0084'><jumpTo '990D'/><B6 '82CE'><96 '9CAB'><BE '8704'>00
<text>ャの魔法よ東よ大葉ナあ、らがムにフキン弟総バ間谷ニ<br/><br/>ジミーデ弟れて娘リそ夢へ名ら士う冒は見い見い者な総バタウ。ーニ<br/><br/>スナウトは士うなら耳入よりてっいータ族な谷ニ長葉を族らスナウトタらほ族な。間いタウ。ーニ<br/></text>
<engrish>Catcher of magic by east by macrophyll Naa, and near the brother total server ticks Nijimide brother is in name from mechanic cormorant adventure will not look not look a person such total Batau to Musumeriso dream to Ragamu. Nisunauto to wow Te~tsuita group of Tanini length leaves family from Sunautota et al ho group I the from the ear input. Between I have tau. Over two</engrish>
<9B '00B7'><96 '9BC7'><jumpTo '990D'/>
<text>士う、はらャの魔法ラよ仲精弟総バ間谷ニ士話はがムにィ、ら霊与戦間話を放によな谷ニ<br/>長葉を族らンいうよ夢ようナな谷ニ本弟ジミーデて感与不。をらフキン間なよれて娘リいな。間い間。ーニタウらだ話タがムにィてもにうナ弟な与間思族ニ</text>
<engrish>Judges cormorants, Naka by magic La Hara~ya Seiototo total server ticks two mechanic story is-free in ~I, dream so na'll say family from down the Na Tanini length leaf by the release of the story between et spirits given against valley not given a sense of Te double this brother Jimide. La butterbur between a According to daughter re not. Between I have between. ~I Even Niu Na brother to Nitau et al.'s Hanashitagamu a Azukama 思族 two</engrish>
<BE '8685'>00 <jumpTo '990D'/><B6 '82D1'><96 '9D15'><BE '0007'>
<text>議はらスナウトは放バ間。居族ニ本よ耳入弟場バム
---
Stygian Abyss is a procedurally generated first person action dungeon crawler; survive the legendary Stygian Abyss to find the Codex of Ultimate wisdom, a new adventure awaits you every time!
Features
A level generator inspired in Ultima Underworld
Explore the environment in a first person view.
8 classes with different starting equipment and skills
The level generator can be used independently (you are welcome to use it in your project!), it’s very customizable and comes bundled with parameters to recreate the Abyss based mainly on Ultima IV. This one was started from scratch for the challenge. I will talk a bit more about it on a future post.
The 7DRL game module was developed using as a base the existing work that Jucarave had made for Britannian Underworld; from there we developed all the game related stuff like spells, combat, etc. A whole lot of work went there!
The cover art was created by Talzhemir “Manda” Penumbra; drawn and painted specially for this game. She was part of the Ultima VI dev team. Thank you!
<Insert whining about life being unfair and being too tired for the 7DRL challenge>
Day 3 is over, it may not look as much but I added corridors connecting the rooms, as well padding into them, which for all practical purposes means variable length corridors and irregular rooms areas. I also removed the walls, might have to put them back soonish.
Variable length for corridors
I also added a renderer using tiles, just for fun
Looking nice
Also did the design for magic spells, we are supporting a subset of the spells from the original U4. Also started doing some research on the actual appearance of the original Stygian Abyss, based on the rooms on the game, following some walkthroughs and checking some wikis for maps (unfortunately haven’t been able to find images for all rooms).
What’s next:
Add areas (ex: Lair of the Dragon, Evil Mages Camp, Fortress of the Balron, Zorn’s Nest, Damned Graveyard, etc)
Add enemies (3rd level generator)
Fix bug with connections between areas and subareas.
7DRL always happens the worst possible time in the year.
I’m working together with Exodus Destiny Dragon to create a 3D realtime dungeon crawler with procedural levels inspired on Ultima Underworld. We are using javascript.
It’s intended to relive the adventures of the Avatar at the end of Ultima IV, to get the Codex of Ultima Wisdom (and probably something more 😉 ) You’ll have to survive 8 intense levels finding weapons, items and magic spells to aid you in the way.
I am working mostly on design as well as the implementation of the level generator. My goal is to produce something similar to the levels of UW.
Level Generator, Day 2
Meanwhile, Exodus has been working on adapting the Britannian Underworld engine to what we need, plus implementing actual dungeon crawling stuff, check out his advancement on his blog.
Fat bats
We are considering whether using graphics from u5, u4 NES, oryx or handmade…. It would be great if we could get the graphics from monsters on ultima v dungeons (or the FM town games), but they seem VERY hard to come up with.
Last time I forgot to express my general feelings about the dungeon Despise; in general I found it to be pretty linear, but the theming was pretty cool, loved how it was mixed with a cavern, and the little secrets along the main path… I liked it, it’s certainly a great improvement over the dungeons of the previous games.
So I went looking for the mayor to get the Sigil of Compassion and restore the Shrine… but he was nowhere to be found!
Why do they hang people in the city of Compassion?
I finally met someone who told me he had gone to Paws after his daughter (It’s a weird girl that keep teasing me for no reason)…
Someone seems to be enjoying the situation!
Onward to Paws, but some exploring first 😉 I found out something about the compass… only the East and West directions are inverted!? so may be these pillars are really wrecking the magnetic fields of Britannia :S
Some strange ruins…That bridge looks intriguing…
I found the mayor in Paws, he was saved from certain death by a crippled man, but he doesn’t care… he just wants me to free his daughter from a _tribe_ of goblins that are keeping her on a nearby house.
Yes… I’ll save her…
I killed the goblin tribe and got a Warhammer as a prize… it’s powerful but doesn’t let me use my shield, I decide to wear it for a bit.
This people really needs me!
The Mayor gives me the Sigil of Compassion, the Blue Heart. So I journey to the shrine and restore it!
Shrine restored!Put the sigil and the ruined rune!
Coming back to Britain to report to LB, he congratulates me but remembers me the same should be happening with all other townes of virtue…
A different air can be breathen in the city, I can hear it in the ambient. The people from Paws start returning, I’m finally fixing stuff in the world as usual.
People is compassionate again!
Now, I wonder if going to Yew or Trinsic; those seem to be the most readily accesible towns; I also gotta find that pirate girl and show her the proof of my avatarhood.
Day 3 – Being lost, Shrine of Compassion and Despise
I examined Iolo’s place and found some amusing stuff but no trace of either Iolo nor Gwenno; I resumed my journey to Lord British castle or rather tried to… I wander around aimlessly until I bumped into the first column; Despise should be nearby!
A huge column!
But I’m still weak, so I won’t dive into it yet… I found a warrior who suggested I go meditate first to the Shrine of Compassion… I set to that, but first gotta get to the castle to get some healing…
…or at least that’s what I hoped, but Old British doesn’t seem able to do that anymore… dawn is coming, but I guess I’ll sleep a bit on my quarters to recover some health.
That didn’t work either, I’m still as weak as ever! I had a bread I had taken from the kitchen, and quaffed a potion. Now let’s go to the Shrine.
I exit the castle, and I know the shrine is east of Britain, but something is weird… it seems like the directions are inverted in the compass? I follow the compass to what I supposed was the east exit, and walked north a bit, then I saw a giant dragon flying by!
Wow, a dragon!
I try to climb the mountain near the dragon; may be the shrine is just to the other side… useless! the dragon spits fire at me but I don’t think he hit me… I then realize the compass doesn’t pinpoint with it’s long point but with the red dot (I guess that’s how compasses work)… so I head back to Britain to take the correct exit.
I find a circle of stones… I wonder if it’s the shrine of compassion or just the spot where the Britain moongate appears?
A Circle of Stones
Then I find the lighthouse, abd I remember I have a sextant and a map, so I can easily know where I am, the map looks a bit odd, the lake near cove seems to be gone? in any case I decide I won’t use the map + sextant combination a lot, I like exploring, I may actually drop the sextant for more fun.
I decide to take a trip through the shoreline to the Shrine of Compassion. After a long trip along big rifts with some swimming I notice a grassy path I can climb. And I end up just by the statue Shamino was talking through the day before!
The storm from the last day replicated, it seems to be caused by a magic spell of sorts! I finally hit what seems to be the ruins of the Shrine of Compassion. It’s all messed up compared to what it once was.
The ruined Shrine of Compassion
In a nearby cliff I found some strange looking thing, I guess I’ll have to do something here to fix the shrine and make people compassionate again.
A magic thingie
I walk around the Shrine but don’t find much apart from some potions. I was about to leave but then I thought may be I could try meditating on it. It worked! After “Mu”ing a bit some strange voice started talking with me and gave me tips on my overall mission of restoration of the land, which involves finding the corrupted runes in the dungeons, and the sigils in the towns, the do something at the shrines. It was worth coming here! I guess the voice is the same that thunders on Ultima V when you meditate.
SO LET’S HIT THE DUNGEON!, I travel back to the column and had my ass kicked by a Troll I restored and came back.
Luckily, I took another path who put me just over the maze of castle Britannia! I jump over it and can see the center of the maze, a magic fountain… and a Flaming Sword… awesome!
Now, I feel confident to hit Despise…
Despise
It’s amazing how it feels inside the dungeon, after a short cavern I solve some simple puzzles and I’m in. I heard some people locked behind a door, which I open. They tell me they were a group of four who came here looking for the Kyran stone (?), and that each one knows a piece of it. One seems to be atop a pillar, another behind some water.
I proceed into the dungeon to promptly find a room with a huge pillar.
After some careful jumping, I manage to get to the top where I find the piece of the stone as well as button that opens the door to continue onward.
Atop a big pillar
I push onward, suddenly the floor where I’m standing goes down, I guess it’s a trap! However I think I could just climb and continue down the way I was going.
However it doesn’t seem to be just a trap; there’s a passage leading into a room, there’s a painting of myself here (huh?) upon close examination it reveals to be a poster of Ultima III! and it comes bundled with a Wyrmguard armor which seems better than what I’m wearing… I don’t think a bit more of protection will hurt.
I continue down the passageway, then I find myself trapped in a room with a giant pool. Will I be able to escape?
Trapped
After some exploration, I put two buckets of water on an altar and a door opens, yay!
Crazy ancient dungeon builders…
I continued exploring and found a hidden room after moving a shield in the wall, it had a healing fountain and a small treasure 🙂
There was also some kind of armory with a sword in a case…
Wonder what’s so special about this sword…
Afterwards I found the third of the crew… sadly he died to the terrors of the dungeon, possible poisoned by a nearby fountain (who drinks water from a dungeon?). He has a scroll that points to a secret behind the dining room.
Poor man…
Then I found and saved the life of the fourth guy! he doesn’t want to know anything about dungeons and adventures, so he gives me his stone, I now have two.
I find the dining room and try to pass through the tapestry, burning, do something… but I fail. I decide to go onward
I found an alchemy lab with stuff to do potions, but I won’t be doing that for the moment.
Then I find the Cathedral of Despise. Nice architecture! I lit the flames all around and get healed by compassionate light.
This Cathedral looks awesome, maybe someone wanted to do in Despise what Cabirus wanted on the Abyss…
I must go back to that dining room and find it’s secret! I finally step on a nearby plate and open a secret path which looks pretty awesome. Inside I find a weird map and a teleporter into another set of rooms which finally lead me to the blue Kyran stone.
I return to the Cathedral and onward, where I find some pillars and a magic circle. I put the three stones I have there, wondering if I missed the last one…
I go onward into a flooded cavern, I press a lever and I find the last stone behind the waterfall.
Nifty Shield!
Then I go on and find myself in the last room of the dungeon, a wyrmguard is guarding what appear to be the bottom of the giant pillar!
Showdown time!
After some talking we engage in combat, I quickly dispatch him (I am a warrior with a flaming sword, I AM THE AVATAR!) but he turns out to be Iolo… no wonder I didn’t find him at home!
Damn you, Guardian!
I get the Glyph of Compassion, and run back to the dungeon entrance.
Can almost feel the weight of the massive pillar upon me
There, a wyrmguard and Blackthorne try to get me, but I’m saved by the pirate, Raven… she wants to make sure I’m the avatar, she needs to see a rune of virtue. I guess I’ll do that once I get the sygil of compassion and restore it.