A new milestone in the ScummVM development

Creator profile picture

Eugene Sandulenko

2 days ago

A new milestone in the ScummVM development

2 days ago

We are about to release a new version of ScummVM, and it is going to signify a new era for our project.

I've been managing the release process from 0.6.0, which was back in 2004, and only two releases were handled by other devs since that.

In time, I developed a quite complex and comprehensive approach to ScummVM releases, which included pre-release testing, two-phase announcement, and tons and tons of other steps. I was thinking: quality and tesrting first, while allowing the porters to build their ports by the release date. You may read the full procedure at our Wiki: https://wiki.scummvm.org/index.php?title=HOWTO-Release

However, in the recent years, there has been a paradigm shift. First of all, the users literally stopped helping us with pre-release testing. We were allowing like 4-6 weeks of testing before releases , and still could get only a couple of playtests, often none. It is understandable, since these days the modern AAA titles are released in a pretty flawless state, thus, the users always expect quality. And on top of that, our porters had difficulties with building their ports by the release, sometimes dragging weeks and months (real life takes precedence, you know).

All of this made me urge to reconsider our procedures, thus I ran an extensive discussion with all of the developers, big parts of which are reflected in the Google document: https://docs.google.com/document/d/1r6R2_lOeHKfjvBBOZaadyn4nGhY42E-nG_sBqx0B_J0/edit?tab=t.0

So, in short. We are switching to the rolling and frequent releases, when we will gear towards quarterly cadence. We will not create branches from our main development line, but rather turn the releases into tags, or points in our development history. Also, to reflect this new approach, we will be numbering versions after the YEAR.RELEASE.PATCH schema, starting with 2026.1.0.

I hope, that this approach will provide our users with latest and greatest experience in reviving their Adventures or RPGs, without relying on "unstable" releases, or awaiting for almost a year until their bugfixes (or GUI translation fixes) are available in the ScummVM mainline. Also, this should put less pressure on the development team, since we eliminating things such as backporting, switching our translation service, urge of syncing the ports build system etc.

We will be listening to feedback as we always trying to do and if you have any ideas or complains, please share it with us. Our primary means of communication these days is our Discord server at https://discord.gg/4cDsMNtcpG

Happy adventuring!


Comments

A new milestone in the ScummVM development

Creator profile picture

Eugene Sandulenko

2 days ago

A new milestone in the ScummVM development

2 days ago

We are about to release a new version of ScummVM, and it is going to signify a new era for our project.

I've been managing the release process from 0.6.0, which was back in 2004, and only two releases were handled by other devs since that.

In time, I developed a quite complex and comprehensive approach to ScummVM releases, which included pre-release testing, two-phase announcement, and tons and tons of other steps. I was thinking: quality and tesrting first, while allowing the porters to build their ports by the release date. You may read the full procedure at our Wiki: https://wiki.scummvm.org/index.php?title=HOWTO-Release

However, in the recent years, there has been a paradigm shift. First of all, the users literally stopped helping us with pre-release testing. We were allowing like 4-6 weeks of testing before releases , and still could get only a couple of playtests, often none. It is understandable, since these days the modern AAA titles are released in a pretty flawless state, thus, the users always expect quality. And on top of that, our porters had difficulties with building their ports by the release, sometimes dragging weeks and months (real life takes precedence, you know).

All of this made me urge to reconsider our procedures, thus I ran an extensive discussion with all of the developers, big parts of which are reflected in the Google document: https://docs.google.com/document/d/1r6R2_lOeHKfjvBBOZaadyn4nGhY42E-nG_sBqx0B_J0/edit?tab=t.0

So, in short. We are switching to the rolling and frequent releases, when we will gear towards quarterly cadence. We will not create branches from our main development line, but rather turn the releases into tags, or points in our development history. Also, to reflect this new approach, we will be numbering versions after the YEAR.RELEASE.PATCH schema, starting with 2026.1.0.

I hope, that this approach will provide our users with latest and greatest experience in reviving their Adventures or RPGs, without relying on "unstable" releases, or awaiting for almost a year until their bugfixes (or GUI translation fixes) are available in the ScummVM mainline. Also, this should put less pressure on the development team, since we eliminating things such as backporting, switching our translation service, urge of syncing the ports build system etc.

We will be listening to feedback as we always trying to do and if you have any ideas or complains, please share it with us. Our primary means of communication these days is our Discord server at https://discord.gg/4cDsMNtcpG

Happy adventuring!


Comments

Related posts

