news

Tales of Maj'Eyal 1.6 BETA5 is up for grabs!

My minions,

One more beta for you minions! Go grab beta5:
You'll find all the downloads on https://te4.org/beta-test

Please, try to keep all bug reportings on ToME's official forums at http://forums.te4.org/ as it is hardly feasible for me to survey 10 different location for bugs.

The current DLCs will still work in 1.6 so you can test with those but they will each get a small update at the same time as the final 1.6 release to update how they process melee talents to be inline with the new 1.6 way.
NOTE: DO NOT ENTER the Caves of Hatred in Embers of Rage. It needs updating of embers to work with 1.6.

Please only use official addons/DLCs when testing.

Changelog from beta4:

  • Fixed (hopefully) the savefile bloating happening for (mostly) Possessors
  • Reduced Fire Breath damage to more sane levels
  • Shimmer mirror now has a search box
  • Fixed keywords on charms
  • Buffed Pulverizing Auger
  • Reorganized Water & Ice trees and buffed the early spells
  • Fixed the black line appearing at the bottom of the screen on some resolutions
  • Fixed Sunburst
  • Fixed a death bug
  • Fixed some weird recursions
  • Fixed a bug in AI displace code
  • New keybind for automatic target accept option, no default binding
  • Misc fixes

Now go test it out my minions!

Tales of Maj'Eyal 1.6 BETA4 is up for grabs!

My minions,

One more beta for you minions! Go grab beta4:
You'll find all the downloads on https://te4.org/beta-test

Please, try to keep all bug reportings on ToME's official forums at http://forums.te4.org/ as it is hardly feasible for me to survey 10 different location for bugs.

The current DLCs will still work in 1.6 so you can test with those but they will each get a small update at the same time as the final 1.6 release to update how they process melee talents to be inline with the new 1.6 way.
NOTE: DO NOT ENTER the Caves of Hatred in Embers of Rage. It needs updating of embers to work with 1.6.

Please only use official addons/DLCs when testing.

Changelog from beta3:

  • Revision of the Predator tree
  • Revision of Blighted Summoning
  • Positive and Negative energies are subject to fatigue again but only for costs, not gains
  • Updates to Anorithil
  • 2H penalty debuff does not go away when dying
  • Made Eldritch Shield and Earthen Power trees interract with the Block talent
  • List of talents affected by Body of Stone is now moddable by addons
  • First Prodigy point is now at level 25
  • Talent Category point of level 36 moved to 34
  • Fix Aether Beam not respecting Spellcraft
  • Many misc fixes

Now go test it out my minions!

Tales of Maj'Eyal 1.6 BETA3 is up for grabs!

My minions,

One more beta for you minions! Go grab beta3:
You'll find all the downloads on https://te4.org/beta-test

Please, try to keep all bug reportings on ToME's official forums at http://forums.te4.org/ as it is hardly feasible for me to survey 10 different location for bugs.

The current DLCs will still work in 1.6 so you can test with those but they will each get a small update at the same time as the final 1.6 release to update how they process melee talents to be inline with the new 1.6 way.

Please only use official addons/DLCs when testing.

Changelog from beta2:

  • Nerfed a bit the Weirdling Beast (it learns new classes at a bit higher level)
  • Randelites/boss now won't try to escape/kite forever and ever
  • Reduced the wants to escape & kite a bit in targets marked as ranged
  • Increase the Willpower contribution to Vim gain
  • Add life display to Blood Grasp
  • Rush correctly autotargets if the option is on
  • Passives that are spells, nature powers, ... will show as such in their descriptions
  • Reduce sustain cost of Blood Fury
  • Reenable Skirmisher on NPCs
  • Fix Drake's Bane strength requirement
  • Fix Bone Spike not proccing
  • Fix Prothotipe's Prismatic Eye
  • Redesign Windwall ego
  • Improved shop jewelry crafting
  • Improve some base gem stats
  • Fixed Overkill bad interaction with some talents
  • Temporal Hounds never flee
  • Fixed Fearscape targetting
  • Fixed the Assassin Lord not being visible at first, and added a little bonus surprise
  • Fixed Telekinetic Leap
  • Fixed Psiblades putting charms on cooldown and adding back stuff to the hotkeys
  • Fixed Freeze duration reduction gainst friendly targets (it now works) and reduced it a little to not be completly insane
  • Fixed Ice Shards to actually do bonus damage against wet foes
  • Shivgoroth Form shows Ice Storm infos in its description
  • Fixed Frost Treads and buffed the movement speed a bit
  • Restore Dirty Fighting to unarmed damage
  • Fixed dropping cursed sentry items
  • Fixed Sook's shop
  • Fixed Venomous Strike taking two turns
  • Fixed Summoner's Turtle taunting, and now also auto-taunts when summoned
  • Crused Sentry will try to find a free spot nearby to apepar if targeted directly at a creature
  • Yeeks in the shadow crypt will have .. a surprise
  • Secrets of Telos prodigy cant be taken by NPCs
  • Aether Beam is not disarmable
  • Fixed icon for Arcane Strike
  • Amulets of healing got a new more in-theme icon
  • Shadows of low level doomed rares do less damage
  • Fixed some magic checks to enter Zigur
  • Essence of Speed cost reduced a bit
  • Circle of Sanctity range reduced a bit
  • Moar fixes

