A malignancy grows under the foundations of Caecea Manor. Baron Anton Caecea arranges his marriage with a beloved courtier, Emilia Hall, who he keeps imprisoned in order to breed him a bloodline. He is a practiced Necromancer, and has long stumbled through the primordial secrets hidden within the unnameable tomes he collected. Brought back from their very bones, the newly returned are tortured for horrific lost secrets, blackmail, locations or artifacts until they are once again returned to lie in the Earth. It is from the venerable, rumor shadowed catacombs below that Anton conducts his blasphemous affairs. In a final effort to retain any semblance of hope, Emilia sneaks out a letter addressed to the Church. It is then that the intercepted scroll is passed to the secretive, forbidden department of the Witchfinders. Albert Gray, the leading agent in the office, is a stoic and clinical investigator of the occult who personally adopts the mission to investigate Caecea Manor, to prove the practice of Necromancy, and to put an end to such a blight upon the world. A disquieting narrative weaved through the occult, madness, and despair. You all soon shall be in awe, frozen in the midst of the Shadow of the Ramlord.


Glenn Winkelmann Jr Project Lead, Lead Writer, Lead Designer
Ian Wiese Lead Writer, Lead Editor
Petr Sedláček Lead Programmer
Karba Lead Level Designer
Slanderous Secondary Level Designer
FrictionalWeekly Secondary Level Designer
Unknow n Programmer
Hollowinside Programmer, Gameplay Designer
Jarod D'Camp Lead Composer
David Smolanowicz Lead Sound Director

Voice Actors

David Bodtcher Voice Acting Baron Anton Caecea
Michael Schwalbe Voice Acting Albert Gray
Vacant Voice Acting Baroness Emilia Hall
Post article RSS Articles

Scripting in Amnesia


Hello, everyone!
I'm Spelos, and I'm the lead programmer of The Shadow of the Ramlord. In this development diary, I would like to talk about how we structure and organize our code, as well as keep it consistent throughout our codebase. While this article delves into the technicalities of programming, it also provides a few tips and suggestions to other developers or hobby mod creators. So let's get into it.

Amnesia's scripting language is very tightly coupled with Amnesia's API. That, unfortunately, means that a lot of proven methods of writing clean code do not apply. That is why I decided to write a derivative standard that tries to implement as many clean code principles as possible while keeping script files light and easy to read. The standard is public and you can find it HERE. This public standard goes into details of both styling and form of script files and proposes one of many possible structures.

Programmers read their code much more than they write it. Amnesia mod developers read Script_Functions part of the wiki much more than they read their code. Why is that?

It is because Amnesia modders have to interact with the API that Frictional Games designed. Your script is a plugin for Amnesia. That's why all of the code is dependant on Amnesia's internal signatures. Is Amnesia's API well written? Absolutely not. Can we work around it? Yes, we can.

A good example of the type of enhancement that we do to improve code readability is long function signature commenting. Take for example this extended function for creation of a particle system.

CreateParticleSystemAtEntityExt("BlueDust", "DustCloud.ps", "DustArea", false, 0.3f, 0.9f, 0.3f, 1.0f, true, 1.0f, 0.5f, 5.0f, 6.0f);

Granted, this is an extreme example, but it demonstrates the problem in a nice way. You see that 'false' boolean that's the fourth parameter? What does it do? And how does it differ from the ninth 'true' boolean? What are the floats on about?

Chances are, you would consult the all-knowing FictionalGames Wiki. What happens to a programmer when she needs to consult documentation in the middle of an algorithm? She loses flow, gets distracted, annoyed even.

We cannot completely get rid of this problem without abstracting the whole API, which is not an option given you cannot easily include other scripts inside your own and copying a few hundred lines into each of your script files isn't a good solution. And so we solved this potential issue by forcing an 80 character limit on a line and parameter comments for functions with long signatures. I mean, look for yourself, doesn't this look better?

