Sunday, May 21, 2017

Advanced ADOM Animations

So, you know, ADOM is at least in part an AAA product - the Advanced ADOM Animations part ;)

As you already know, to have a complete set we need to go through about 550 monster sprites to animate. That's a *lot*. We needed a way to get through them (relatively) fast. One of our methods to speed things up is using a single animation set for all monsters with similar anatomy. For example  all humanoids  share the same basic animation set. That way we still have to prepare 550 sprites, but we don't have to invent 550 individual animations. (The system can be easily extended, so although this is a good starting point it doesn't mean we won't customize the animations further down the line).

We also try to make the animations minimalistic at this stage - so no fancy extra frames, no unnecessary elements, limbs, etc.

This is all well and good, but every once in a while we run into a monster that just doesn't work well within these limitations.

We've had some good honest feedback back in February about the early animation attempts. Just a quick recap of the animation gif that post contained:

Monday, May 15, 2017

ADOM Arcana supplement unveiled

Hi everyone!

Today I'd like to give you brief teaser about one of the most rare ADOM collectibles to be created during the Resurrect ADOM Development crowdfunding campaign: The ADOM Arcana supplement.

Saturday, May 6, 2017

Customizable Player Character

So in today's episode of "what exciting stuff I animated this week" ...nah, just kidding, let's not go there this time. (We do have all generic monsters covered, by the way. All that's left are dragons, elemental creatures, balors, sharks, eels and such. You know, the *hard* and *important* ones. But that also means you could run a game of ADOM and not run into a lot of static sprites at this point, which is great :) 

Instead let's focus on the Player sprites for a change. As I mentioned some time ago, having modular animated sprites opens up the road to something we've always wanted to see in the game - more detailed player character representations. I've been doing workload calculations for that this week, I've also have some prototypes ready, so let's take a look at what's in the pipeline. We're showing this off early because we're interested in your opinions on the matter. :)

First of all, for pure gameplay reasons we'd like the PC sprite to show actual armor worn. Right now the "torso" and "legs" parts are merged into one sprite and are based on class rather than equipment. So you have a "robe" for casters, "leather" for lighter classes and "plate" for warriors and such. This can be very misleading if you're a warrior but your chainmail just got eaten by a Rust Monster.

With the planned changes finally you'll be able to see that shiny new scale mail you just donned. A personal highlight for me are Thick Furs (also seen in the gif below), finally proper attire for ADOMs barbarians :)

Sunday, April 30, 2017

The ADOM event system

This week I've been working on adding more ADOM soundtracks by Lucas, and thought you might want to know what triggers them to be played in-game. There's a cool yet simple (or complex? :p) underlying mechanic called the event system.

During the early integration phase of ADOM and NotEye (which was around the end of 2012) we needed to find a way to control NotEye from ADOM (e.g. to show a specific screen or play a sound effect). We also decided to integrate ADOM and NotEye very loosely, so that we could easily switch to other frontends (if required).

NotEye provides a Curses like interface which is used by ADOM to deliver the screen contents (text and colors) which NotEye then renders (in ASCII mode). It also provides a keyboard/mouse interface which ADOM uses to get the player input.

Additionally ADOM provides a (quite complex) JSON data structure which NotEye can access to retrieve information about the whole game map (e.g. monsters, items, tiles, traps) that is used in "graphical" mode.

But this still wasn't enough. What if we wanted to play an animation or sound effect when the player used his weapon? After some discussion we decided to use an event system: the idea was to trigger events from ADOM and then let NotEye decide how to react to them.

We use events for a lot of things (e.g. to control NotEye, play music/sound effects, show animations). You can find all event definitions in the file <ADOM>/games/adom-tables.noe ("gameeventids").

Each event is represented by a JSON object (we really like JSON) with one or more properties.

For example, this is an event that is triggered whenever the player uses his weapon:

It contains the weapon type, the hit type (either a hit or a miss), the direction of the attack and other values that might be useful (the game_event_id is required for all events).

So, how is this event handled by NotEye once it is triggered from ADOM? NotEye loops over every event it receives and hands it over to every "module" (e.g. the animation module, the sound module). Each module then can decide to either react to the event or to ignore it.

The animation module reacts to the weapon event, we use it to play a "swish" animation to indicate the attack (the line is taken from the <ADOM>/gfx/adom/anim.cfg configuration file):

event=GE_WEAPON_USED, direction=SE, hit-type=NORMAL_HIT | CRITICAL_HIT, ...

This line describes what animation should be played once the GE_WEAPON_USED event is received (more on that in another article).

Additionally the sound module reacts to it, we play a sound effect (taken from the <ADOM>/sound/sound.cfg configuration file):

event=GE_WEAPON_USED, item-weapon-type=IWT_SWORD, file=weapon/sword_1.wav