Now go test it out my minions!

Tales of Maj'Eyal 1.6 BETA2 is up for grabs!

My minions,

Version 1.6beta1 went rather well for a first beta with surprisingly few explody-parts but still, beta2 is here to fix them (and more)!
You'll find all the downloads on https://te4.org/beta-test

Please, try to keep all bug reportings on ToME's official forums at http://forums.te4.org/ as it is hardly feasible for me to survey 10 different location for bugs.

The current DLCs will still work in 1.6 so you can test with those but they will each get a small update at the same time as the final 1.6 release to update how they process melee talents to be inline with the new 1.6 way.

Please only use official addons/DLCs when testing.

Changelog from beta1:

  • Fixed running on Linux's new Steam client
  • Swift Shot and Bull Shot only lower cooldown when actually moving
  • Repulsion only works on foes
  • Dreadfell bosses & Shade of Telos cant roll wilders
  • Fixed message upon gaining a prodigy at lvl 42
  • Characters that know Antimagic can enter Zigur, no matter the rest of the conditions
  • Reverted saves changes
  • Fix The Fragmented Essence of Harkor'Zun
  • Fixed Gates of Morning heavy armor shop
  • Fixed imbued staff ego
  • Fixed Daunting Presence gfx
  • Greatly simplified Creeping Darkness code, it now simply blocks sight for all unless they have Dark Vision
  • Running ignores glyphs
  • Simplified (and likely fixed) Whirlwind code
  • Fix confusing dialog when you don't give the mage apprentice an item.
  • Some more safeties/sanity checks against old addons
  • Fix a bug with Blach Mesh
  • Fix some infinite recursions
  • Fixed a bug with pathing
  • Fixed ego ammo bugs
  • Fixed temporal hounds on level change
  • Fixed Obliterator
  • Fixed error on some item on_melee_hit effects
  • Better auto-error reporting
  • Fix Fearscape error
  • Add core.display.breakTextAllCharacter method to force text lines splitting to happen on any characters (useful for asian languages)
  • Fix confusing dialog when you don't give the mage apprentice an item.
  • Fixed Sharpen Display option
  • Many other misc fixes
  • Fixed Steam microtransactions code. If you attempted to test it and it failed, please retry now (note as long as you do not get a success message you've not been billed anyway)

Now go test it out my minions!

Tales of Maj'Eyal 1.6 BETA1 is upon you!

My minions,

Finally the day of 1.6 has come, well, it's only beta but still, beta has come! ;)
You'll find all the downloads on https://te4.org/beta-test

Please, try to keep all bug reportings on ToME's official forums at http://forums.te4.org/ as it is hardly feasible for me to survey 10 different location for bugs.

The current DLCs will still work in 1.6 so you can test with those but they will each get a small update at the same time as the final 1.6 release to update how they process melee talents to be inline with the new 1.6 way.

Please do note this is *not* by any stretch of the imagination a full changelog. The 1.6 release contains so many changes and updates that it'd turn me mad organizing them into a semblance of changelog and it'd turn you mad reading it all.
The original unabridged log is about 3500 lines long.

One last thing for those new to betas; characters will NEVER validate in beta; that's normal and as usual importing characters across major releases is bound to not work all too well.

  • When a yeek exits the tunnels to the halfling complex and sees subject Z; a warning comes up from the wayist, urging you to flee
  • When a shader is missing, it'll use a default fallback (prevents loading game with missing DLCs/addons)
  • Classic UI can now cancel buffs by right-click
  • Load quickhotkeys prior to loading the game to fix hotkey ordering for "restart the same character".
  • Greatly revised celestial positive spells and a few negative ones
  • Disable fatigue for positive and negative energy
  • Updated/rebalanced some NPCs
  • Revised Defilers
  • Added an UI option to sharpen the map display, as requested by some
  • Removed max level on all fixed artifacts. Material level already restrains them. This prevents some artifacts being near un-obtainable on higher difficulties
  • Fixed an issue preventing users with a too long password from login in. Woops sorry :/
  • Cunning techniques revisions
  • Greatly revised Summoners
  • Buff Giant Leap
  • Improve Elemental Surge
  • Significantly revise 2H Assault
  • Fix NPCs shoving the player
  • Teleports now immediately maximize the AI's guess spread on your current location
  • Ethereal Form uses highest of Dex or Mag for its defense bonus
  • Rebalance Elemental Harmony
  • Revise many artifacts, egos, randarts and items
  • Revise Arcane Blade's Enhancement tree
  • Reduce Arcane Destruction damage and fix type to Arcane
  • Fix Glove display
  • Fix Adept causing infinite talent levels
  • Sustains will not disable at 0 Stamina or Mana anymore, as it is cumbersome and is easily prevented with a little regen anyway
  • Fix Slings not having a base speed
  • Add stairs up to Dark Crypt
  • Fix Elemental Harmony allowing self damage
  • Allow respeccing out of combat
  • Add a talent autouse for being out of combat
  • Multiple updates to combat damage log
  • Fix light radius letting Players (but not NPCs) see beyond their max vision radius
  • Resize and reposition how charges are displayed on effects
  • Several talents that move the player would not function at all or would behave unusually if auto-accept target was enabled.
  • Greatly revised inscriptions (runes & infusions)
  • Greatly revised the early game combat to make melee start less painful
  • Revise accuracy bonuses to have more impact and nicer breakpoints
  • Revise shield/glove combat table tooltips
  • Born into magic now actually gives 20% inc dam as advertised(up from 15%)
  • Change Stone Vines' and Rockswallow's damage to Nature and removed speed malus from Stone Vines
  • Revise some racial talents
  • Round most talent masteries to 0.0 or 0.3
  • Add many, many base character visual customisation options (beards, hairs, skin color, tatoo and so on)
  • Implement support for cosmetic & "useless fun" microtransactions
  • Revise Scoundrel and add it to the Rogue escort
  • Redesign the Vim resource (no more ability refund; Vim regeneration on any kill scales faster with Willpower and now also scales with target rank; Bloodcasting is now baselined in the resource allowing you to pay Vim costs with 200% of the cost as life)
  • Added an UI option to sharpen the map display
  • Fixed a bug preventing steamsaw/guns from generating as egos for randbosses (amongst other things) (yes fear the gunsnakes!)
  • Small revisions to Archmage
  • Update Worldly Knowledge to only include most of the currently available escort/quest trees
  • Remove defense penalty from block
  • Miscelanous revisions to many talents
  • Revise Antimagic
  • Major AI update, smarter, better, maybe faster
  • Fixed several screenshot issues
  • Randomly generated humanoid npcs now use the same cosmetic features available to players, randomly
  • Simplify SDL gamma calculation and restore default gamma on exit.
  • Levelup dialog shows variable parts of talent descriptions (like numbers that go up as you levelup) in green even at talent levels 0 and 5, to better see which values will evolve
  • Revision of Fears
  • Add a bonus to stealth rating for Armor of Shadows
  • Revise shops
  • Revise fixed bosses, now they can better levelup and learn new tricks too
  • Revise Wyrmics
  • Revise Afflicted
  • New scriptable map generator along with a variety of combinable algorithms for it
  • Revise Stealth
  • Revise Shadowblade
  • Ban Dreamscape entirely from NPC use
  • Modules Markers, IMPORTANT: Removed unpausing the game when using energy in engine.Actor:useEnergy as this was badly misplaced, instead superload useEnergy inside your own player class to do it, look at example's module Player class for how to
  • Tilemaps can be scaled, fliped, rotated; new Maze tilemap; Heightmap & Noise tilemaps can be normalized
  • Revise Prodigies
  • To celebrate nearly 10 years of ToME, a new awesomely drawn custom player tile that comes from the very early days of the game
  • Stun: Cooldown lock changed to half, damage reduction changed to 50%
  • Confusion: Interaction with confusion immunity removed
  • Increase the spawn level of the Melinda event to 30
  • Increase resting rate dramatically
  • Add 1 regen to Alchemist golem to reduce resting tedium
  • Remove Munitions from Archer and re-add Poisons
  • Remove useless trees from some classes
  • Remove melee retaliation from many NPCs
  • Zigur is now always present on the map but forbids entry to any magic user.
  • Various visual improvements
  • Updated the way NPCs (randbosses) are assigned character classes
  • Object requirements can now be any random flag of the wearer
  • High Peak levels become smaller towards the end (but keep the same number of foes inside)
  • Increased foes density in the Prides
  • Escort quests will now spawn in the Infinite Dungeon (between levels 5 and 40)
  • Fixed some Infinite Dungeon challenges
  • Nerfed patrols a bit
  • Revise Ghouls
  • Nerf life leech stacking
  • Can send talent links in the chat from the talent's right click menu or in the levelup dialog by pressing ctrl+l
  • Revise shops system
  • More Mummies! Rejoice!
  • Revise saves (saves against effects, not savefile!)
  • Revise archers
  • *NUMEROUS* fixes and updates to a ton of things (can I be more vague? probably but it'll be hard ;) )

A huge thanks to all those contributed to help make this release the biggest release ever!

What's next for Tales of Maj'Eyal! A lot, and then some!

Hello my minions!

Recently I was surprised to find some people wondering if Tales of Maj'Eyal was dead (as in not developed anymore). I was like "WTF??" because I knew it was not, quite the opposite in fact, but then I pondered some more and realized that I'm utterly bad at regularly communicating that fact! So let's try to improve on that with a Grand List Of What Is To Come (Possibly).

As usual I never give dates unless I'm sure. So always take this kind of things with a grain of salt, they may come in two days or two years :)

Release of patch 1.6 with huge changes

1.6 is the next free big (huge) patch for Tales of Maj'Eyal. I have already delayed it far too much as such it has grown into such a monster patch that I likely won't be able to list everything going in without forgetting many others. Still, here are a few of them:

  • Deep rework of early game balance, main goal being to reduce startup tediousness. This includes changes to difficulty, scaling, shops, drowning, items, ...
  • A ton of cosmetic options for all playable races (including the expansion ones). From many shades of skin colors, to haircuts, beards, tattoos, ...
  • Hugely improved NPC AI, smarter, better pathing, and so on. For MOAR GLORIOUS DEATHS!
  • Update of Doomed, Cursed, Wyrmics, Antimagic, Shadowblades, Prodigies, Corruptors, Reavers
  • Update to many randart powers and ego powers
  • A complete revision of runes, inscriptions and charms
  • Fixed bosses can now levelup in specific classes to keep the challenge up at higher levels/high difficulties
  • Revision of many debuffs
  • Melee weapon scaling revision to reign in on late game ultra high damage stupidity and buff early game low damage stupidity
  • A ton of misc changes, updates, revisions, ...
  • And the usual slew of bugfixes (and NEW bugs :) )

Embers of Rage free update with a new class: Annihilator


So you thought that when an expansion is released it's the end of its life? THINK AGAIN!
After 1.6, Embers of Rage will get an update with a whole new class for you to slaughter poor creatures with: The Annihilator! As its name suggests this is a class for peace-loving orcs!

Annihilators use steamguns and new heavy weapons (flamethrower, shockstaff and boltgun) to destroy their foes all while deploying automated steam turrets and even riding around in a mecharachnid suit!
A force to be reckoned with for sure!

Note to be clear: this is NOT the very next update to Embers of Rage, that one will be released at the same time as patch 1.6 along with an update to all expansions, just to update their systems for 1.6. Annihilators will come a little afterwards.

DarkGod turns evil: Microtransactions, but the good kind!


Don't go screaming bloody murder just yet please ;)
So let's say it upfront: no pay2win to be seen in there!

Now that this is said let's get into more fun details. So if there is no pay2win, what will there be?
Many things! Mostly fun and/or cosmetic stuff as could be expected:

  • Additional Online Item's Vault space. Any purchase of the game, expansions, donations, ... already provides vault space, but this is for even MOAR!
  • Various cosmetic themed packs. These will include shimmer appearances for most items, plus sometimes/usually additional cosmetic options for playable races. "But DarkGod, I want to have racial cosmetic options without giving you more money!" Well, fear not for 1.6 does bring in a ton of those for free anyway. The more, the merrier!
  • Community events! Now for something a little different. In Tales of Maj'Eyal community events are temporary stuff that are sent by the server to any currently playing character. The server randomly sends two of those, called the Bearscape and the Lost Land of Poosh, to players automatically. There are many more, like seasonal ones, or ones only I can push when I feel like it. Now players will be able to acquire the ability to trigger either the Bearscape or Poosh themselves, in addition to the random server pushes that are not changing. But wait there is more! They are still community events, so whenever somebody buys and triggers one, all players currently online will benefit!
  • I don't like pay2win. I really really don't. So instead of doing pay2win, I've decided to add a pay2die system instead! If you think your character is too strong, that nothing can kill you as you stride effortlessly through the toughest of foes, just buy this option and get a few level 500 god-level horrors randbosses summoned on you! Death is guaranteed! You can even boast online by showing off what horrible horrible creatures are about to kill you!

As for why I'm adding this now; well this is less fun but I prefer to be honest as for why I'm doing it so...
In last October Steam had a glitch in their algorithm, which effect lasted for months and for many can still be felt today. Basically the algorithm suggesting games had gone bonkers and unless your game was an AAA or super indie it sank to the bottomless depths of hell. Many indie devs, including me, had their revenue cut by like 50+% (sometimes much more).
Valve told us this was not intentional and I truly believe them; they've always been very nice people when I needed them so I have no reason to doubt their word. But still, it made me realize that I am so dependent on Steam. This kind of made me enter panic mode, I was mentally unwell for some time I must admit. Maybe I'm too fearful, a scared little boy or whatever but still that's how I feel/felt.
So I've pondered about additional revenue streams and I remembered about some players that kept asking to be able to buy more vault space and cosmetics. So finally after many years I caved in and the rest is (future) history!

And to be perfectly clear: this is just a way for people who want to support the game to do so while getting a few cosmetic/fun stuff out of it. The game itself is free/cheap and will keep on being so because making my game accessible to more people is something I truly believe in. Also I'm an evil god of darkness, thus I want to reach as many minions as possible; you know to eat their souls and stuff... :)

Next expansion announcement: The Lost Land


And last but certainly not least... A new expansion! And not a small one at that. For a long time now I've only announced expansions when they were very nearly finished. This time I'm trying another way and instead I'm teasing it early on. As you can see on the teaser, no ingame art exists yet but many sketches. The lore, zones, foes, stories, ... are all roughly defined and being implemented. The new races and classes are already half-way done.
Still it'll be a long way until release, which will obviously happen in exactly 1DGTU!

"But DarkGod, you didn't tell us what it is ABOUT!" Fear not my brave minion, I'm coming to that!
I can not yet reveal too much about it, and keep in mind anything can change, but here are some key facts for your pleasure:

  • It is set on the continent of Tar'Eyal, to the south of Maj'Eyal, which you can already glimpse at the shores on the southern point of Shaloren lands ingame.
  • Two prominent forces on the continent: the Great and Bountiful Undeath Empire and the Saupur Imperium
  • The continent has been shielded from the outside by a mysterious shield for millennia
  • It features a "half-campaign". It happens at the same time as Age of Ascendancy, the player starts on Tar'Eyal and it replaces the first half of the normal game.
  • About 15ish zones planned, perhaps more
  • At least two new classes: Dust Mages and Gravelords. It is very likely at least a third one will be added.
  • At least six new races: Risens, Vessels, Vampires, Exarchs, Saurpurs (two kinds, reptilian and draconic). And possibly more!
  • The usual tons of new lore, artifacts, npcs, achievements, quests, ...

To be on trend

So it seems like every single content creator is on Patreon but me. Well, I suppose I need to fix that then!
Joking aside, I've been asked many times if I could provide alternatives to Paypal for donations because well, some (many?) people are not fond of it at all. Lately Patreon announced they'd change their fees, except for people that got on before May, so I thought "Hey, I suppose it's as good as time as ever".
Now this is a bit of a different Patreon page than people are used to. In the spirit of always trying to keep things fair for every players, no matter where they buy the game/donate, I've decided that all the different pledge tiers would never entail players to anything special. Instead the system will simply count all the money that has been received from a pledge and add it to the voratun coins on te4.org. Just like any other donations. Patreon pledgers will get a blue name in the chat like any other recurring donation setups.
I know this is likely to lose me some pledges, but I think being fair to everybody is more important.
You can find the Patreon page here: https://www.patreon.com/darkgodone

The Future: new rendering engine

For a very long time now I've had a side project: upgrading the display code used by T-Engine4.
When I started making the game it was my very first OpenGL project, so as you can imagine the code sucked royally.
It has gotten better over time but it still follows the same principles I first implemented, and frankly, they suck.

Some time ago I spoke about porting the game to tablets & phones, this presents a lot of UI challenges as Tales of Maj'Eyal is just a wee bit more complex than your usual phone game. But it also presents code problems as the current way of doing OpenGL just does not cut it.

The new rendering code is meant to alleviate this problem. It's a very long project because it means rewriting so much code and because the new code is not the same even in concept. The worst part about this project is that, on the surface, the user will see very little change from all of this. Apart from a somewhat better font handling and some smoother animations, the primary changes will be a new particle system, and a visual editor to implement them.

Still it's a lot of thankless invisible work, but it is needed to ensure the future of the game :)

The Other Future: translation?

This is even more hypothetical but something I've also worked on a bit, adding a translation layer to the engine to make it available in multiple languages. This is a huge undertaking and unlikely to come fast, if at all, but it would be so nice, wouldn't it?

Final Words: the DarkGod has spoken!

And there you go, you know of some of the projects being worked on/thought about. Do note that those are only the relative short-term stuff, ideas are certainly not something I lack ;) As I have said many times, Tales of Maj'Eyal is my baby, I love it and I do not plan on stopping as long as the community supports me with love (and sadly, money too as this is the real world :/ ).