You can now confidently say what those booleans do. And while some people would swear with their life that they remember all these parameters, since they're expert modders, I would argue that readability has more advantages.

Look at the color parameters. What color is it closest to? Green, yes. Now tell me, why is a "BlueDust" particle green? It is a bug, yes. Would you ever notice in the previous example? Most likely in the game when you see that the dust is green. Then you would go into the code look at the large function and... Well, you'd probably check the wiki to see what those parameters do. But in the readable version, you take a look at the color, go "Yep" and fix it within a few seconds.

There is a ton of small little improvements you can do to ease your development and save yourself from dealing with terrible issues. Most of these are not even specific to AngelScript. I would highly recommend a book by Dustin Boswell and Trevor Foucher called "The Art of Readable Code". There is a free online version. It includes a lot more great tips for improving your programming and making it more human-friendly.

After all, programming with other people is the best way to improve, have fun, and make something awesome together.

February Development Diary

February Development Diary

News 1 comment

A look at the first month of development for The Shadow of the Ramlord.

Announcing The Shadow of the Ramlord

Announcing The Shadow of the Ramlord

News 4 comments

A look at the next Dark Craft Studios project, The Shadow of the Ramlord.

Comments  (0 - 10 of 18)

Following! Will there be a lot of custom assets? From AMFP for example?

Reply Good karma Bad karma+2 votes
C-zom Creator

We will be utilizing a sparse selection of complimentary assets to help push our story. I can't spoil what we have, nor will it be overwhelmingly exciting, but the main vision is to accomplish a polished, concise custom story using a Vanilla-First approach.

Reply Good karma+1 vote

They are using the vanilla amnesia assets for the mod.

Reply Good karma Bad karma+2 votes

If this mod have some custom assets, i would like to play it

Reply Good karma Bad karma+2 votes
C-zom Creator

It'll have a few!

Reply Good karma+1 vote

Wow, that lighting looks good! Also gave it a track, seems good! :) I will surely play it when it gets released

Reply Good karma Bad karma+2 votes
C-zom Creator

Excited to see what you think after release, thank you!

Reply Good karma+1 vote
C-zom Creator

There's a large status update and February Development Diary ready to authorize whenever Moddb pushes it though, it talks a lot about our direction and plans.

Things have been going wonderfully in the studio, and Ramlord progress has been awesome.

Reply Good karma+2 votes

Can't wait to play Amnesia this summer! :D

Reply Good karma Bad karma+3 votes
C-zom Creator

Amnesia never dies!

Reply Good karma+1 vote
Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.

Follow Report Profile
Amnesia: The Dark Descent
Send Message
Release date
Mod watch
Single Player

Latest tweets from @darkcraftstudio

#Triptych 1.1c Final Edition is out, with all updates rolled into one full download. Thank you all for the support! Moddb.com

May 28 2017

RT @ModDB: Play @darkcraftstudio's Triptych mod for @Crysis which turns the tropical shooter into a dark Lovecraftian adventur… T.co

May 21 2017

#Triptych has released. Owners of Crysis 1 can play our free total conversion modification below. It is finished. Moddb.com

Mar 13 2017

#Triptych will release March 13th, 2017. I am excited to announce our official pre-release trailer; Youtube.com

Mar 7 2017

#Triptych has ongoing auditions for Samael, the villain of the narrative. Cast your attention over to Voiceactingalliance.com to apply!

Dec 6 2016

#Triptych Act III Near - Final Level Desig peek. T.co

Nov 24 2016

#Triptych Entrance to Sarcon -- Updated Details T.co

Oct 15 2016

#Triptych Act II Near Final Level design. T.co

Oct 15 2016

#Triptych Entrance to Sarcon T.co

Oct 6 2016

#Triptych Act II Level Design; we will go gold on it in two weeks. T.co

Oct 6 2016

Embed Buttons
Link to The Shadow of the Ramlord by selecting a button and using the embed code provided more...
The Shadow of the Ramlord
Last Update
29 members