So one event triggered from ADOM results in two actions: an animation is shown and a sound effect is played. As you can see, the event system is very flexible and extendable.

With all this in place handling new events, like playing a sound after loading a game, or triggering animations is a breeze. Hopefully we'll get more of those soon :)

Until next time!

Sunday, April 23, 2017

The physical side of ADOM

Today I'd like to provide some insides into the physical side of ADOM. Before the Resurrect ADOM development crowdfunding campaign there did not exist any real tangible assets for ADOM - which changed during the crowdfunding campaign where I promised things like postcards and pen & paper roleplaying games & boxes.

Saturday, April 15, 2017

A Glowing Example

Actually, I mean the title literally. There's an example of how glows work in ADOM inside :)

But before we move on to some nasty (but cool-looking!) Steel Horrors and Molochs, I'd like to take this opportunity to wish you all Happy Easter from the entire ADOM team.

We hope you'll be able to get some time off, create amazing plans and fantasies, and find courage and dedication to make them happen. But just getting some time off will be great :) Happy Easter everyone!

I was looking for a suitable picture to mark the occasion...I know of a few Easter Eggs (haha) in the game, but I didn't want to spoil anything, so here's some bunnies instead. One seems kind of odd. Ah well... on to check out the new glow animations :)

Sunday, April 9, 2017

ADOM crowdfunding progress

Hi everyone!

Quick update from me about the current happenings regarding ADOM:
  • The past two weeks I have been focussed on moving ahead with the stuff that needs to be done to finally fulfill the still open crowdfunding rewards. Specifically we have been working on the remaining physical stuff (the poster map was updated for printing for the great folks that pledged for the limited ADOM rpg box), I have started writing the ADOM Lite RPG Arcana booklet (another 32 page booklet just for those box donors), Krys has provided a cover for that, and we have laid put a roadmap to work on the remaining virtual rewards (e.g. ADOM extensions). Jochen has been busy working on the ADOM community server code (shared highscores and more surprises for the future).
  • Next week should finally see wave 2 of shipping ADOM Lite RPG (mailing about already shipped copies as well as your statet on Tuesday, actual shipment probably by the end of the week or on the Easter weekend) and a lot more work on finishing the RPG boxes.
  • In parallel I am still working on the largest batch of new features in a long time (volcano quest, lots of new levels, staves - a new category of rechargeable magic items, primeval beings and more). This task actually is somewhat annoying as I started it before I broke my arm and before we had GIT. The code changes now are so entangled that we still can't use the GIT advantages as I need to get this huge batch finished.
  • That next batch will go to the prerelease testers as there are so many new features that we need all your talents battling bugs and the Steam release will be somewhat later.
  • After this huge batch we will move to much smaller updates in order to finally profit from GIT as our new version control system.
Behind the scenes more is going on but I still need another probably 3-4 weeks to be able to talk about that (hopefully at the beginning of May). You won't be disappointed - I promise :-)

(and I had yet another sickness phase - one more horrible cold - 2017 hates me - I have been sick for more days than in my while life before and by now am deeply frustrated)

Luckily Spring finally has reached Germany and all the sun has been very good for my mood. The hand mostly is ok again (as far as programming goes) although I still feel intense pain in the joint after prolonged typing. But that's something I can get by with.

So keep alert for the RPG lite shipping mails if you are still waiting for your copies (on Tuesday) and the actual shipping notice on the weekend.

Stay tuned!

Saturday, April 1, 2017

A Glimpse at ADOM Worlds!

Greetings ADOM™ fans. We'd like to talk about something special today - you'll be pleased to know that we are moving forward with another ambitious project under the ADOM™ brand name. Say hello to ADOM Worlds™!

As a team we decided to move where nobody has gone before and create a Minecraft-inspired 3D roguelike with various influences from many other genres.

The core idea behind ADOM Worlds™ is to build the largest,  most imposing Cthulhuoid Castle. It's a race against time versus four other opponents in local and online multiplayer.

Each game takes place on the barren PlAnE oF cHaOs, which means that incredibly strong monsters, scarce resources and an ever-shifting ground plane will make the game a suitable challenge for roguelike fans.

The winner is determined based on scores for the Castles' volume, mass, real estate value and overall corruptive effects, as well as the average number of cHaOs tendrils per cubic foot. All this assuming the owner survives until the end of the round. The cHaOs PlAnE is indeed an unforgiving place.

Of course block-based Castle building isn't the only focus of ADOM Worlds™. As with any respectable roguelike you'll be able to level up your character. learn skills and abilities, gain items and gold and so on. It's not ADOM™ without all of that, now is it?

All these elements put together should create a volatile mix of "easy to pick up" but "difficult to master" gameplay.

Expect a full list of features soon, and in the meantime enjoy our first teaser image of ADOM Worlds™!