We are about to release a new version of ScummVM, and it is going to signify a new era for our project. I've been managing the release process from 0.6.0, which was back in 2004, and only two releases were handled by other devs since that. In time, I developed a quite complex and comprehensive approach to ScummVM releases, which included pre-release testing, two-phase announcement, and tons and tons of other steps. I was thinking: quality and tesrting first, while allowing the porters to build their ports by the release date. You may read the full procedure at our Wiki: https://wiki.scummvm.org/index.php?title=HOWTO-Release However, in the recent years, there has been a paradigm shift. First of all, the users literally stopped helping us with pre-release testing. We were allowing like 4-6 weeks of testing before releases , and still could get only a couple of playtests, often none. It is understandable, since these days the modern AAA titles are released in a pretty flawless state, thus, the users always expect quality. And on top of that, our porters had difficulties with building their ports by the release, sometimes dragging weeks and months (real life takes precedence, you know). All of this made me urge to reconsider our procedures, thus I ran an extensive discussion with all of the developers, big parts of which are reflected in the Google document: https://docs.google.com/document/d/1r6R2_lOeHKfjvBBOZaadyn4nGhY42E-nG_sBqx0B_J0/edit?tab=t.0 So, in short. We are switching to the rolling and frequent releases, when we will gear towards quarterly cadence. We will not create branches from our main development line, but rather turn the releases into tags, or points in our development history. Also, to reflect this new approach, we will be numbering versions after the YEAR.RELEASE.PATCH schema, starting with 2026.1.0. I hope, that this approach will provide our users with latest and greatest experience in reviving their Adventures or RPGs, without relying on "unstable" releases, or awaiting for almost a year until their bugfixes (or GUI translation fixes) are available in the ScummVM mainline. Also, this should put less pressure on the development team, since we eliminating things such as backporting, switching our translation service, urge of syncing the ports build system etc. We will be listening to feedback as we always trying to do and if you have any ideas or complains, please share it with us. Our primary means of communication these days is our Discord server at https://discord.gg/4cDsMNtcpG Happy adventuring!

A new milestone in the ScummVM development

2 days ago

2 days ago

0

0

0

0