Thanks to all of you and I hope you'll love what comes next, and then what comes afterwards and ... and ... well you get the idea :)

The Pikataclysm is upon us! RUN FOR YOUR LIVES!

What could be terrifying about little cute bunnies and eggs?
Nothing you say? Well, think again for the Pikataclysm has arrived to Eyal and will stay active until May 1st!
Beware of what lurks in this strange place, for sometimes, bunnies have big teeth.

The Pikataclysm is a yearly special server event, triggered every 10 minutes by the server to all players currently logged in. There are others such events, come find them all during the year!

Today is the 9th Anniversary of Tales of Maj'Eyal first line of code!

So today, not sure why, I was looking at the very first commit on the game's code and it turns out it was done on the 17th November 2009! Making the code exactly 9 years old today!

So I thought I'd make a little retrospective of how things where at the very beginning at the 1 day, 1 week, 1 month, 6 months and 1 year marks. This way you can see how things started, including some screenshots of stuff I'm probably the only one to ever have seen ;)

Oh and if you log ingame this week, you will get a little special celebration event! Yayz!

For each step we will also count the number of files and lines of code of the game (for simplicity of counting this includes libraries too, this is mostly important for the C code).

But first, a little anecdote of how the game came into being.

Tales of Maj'Eyal was born as Tales of Middle Earth 4, set in a Tolkien setting. It was meant as the successor of my old game aptly named .. Tales of Middle Earth 2 (and the aborted 3), itself being the evolution of Tales of Middle Earth 1 and Pernangband, which was started a long time ago in 1998.