Saturday, March 25, 2017

The ADOM build system


this week I'll cover the ADOM build system - something I've started working on shortly after I got more involved with ADOM development.

As you know we provide ADOM for many different operating systems (e.g. Windows, macOS, Linux, NetBSD, OpenBSD, FreeBSD, Raspbian and AmigaOS). It would take (too) much time to manually build an ADOM executable for each operating system, so we decided to fully automate this task.

What were the requirements?

We wanted to be able to build all executables on a single computer. This would make it possible to build a new ADOM release everywhere without having to carry around a lot of hardware. We also wanted it to be fully automated without having to do manual steps.

What is the ADOM build system?

The ADOM build system (that's what we call it) is a combination of virtual machines and shell scripts that automates the creation of all the ADOM executables/packages.

We use 14 virtual machines (one for each operating system) and utilize VirtualBox for virtualization. 

How does the build system work?

Since ADOM is programmed in C we use makefiles to build the ADOM executable.
  1. everything starts with a single "make" command in the shell
  2. this make command then calls other shell scripts that each create a single executable
  3. these shell scripts execute the following steps (4-8)
  4. start the virtual machine
  5. get the specified revision of source code from the repository
  6. execute another makefile that compiles the source code
  7. download the resulting executable from the virtual machine to the current computer
  8. stop the virtual machine
We can build all or a single executable depending on the parameters. Since the Git migration we can also specify the revision(s) of source codes for each repository (ADOM source code, NotEye source code and Steam SDK), so we can build every version we once built again without much hassle.

How long does it take?

To speed up the creation process we start 4 virtual machines in parallel. This reduces the time required to build all 28 executables/packages to around 20 minutes.

The executables for AmigaOS and Raspbian are cross compiled to make the compilation faster (it takes around 15 minutes to compile ADOM on a RaspberryPi 1).

What are the benefits?

Automatic building of executables is less error prone than building manually. Since we can build all executables on a single computer we don't need a "server farm" with lots of different computers.

What are the drawbacks?

Keeping all the virtual machines up to date can be a time consuming task.

What about continuous integration?

In theory we could use the build system for continuous integration. But since automated testing of ADOM is not really possible (it's not a technical problem but caused by the randomness of the game) we don't use it that way.

Will you add other operating systems?

If the demand is high enough we might consider adding more operating systems.

Until next time!

Saturday, March 18, 2017

Animation and Line of Sight live previews

As Jochen moves on with the community server (I hope we can get some more details soon as it seems to have sparked some interest ;)) the graphical side has been progressing nicely these past two weeks.

First of all we wanted to give you a quick high quality sneak peek of what animations feel like in action. Take a look at a lone PC wandering through Dwarftown. We added some extras just to keep things interesting. Don't worry, it's just created in Exploration Mode with a Wand of Wishing. Killer Bugs won't be part of Dwarftowns' fauna in the next patch ;)

Create, Discover and Share GIFs on Gfycat

Saturday, March 11, 2017

The technical side of ADOM

Hi everyone,

my name is Jochen and I'm the co-developer of ADOM. I've been working on ADOM since 1996 where I started to port ADOM to the Amiga computer. In the following years I've ported ADOM to different other operating systems like BeOS, Windows and macOS.

Since the crowdfunding campaign (about one year earlier actually) I'm also working on the ADOM source code itself. This means adding new features (e.g. the NotEye integration, the animation and sound system, the event system, etc.) and also fixing old and new bugs. ;) I'm also responsible for the ADOM infrastructure, e.g. our repository servers and some websites.

So, what did I do in the last few months?
  • I migrated all source code (and other) repositories from Subversion to Git
  • I updated the ADOM build system (which creates the binaries for all the different operating systems we support) to use the new Git repositories
  • I also updated the build system to use the latest version of each operating system
  • I prepared a Team ADOM cloud where we can share files more easily

Since last week I've been busy working on the new ADOM community server. We already started this in 2013 and also had a working prototype. But we weren't quite satisfied with it and there were some difficult decisions to make, so we decided to postpone it. It's quite shocking that it's 2017 now, but I promise that it won't take another 4 years until it is available.

The old prototype used TCP/IP socket communication between ADOM and the Java server. The new server will provide a REST API for ADOM, so we have to rewrite some of the code. Thankfully we already used JSON for data transfer in the prototype, so we can reuse this part of the code. The new server (at the least the part that ADOM will be "talking" to) will be based on Node.js.

We still need to decide which framework we will be using for the corresponding community website. But more on that later. ;)

That's it for now... until next time!

Saturday, March 4, 2017

Ever expanding soundscape - where no roguelike has gone before.

Lucas isn't messing around when it comes to weapon sounds :)