Today marks the official start of GSoC. As it was happening in the last years, I was heavily involved with the pre-selection process with the students/candidates (it is quite difficult to call GSoC'ers not students, since for decades they were students-only, and it was two years ago when they allowed non-students to also join the program. Even more difficult is that this year, we indeed have all four accepted people studying in universities.) This year we had the highest number of such candidates, more than 50. Each candidate was welcomed and given an intake task, which, for sure, needed to be followed. We were helping with building ScummVM, though our build instructions seem to cover nearly 100% of cases, and we had difficulties only with people who have little dev experience. I prepared a list of tasks and put them on our Planka instance, a kanban board we use for tracking some of the projects. This year, I had an excellent helper, Gustavo aka gu3, who was handling mostly 3D-related tasks. And we used Discord threads in our #gsoc-channel for all communications. As usual, about every fifth candidate silently disappeared after getting an intake task. Still, we got 51 (!) Pull Requests, 39 of which were successfully merged. Incredible. We faced a couple of times when people used LLM (like ChatGPT) to "write" their code. Those were obvious straight away with bizarre logic, compilation errors accompanied with a person who were unable to answer questions about their code in a sane way. This led me to adjust our rules and clearly say: NO LLM-generated code or texts are accepted . We require proper code quality in our project, so if you attempt to generate code with a prompt and submit it as yours, that will lead to dismissal from the program. Of course, the LLM could be useful for generating boilerplate code, but even for explaining things, you must understand, that it could lie to you without any sense of guilt! From https://wiki.scummvm.org/index.php?title=Summer_of_Code/Project_Rules When it was time for proposal submissions, we received a total of 31 proposals. I reviewed all of them and filtered out: Generic proposals not tied to ScummVM (a marvel is "Seven Segment Display in OpenGL", yes, just a display) Proposals from people who did not talk to us. As a result, they did not provide all the needed information, and of course, had no Pull Request submitted Proposals without submitted Pull Request, or when the PR was rejected by us, usually by low quality and/or unresponsiveness of the author. This resulted in 10 proposals remaining to be ranked. Then, we had mentors opting in for mentoring specific tasks, and Google requires tasks to have at least one mentor. Otherwise, you cannot even rank it. This made us submit seven proposals, and finally, Google allocated five slots. To our surprise, one of the rejected students still expressed their willingness to work with us this summer. But then, not to our surprise, it followed with a radio silence. But I still hold my hopes :). One of the students, Alikhan, continued to work on qdEngine, doing it nonstop. And actually, he is about to complete the work. So, we will be switching him to another task, working on other engines. This covers my last 4 months in the project. Thanks to all of my patreons for supporting me, so I do not need to worry about my coffee :D.

GSoC time!

Today marks the official start of GSoC. As it was happening in the last years, I was heavily involved with the pre-selection process with th

Jun 2, 2025

Jun 2, 2025

5

5

0

0

In the recent weeks, I was working a lot on two things, polishing the WAGE engine and finally working on Director 6+ support. I was thinking about the latter for more than two years, but never dared to bite the bullet. Now it is finally happening. Prior to this, we have pretty sold Director 4 support, and moralrecordings was working on adding Director 5. The primary differences for D5 are multiple casts and RichText cast members. The multiple cast support required refactoring of all cast addressing from one number (CastID) to two numbers, Cast Library ID and Member ID. This was done a while ago, in June 2021. Back then, I asked a GSoC student to do this refactoring, since we knew that this feature would be required. Director 5 was not even loading back then. RichText cast members were kind of a bizarre beast. It took a while to figure out, and here are our findings. For each text, there are three resources: RTE0 – contains binary blob used by the RichTextEditor RTE1 – contains plain text representation of the text, e.g., no formatting, plain ASCII RTE2 – graphical representation of the text, essentially an RLE-decoded picture It appeared that RTE0 is never used by the Projector, only by the Authoring tool. That is, you cannot change the RichText; it is read-only. Thus, we silently ignore this resource in ScummVM. RTE1 is used for certain Lingo constructs, like `the text of member`, and finally, RTE2 is the thing we need to display on the Stage. After trial and error, moralrecordings implemented a parser for RTE2; however, it still has some problems around the edges, like it does not decode 4-bit images correctly. Also, the original was using some antialiasing algorithm on this, while we just copy it plainly. This leads to visual differences between ScummVM and the original. This is something I plan to look into in the near future. And recently, during my investigation, to my surprise, I found out what, in fact, the Director was using 3rd third-party library called Hermes Paige. And it was open-sourced since! You may find the full code and documentation at https://github.com/nmatavka/Hermes-Paige/tree/main So, if in the future somebody decides to spend some time on allowing editing of RTE0 resources in Director, or at least parsing them, there is now a much easier way. The whole thing is a platform-agnostic, full-blown rich text editor with around 70k lines of code. So, these are the main differences for Director 5, and they have been implemented so far. moralrecordings is testing various Director 5-based titles and fixing the issues, implementing things, etc. It is worth noting that a lot of effort goes into Xlib/Xtra development. Those are part of Director extensibility. You could create new objects, expose them to Lingo and operate on a new level. Another missing major functionality was the ability to save movies. It was introduced in Director 4, but we had only reading implemented. We were lucky to have a GSoC student working on it this summer, and I was mentoring him. He produced a solution that is semi-working, but it is still a great start. Eventually, we will bugfix it and make it work for any movie, and not just for a couple of test ones that the student was using during the development. Now, coming finally to Director 6. To my surprise, the number of changes from Director 5 is even less than D4->D5. In essence, it is a new event system for sprites, called "Behaviors", coupled with the concept of "sprite tweening". Of course, then there are changes in the Score structure, more properties for different cast members. Notably, after Director 7, the file format completely stabilizes up to at least Director 10. So, once I implemented the format differences, you can now load almost any movie. It will not run due to missing features like file formats, though many movies do start even for Director 10. The behaviors are essentially sprite scripts, just they are instantiated as objects, e.g., may have internal state, and there could be an arbitrary number of behavior scripts assigned to each sprite. Tweening is a way to keep sprite (and behaviors) across multiple frames; thus, the concept of the lifetime of a sprite was introduced. So, after implementing this and implementing additional events like `mouseOver`, we now have even complex titles working out of the box. moralrecordings using Puppet Motel as Director 6 title, and it runs extremely well despite being very complex inside. Those are the Director-related things I was working on. Along the way, I improved the Visual Debugger a lot (I think it deserves a separate post), added missing keywords and stubs, improved logging capabilities, and went with general bugfixes. These are my last three months, after GSoC was finished. Till next time! Thank you very much for supporting me via Patreon!

A major advancement with Director

Oct 13, 2025

Oct 13, 2025

1

1

0

0

Patreon wordmark

© 2026 Patreon