After Tales of Middle Earth 3 had mostly failed due to trying to make old non adaptable code into something new I stopped doing anything with it for a few years. Before that however Tales of Middle Earth 2 was a well known game in the, then way smaller, roguelike community. So a few years had gone by but I kinda always felt guilty to abandon my players, but I just couldn't force myself to work with such old inflexible code anymore where every new feature felt more like a struggle than a joy to add.

Then, in the middle of November 2009, I caught a bad case of the flu, I was forced to stay home for a week and well, felt like crap, sweating and being in pain in my bed for no reason. But I simply can not stay put and do nothing, I don't work this way and thus I decided that given I'd feel like crap, I could also feel like crap on my computer and work on something. All the guilt I felt of abandoning my old players, and the fact that no roguelike at that time gave me an acceptable pure spellcaster experience, made me decide that I wanted to start on Tales of Middle Earth 4, but on my own term, on my own code, starting from nothing and building from there.

I spent some hours thinking of how I'd like the main structures of the game & engine to work and articulate and then started coding it. This is probably one of my proudest code moments because the structure I devised back then handled the test of time very well and is still today the foundation of Tales of Maj'Eyal and still feels adapted to whatever new strange ideas I have for the game.

So without further ado, let's have a quick look at the first commit!

First Commit
Stats: 4 lua files totaling 104 lines and 105 C/C++ files totaling 42822 lines.