Lucas has been hard at work digging into ADOM sounds. This week's focus was on combat audio, making the sounds clearer, easier to distinguish, and generally more detailed and pleasant to the ear. As you can see from the twitter pic above, Lucas is really going to town with this :) Given that rouglikes in general aren't known for their sweeping soundscape, Lucas' attention to detail blows me away every time.

Saturday, February 25, 2017

Fog of War descends upon Ancardia

Orcs tend to start with low perception..and thus can't see very far.

When deciding what features to add to graphical mode, one of our core rules is: graphical shouldn't show stuff that you don't know about in ASCII mode*. Just allow you to see more at a glance. So one promintent feature we haven't touched yet that fits this rule really well is Line of Sight.

How far you can see is dependent on your perception and modified by a wide range of factors. And yet ADOM does provide the current exact view range directly - the "l"ook command clearly states where your LoS ends by adding a "you recall:" prefix for tiles that are not currently visible.

However, the game doesn't give any clear visual indication, so we're experimenting with that right now. Zeno is doing his magic again so that you don't have any doubts where your sight range ends :)

Saturday, February 18, 2017

Bringing ADOM to life

The technical side of Team ADOM is busy preparing the playing field for things to come. That leaves us artists free to do anything we want! Well...more or less, anyway. We're focused on bringing more life to the "fancy ADOM version" through sights and sounds.

So what are we up to this week? :) Read on. There's a moving picture inside, I promise!

Saturday, February 11, 2017

Let the regular blog updates commence!

Sprite update preview to catch your attention ;)

Greetings ADOM fans! Krys here, also known as Ravenmore. I'm Lead Artist on Team ADOM, which means I direct a talented team of artists consisting of myself....yeah. I know.

I'd like to take a minute to explain our new blog schedule planned for 2017.

So what's going on? 

TL;DR: More developers on the blog. Weekly posts. First status update at the bottom. 
Read on to check out what's in store for this blog in 2017 :)

Friday, February 3, 2017

A small step towards more updates

Hi everyone!

While for a long while I have been the only author on this blog, my broken hand/arm led me to invite Jochen (my co-developer for ADOM) and Krys (our amazingly talented lead artist) as authors to this blog. Hopefully this will allow us to provide more regular behind-the-scene updates!


Sunday, January 29, 2017

Broken arm update

Hi everyone!

Just a brief update (because I'm still typing with a single hand) to my accident:
  • Surgery for now is over. Although I now have a part-titanium arm with more screws than a T-1000.
  • The fracture has been pretty bad (every doctor who looked at the initial x-ray said something like "dear lord!"). My arm/hand will be 1.5-2 inches shorter for the rest of my life.
  • I still can't use my left hand for anything more complicated than flipping a page. The fingers are still too thick for my tastes, I can' t turn my hand upwards or bend it decently. Fingers still are somewhat swollen, joints hurt. Given it's been almost six weeks since surgery I am highly concerned by now but both the doctors and therapists tell me that this is normal given the rather severe fracture I had.
  • I'm getting therapy right now but things have been improving very slowly.
  • I got a CT last year and - while the bones are healing - the doctor estimated another six weeks before they really are firmly reconnected.
  • My guess is that it will be March before I slowly can restart my programming work - which is highly frustrating as I had intended to start the year with a big announcement. The big announcement still is very likely to come but it will be March at best now because I simply can't work. (and it is truly a big, exciting and overwhelming positive announcement - quite mind-blowing... which frustrates me as it makes no sense to talk about it right now).
Currently I spent my days with a very limited set of activities:
  • Re-training my left hand.
  • Watching Netflix & stuff.
  • Reading.
  • Visiting doctors.
  • I am studying news trying to get a feeling for a world with a president Trump.
Regarding Team ADOM:
  • Krys, Jochen and Zeno are working on animated sprites (yeah, slightly moving monsters).
  • Lucas is composing more stuff.
  • We all have been discussing the big announcement and what follows from it.
  • Wave 1 has been shipped.
  • A single package was returned to me due to insufficient postage (which is weird in two regards: It was one of three packages to St. Petersburg, Russia and the other two were not returned - and the postage fee is the same for the whole world).
  • Packages so far seem to have taken anything between two days and six weeks or more to arrive.
  • After wave 1 at least another 79 people have confirmed there shipping addresses.
  • Due to my inability to do almost anything in the shipping process wave probably will be delayed until March. This is very frustrating for since all the stuff is standing here but filtering the lists, confirmation mails, etc. requires some programming and I just can't do it right now.
  • Before shipping wave 2 an email will be sent to everyone in wave 1 to see if packages got lost.
I'll post an update as soon as there is any helpful progress. While there are no updates please just assume that we are trying hard to make meaningful progress.

Thanks for listening. Wish me luck with the recovery process - I can use every bit of good fortune right now. Here are some closing pics of my new self: