LSD: REVAMPED


About

This is a kind-of autobiographical retelling of the development of LSD: Revamped. Each step is accompanied by a picture of the state of the game at the time.


The project started in October 2011 because I wanted to work on something and I had been watching AzuriteReaction play LSD: Dream Emulator. I didn't know much about game development at that point, and I knew nothing about Unity, the engine that LSD Revamped runs on. At this point the game was called 'LSD: The Remake'.

13th October, 2011: The first screenshot I have

The project's vision was initially to be a HD, modern version of LSD. I was attempting to make HD versions of all the environments, and teaching myself programming and art along the way.

30th March, 2012: Early 'HD' version of the Violence District

By December 2012, the game had a title screen. Not pictured here is the mountain of janky code the whole game was built upon. It wasn't very stable at all, was slow, and would frequently crash. You used to be able to use JavaScript in Unity, and a lot of the game's code was written in this.

2nd December, 2012: Titlescreen. Not pictured: terrible code.

By 2013 I had discovered C# (another language Unity supported) and decided it was better (it was). I began rewriting large portions of the game's code in C#. This would be the second rewrite out of three. The code was still kinda janky, but not Unity JavaScript janky.

6th March, 2013: Some janky C# code, I think for dream state management.

I added a counter for when development started to the title screen. I used the wrong date. The actual value should be 664 days. If only I knew I'd still be doing it at 3113 days (at time of writing).

7th August, 2013: Poor estimates, and prediction.

To provide some context, when I started in 2011 I was about 14 years old and attending school full time. I was now 16 years old, and still attending school full time. It was difficult to find time to work on the game, but I definitely wasn't doing it as much as I should have. So I decided to set myself a goal to finish it that year! The name also changed to 'LSD Revamped', which it would keep. I think the goal here was to make it more explicit that the game was going to be more modern and not just a remake. I ended up making it look retro anyway, oh well.

14th January, 2014: I actually turned out to be right.

I loved using Hammer Editor to make levels for Portal and HL2 when I was younger, so I decided I wanted LSDR to have that too. So, I started making modding tools. This would get scrapped and remade about three times.

17th April, 2014: Early version of modding tools.

Many days and many bugs later, I figure out how to make levels in an open-source version of Hammer Editor (Jackhammer) and load them in-game. I start making all of the levels properly now.

18th August, 2014: Jackhammer, showing some geometry.

AzuriteReaction, the YouTuber who first introduced me to the game, wants to play the remake. I grind a bunch throughout October to get a special playable demo version ready. It gets played on a livestream, and goes kinda okay. Looking back, it wasn't ready to be played. The dreams are bad knockoffs, Happytown and the Violence District look absolutely nothing like the originals. There was hardly any content. Still, I couldn't believe he was playing it!

31st October, 2014: First contact.

On the 21st December, 2014, the game releases to everyone. It was still far from finished. I had one of the busiest days of my life responding to questions, fixing bugs/crashes from reports, and reading feedback. It was amazing. A week after the release, Osamu Sato (the original creator of LSD: Dream Emulator) would post a link to it on his Facebook page. I don't find this out until 2016, but when I do I am beyond excited. I couldn't believe it!

21st December, 2014: Sweet release.

Reitanna Seishin, a fan of the game, makes some awesome vector graphics and lets me use them in the game. I promptly redo the UI to use them, and they're still in use in the game in its current version! Awesome work, Reitanna. Thank you.

18th February, 2015: A fresh coat of paint.

It's the summer. I've finished school, and I have nothing but free time before starting University in September. I scrap the mod tools and make a custom dream editor: 'Torii'. I'm fairly okay at programming at this point, and I have a blast learning new stuff and making the editor. My daily routine was essentially: wake up, write code, exercise, write code, sleep. It was awesome.

3rd July, 2015: The Torii editor! I loved this, but ended up scrapping it eventually.

At home from University on Christmas break, I decide to try to reverse engineer some of the original game's files based on some tips I got from a fan, 'elzo_d'. I ended up being able to extract the tiles that make up the game world. I couldn't figure out how the textures were stored, so I settled for texturing them manually. This would be the start of a series of reverse engineering breakthroughs that allowed me to load complete levels right from the files of the original game.

22nd December, 2015: Tiles from the Monument Park! Recognise any?

I'm now extracting tiles from the original game, deduplicating them (they were split across multiple files, with some tiles being in many), manually texturing them, using a Blender script to load them into Blender and arrange them in the layout of the level, exporting them to OBJ, importing them to Torii, then exporting them to be loaded as levels in game. Phew. Don't worry, it gets easier than this as I make more reverse engineering progress.

27th June, 2016: I'm making the Monument Park in Torii. The process is lengthy, tedious, and error prone.

I'm making more levels with the same process. The Natural World (pictured) is the biggest level in the game. I don't remember how long it took to make it, but it was a long time. Still, it was amazing to see levels from previously unseen angles.

29th August, 2016: The first ever overhead view of the Natural World. It lines up very well with the three maps you can find in the dream.

2017 flew by without much progress, University work was becoming more time consuming, and I had an internship over the summer too. At some point I decided to put all my reverse engineering in one place and make a library to load data from the original game. LibLSD and LSDView were born. I can now load full levels with texture information. LibLSD is how LSD: Revamped loads the original game's data files.

31st January, 2018: A small part of the Violence District loaded into LSDView.

Spending ages poring through leaked PS1 developer documentation, I find an incomplete file format specification that describes animation data. I look through LSD's files to see if it happens to use it, and lo and behold I find some embedded in the game's level data. I write some code to load the data and play it, and LSDView can now view animations! Additionally I find a weird dog animation that isn't used in game!

1st February, 2018: LSDView now supports loading animation data.

I graduate University, get a job writing software, and start integrating LibLSD into LSD: Revamped. This leads to the 3rd and final rewrite of the game, and it really starts shaping up. I implement graphical effects that look almost exactly like the original, in some cases emulating PS1 hardware to achieve certain effects.

27th January, 2019: Looking good.

It's 2020 and the pandemic is in full swing. A new version of LSD:R is released which is basically a rewrite incorporating all of the things we'd learned so far. It's the final rewrite and serves as a stable foundation upon which the rest of the game is built.

3rd May, 2020: Version 0.1.

A couple of years pass with me working various jobs while chipping away at LSD:R progress, mostly laying the groundwork for adding interactive objects, then adding them. In late 2023 0.2 is released, which contains every interactive object in the game.

13th November, 2023: Version 0.2.