The first ever commit saw the introduction of a very (very) basic map and entities code on the Lua side, and very basic SDL display & keyboard code on the C side. There was no yet any concept of modules, but a commented line in the lua engine code shows they were planned from the starts, as it says 'dofile("/game/modules/tome/")'.

First Day

Stats: 8 lua files totaling 237 lines and 103 C/C++ files totaling 42627 lines.

On the last commit of the first day, the modules system was now working. All game tests, map example, ... were done in the "tome" module, split from the engine.
The number of lua files, and lines, had more than doubled already and was showing no signs of slowing down as you will see in the next time mark.

First Week

Stats: 53 lua files totaling 4660 lines and 137 C/C++ files totaling 47997 lines.

By the one week mark, most of the important engine's structures which still exist today, identical but much enhanced, was in place and working. This also saw the beginnings of an UI layer as seen in the screenshot with the tooltip and basic combat log. The engine also saw many additions, map generators, specialization of entities into actors and grids and so on.

The tome module was also starting to show signs of a structure that is still used to this day. with zones split into their own folders and so on.

Oh and please, delight your eyes at the magnificent player tile I drew myself! Such art, much talent! ;)

First Month

Stats: 116 lua files totaling 11413 lines and 156 C/C++ files totaling 52296 lines.

The magnificent player tile is obviously still present! But a lot of things have changed or evolved, too many to list them all but let's have a look at a few of them.

