Posts

Showing posts from August, 2019

Google Summer of Code summary

Hello, the GSoC is at it's end and it is time for me to summarize my work in the past 12 weeks. In case you only want to see the code, here are the pull requests:  Mission Supernova ,  Text to speech ,  Encoding conversion . Projects Mission Supernova As the first project, I worked on an engine for Mission Supernova 2. The project description can be found here The engine for the first Mission Supernova game was already almost finished. At first, I decided to create a separate engine (supernova2) and I started with copying code, that is the same for both games from supernova to supernova2. After this I started adding the Mission Supernova 2 specific parts (interactions with objects, rooms, ...), which thanks to having the original source codes wasn't hard. When I had most of the game working, I had to work a bit on improving the translation. There was a tool from the first engine to create translations of game strings and images with only 2 colors. But unlike with the f

Vacation update

Hello, last week I was on vacation, so I have done almost no work and that's why this blog post will be a bit shorter. I worked only on the text to speech project. I had to rework quite a big parts of the Windows and Linux managers, because I used SAPI's and speech-dispatcher's queues to easily queue speeches and that didn't give me the needed control over the queues to properly implement the INTERRUPT_NO_REPEAT action I wrote about in last post. So now I use my own queues and start speeches one by one in a separate thread. The goal for this last week of GSoC is clear: finish TTS and encoding conversion projects and create pull requests for them. Hopefully I can achieve this goal.

TTS almost done

Hello readers, since the last blog post, the TTS project slowly but surely neared it's end. I added OSD message and GUI tooltip reading. We added the possibility to choose what should happen if the TTS gets request to read a message while another message is being read. So it can be added to a queue, it can just be ignored, or it can interrupt the current speech and get read instead (more actions, which depend on the first message in queue are possible). Before only interrupting the currently read message and reading the new one instead was possible. Me and Criezy (who implemented the macOS part) understood some actions differently, so right now the INTERRUPT_NO_REPEAT action, which will interrupt the current speech and delete the speech queue only if the new message is different than the currently spoken message behaves differently on Windows and Linux (it interrupts and deletes the queue if the last message in queue is different, not the currently spoken one.) Once I reimplement t