On the engine side the two biggest additions, because of how far reaching they are, are the serialization code and the temporary values code.

Every single object in memory gained this capability which for non-coders can be explained as being able to generate some text that represent the object in memory. Using this important feature the engine could now "dump" it's memory into a file and reload it later, effectively giving savefiles. And what's important about those is that they would automagically record any change to anything without me having to plan for them to save. This is extremely freeing on the design side and helped a lot to get wild with things later on.

The temporary values code of entities is a bit technical too but basically, imagine that any actor/grid/object/... has a whole bunch of properties (color, weight, price, damage, life, whatever). This system allows any part of the code to tell an entity "ok now you add X to the value of this property of this object". This is rather easy and basically just adding two numbers; but the other side of the system is that later on the code can say "ok now revert *this specific change* and not the rest". Effectively the engine remembers every change to every property of every entity and thus is later able to revert them individually. This is heavily used by all talents and timed effects code (and much more). For example, every single time you use a regeneration infusion in game, this system is used.

On the side of that the engine also saw the addition of other important systems like multiple, switchable, map generators, the further specialization of entities into objects, and thus an inventory system, the ability to have either turn-based or realtime game modules, and the talents/timed effects code.

Six Months

Stats: 461 lua files totaling 50739 lines and 238 C/C++ files totaling 82574 lines.

While up to the first month all I had to fight "ingame" were dragons of death, the next months would see the addition of actual playable game data. The screenshot even starts to look like a game at that point. On it the most notable thing we can see is the addition of a tileset instead of using ASCII tiles. But this is not all at all!

The engine started to support sounds and musics, the switch to LuaJIT code for more speed, the support for customizable options and keybinds. It also saw the birth of the "boot" module. This is what you see when you start the game: the main menu where you can set options, start a new character, load one, and so on. This is actually a game module like any other!

It is also the first time the number of lua files (but not the number of lines) passed the number of C files, good times!

On the game side there was much progress made, and could be recognizable by players today (even though the game had not yet transitioned to its own setting yet). It had multiple playable zones, many objects and NPCs, a whole bunch of classes (the wilders being the latest added at the time) and even some quests working.
Also for fun, notice how on the screenshot there is a potion of lesser healing listed. Yes at this time the inscriptions system didn't exist yet.

Somewhere along the line the first alpha was sent to some of my old players and later on public beta started.

First Year

Stats: 1283 lua files totaling 138612 lines and 278 C/C++ files totaling 132743 lines.

Potions are gone! Inscriptions are in! Yes, one of the very important ToME system was never planned to exist; it only came into being when a player suggested it'd work better than spam quaffing potions like other games did. And it did work so much better.

Oh yeah an other thing that is gone: the Tolkien setting! Replaced by my own custom one. While I really love Tolkien's work it wasn't fitting anymore for the wild stuff I wanted to do. Also I had been bitten by a C&D letter long ago with Pernangband and I didn't really want to repeat the experience. And doing my own setting was liberating! "Eyalverse" is my baby now, the more stories and facts I write for it, the more ideas I get! It is both great and frightening because I can easily see myself adding new stuff to it in 20 years ;)

Aside from that the game was now really starting to feel like an actual big game with many zones, quests, classes, races and so on. Lore notes started to appear, providing insight into the past of the game's universe, or npc's motivations, or simply random fun bits like the minions of The Master writing poems to his glory!
Oh and it could be won, which is kinda important too ;)

Some of the whacky classes were already in, like the chronomancers. Funny thing about them too: remember the serialization code I talked about much earlier that is used to make savefiles? This is also the very basis of time spells that let you go back to the past! And that cool See the Threads spell were you can live three different timelines and choose your best? Yup that too! When you do choose at the end, you actually have 3 copies of the game world inside the game!

The engine received even more additions, to AI and pathing (distance maps, A*), to map generation and so on and so forth. But the two huge additions are most certainly the switch of the whole graphical stack using OpenGL directly instead of SDL and the addition of a particles system to display spell effects.

The first online features also started to appear, namely the saving of your unlocks, achievements, .. online. There wasn't yet any ingame chat or character's sheet upload though.

This is also the first time that there are more lua code lines than C code lines. And you have to understand that the C lines include many third parties libraries I use while the lua code have very little, so that's a whole bunch of custom lua code ;)

Nowadays

Stats: 2467 lua files totaling 382106 lines and 466 C/C++ files totaling 230310 lines.

And finally this brings us to today, as you can see the lua files and line count has the C side thoroughly beat and this is not including any official addon or expansions. If those were to be used the counter would skyrocket!

I will not even try to list all the changes that happened in 8 years, there are far too many but it's been a wild ride, full of joy and sometimes annoying bugs. What's more, and best, about it is that I have not been alone for this amazing ride, I've always had the support of a great community and out of it along the years many individuals have stepped forward and gave their time and energy to contribute many important stuff to the code. I can not list them all here (they are in the credits in any case) but they, and all players, have my thanks!

As for the future? Well, as long as players keep loving the game and getting even more friends to play I'll happily keep developing it. If one thing is certain is that I do not lack ideas about new stories to tell in the "Eyalverse", only time is lacking! So watch out for a huge 1.6 patch coming to you! Also know that the next expansion is already being work on and will focus on stuff that happens on Eyal at the same time as the main campaign but... elsewhere.
Hell there may even be some new cool stuff coming to Embers of Rage... did anybody say new class? No ? Oh I thought so..

But for now I feel like I've written more than enough and if you managed to read it all and not get utterly bored, I thank you and will see you soon!

Have fun in Eyal!

Notice: All characters services are back online!

My minions!

The update, while it took a bit longer than planned, is now up and running. Actually it's been running for a few hours now :)

Have fun deaths in Eyal!

Notice: All characters services are on readonly mode for a few hours

Heya minions!

Starting now and for at least a couple hours, all characters services are switched to read-only mode. This means the profile server is still up and running along with the chat, but no charsheet will update, no new characters will register online.

I'm updating the underlying data structure and converting a bunch of things to make things faster in the future, so hang on tight!

You can play the game just fine though don't worry, but if you have an inbound winner that you'd like to make sure will register, better to wait for the notice that all is back up as normal.

Have fun while I work relentlessly for your enjoyment! ;)

Syndicate content