Do you want to see how the latest version of CTCT looks and works? Click here to download the demo version of the program to the drive and test its operation yourself!
Why NES Tetris
The Nintendo® Entertainment System is one of the greatest consoles in the history of video games. Despite the fact that it is already 35 years old and its glory years are long past, it still provides fun for thousands of players from around the world. On the other hand, Tetris® is — apart from Minecraft — the most popular game of all time, with sales of a staggering 170 million copies.
The second reason for creating CTCT software is the Tetris boom, initiated by the Americans in 2010, when the Classic Tetris World Championship was organized for the first time to select an official master. Since then, the game has become increasingly popular. Every year are organized the World Championship (CTWC), European Championship (CTEC), many national championships and qualifiers (including in the USA, Canada, Denmark, Germany, Finland, Singapore, United Kingdom, Australia and Poland), as well as monthly online championships (CTM and CTP). The game itself and the history of the first championships are well presented in the documentary film Ecstasy of Order: The Tetris Masters.
The third reason is the lack of publicly available software of this type. Currently, organizing local championships requires the use of many different programs (for recording and streaming, for storing data, for generating brackets, etc.), which requires a lot of work, and creating a professional-looking stream is very difficult. The CTCT can help to solve these problems.
Short tool history
Work on the CTCT program began in May 2019, aimed at creating a tool to support the upcoming Polish Championships in Toruń (CTWC Poland 2019). Despite its early and unfinished character, it proved to be great — the tool significantly improved and made the tournament easier, which was the first big success.
Soon, a slightly more extensive version was also used at the German Championships taking place in Völklingen (CTGC 2019), where it also worked very well. In feedback from the organizer of these championships, I received a message ended with these words:
"I just fell in love with using CTCT. I mean I could not imagine doing CTGC 2020 without it." — Marc a.k.a. DeusX
CTCT software is a unique multifunctional tool that allows to handle the whole championship in classic Tetris with a few clicks. This is especially important in the case of local championships and online tournaments, in which usually one person deals with everything — technical support, chat support and commenting on matches played. Transferring most of these responsibilities to the software means that the operator can focus mainly on commenting — both qualifying games and tournament matches.
The CTCT program does not depend on the region, which is why it can be successfully used for both NTSC (USA and Japan) and PAL (Europe, Asia, Australia) tournaments. In addition, the program's core are universal, thanks to which the project can be cloned and easily adapted to support another game, e.g. Dr. Mario.
The CTCT program consists of two windows — an extensive control panel and a background window. The control panel window is mainly used to update player data, qualification and matches results, as well as to switch scenes and configure the program. However, the background window is used to render the background graphic with data of a specific scene (e.g. with a list of qualifying results, brackets with players or playfields with player names and heart counters).
The interface is intuitive, characterized by accuracy and clarity, organized in the form of pages with tabs. It is equipped with a context menus, detailed descriptions and hints explaining the purpose of its individual functions. The program is created in such a way that it can be operated with the mouse, but also with the keyboard only.
The first component of the program is the scene database. The database consists of a large set of built-in scenes, but it is also possible to add your own. A special dialog box is provided for adding and modifying scene data, which allows you to enter a short description (for the operator purposes only), select from the disk graphics displayed in the background window and specify a scene hotkey. Additional scene settings are also available to allow you to properly calibrate the scene mechanism with the external recording software (e.g. OBS).
Click here to see a video showing adding a new scene to the database.
Due to the fact that activating the scene (using the scenes list or dedicated buttons) results in broadcasting the hotkey assigned to the scene in the system, CTCT can cooperate with any recording and streaming software.
Another component of the CTCT program is the player database, the content of which can be modified at any time during the tournament. Only a short nickname is required to register a player in the system, but it is also possible to provide optional data, such as: full name, location, profession, country name, achievements and any other custom information. Nick is mainly used internally, while all other data can be displayed as a graphical profile in the playfield before the start of the match.
Click here to see the video showing adding a new player to the database.
A special dialog is provided for adding and modifying player data, which, in addition to the controls for entering data, also has a built-in WYSIWYG preview box, which, when entering data, shows the final appearance of the player's profile (in line with the style of profiles used by CTWC).
The Tournament page is the heart of the CTCT program — the place where the operator spends the most time. Depending on the ongoing part of the championship, it is used to control the course of the qualifying round or brackets matches.
During the qualifying round, two pages are available to manage the course of the round. The Results List page contains a full list of player results, sorted in descending order. Sorting of qualifying results uses many factors, in particular: point results and also start levels (important in the case of draws), the number of max outs and the time of registration of results. Based on the position in this list, the program automatically determines the player seeds for the main stage of the tournament.
Two dialog boxes are intended for registration and modification of qualifying results. The first allows to quickly add a new result to the player selected on the list (by setting the number of points and the starting level). The second window allows to conveniently manage all the registered results of the player.
However, the second page of the panel — Current Games — contains controls to control the current qualifying attempts. It is used to select players (whose games are currently streamed) and allows registering new results. This page also has a set of buttons to control the scenes (to show and cover playfields and to display the board with the current ranking).
Brackets settings window
After qualifying, the Ending page has buttons to start the main stage of the tournament and, if necessary, to cancel the qualifying round. After pressing the tournament start button, the brackets settings dialog is displayed. It is primarily used to select players who advance, but also contains heart containers settings for individual tournament rounds.
After accepting the settings, the program automatically determines the size of the brackets based on the number of selected players, gives players seeds according to the obtained qualifying results, casts players in the brackets and generates a full list of matches. In case of insufficient number of players for a given brackets size, it additionally moves all players without a pair to the next rounds.
Matches control panel
In the main stage of the tournament, two pages are available to manage matches and their progress. The page Matches List contains a full list of matches grouped by rounds, as well as buttons to start the match, modify the result of an already registered match or reset it, as well as several buttons to control the scenes.
After selecting a match on the list and starting it, the Current Match page is displayed. It has buttons for managing the players' heart counters, as well as a substantial set of controls for controlling the scenes.
The CTCT program does not require complicated configuration or calibration — just start it and enjoy its benefits. There are several general settings available to facilitate its use and adapt operation to the recording software, as well as animated banner configuration.
An important functionality of the CTCT program is the support of the animated banner displayed at the bottom of the background window. This banner is used to provide important and additional information to viewers and players, and is also a visual attraction. Its content changes dynamically, adapting the content of the main labels to the stage of the tournament. This is an optional functionality, so if the banner is not to be visible, it can be hidden.
A dedicated dialog box is available to set the banner content and its behavior, available at any time during the tournament. The operator can specify the content and style of the label with the name of the tournament, use or not the label with information about the next match, provide the addresses of channels on popular social networks and specify their appearance, add any custom information, as well as define the order (in which the labels are displayed) and the visibility time. To visualize the final look, the dialog box is equipped with a set of WYSIWYG preview boxes, one for each banner label.
CTCT is a standard, native window application that does not require additional frameworks or libraries installed in the system for proper operation. Due to complete independence, it can be run on any computer with Windows XP, Vista, 7, 8, 8.1 and 10. In addition, CTCT is fully portable, so it can be run directly from the USB flash drive.
The program during operation is not CPU-intensive, thanks to which it has no effect on the frame rate of the video streamed to the web (recorded using external software, e.g. OBS). This makes it absolutely unnecessary to have a computer with powerful computing power. 250 MB of RAM and a screen with a minimum resolution of 1280×720 pixels are required for proper operation.
CTCT in numbers
Despite the fact that the software looks not very complex, it is characterized by quite big numbers, regarding both the construction of the program and additional data and external files included in the entire package. CTCT program:
- has two main windows and eleven dialog boxes,
- contains 37 built-in scenes for various stages of the tournament,
- uses two additional fonts to render data in the background window,
- uses a big set of graphics:
- 37 unique and stylish backgrounds for built-in scenes,
- two sets of flags of 251 icons,
- over a dozen heart graphics, logos of social media sites and achievement stickers,
- comes with three original Tetris® songs, looped to a form of about 5 minutes.
Many of the graphics used (mainly scene backgrounds and logos) also have their equivalents in vector form, which makes it easy to edit them and replace the original files with new ones (e.g. to change the organization logo in the scene backgrounds). Finally, some strictly technical information:
- the program is created in Lazarus IDE, using the Free Pascal language,
- the project consists of 28 units, 11 include files and 13 files with form data,
- contains a total of 17,605 lines of source code, written from scratch,
- the program includes an executable file and 588 additional files (mostly graphics and fonts),
- the whole package takes only 10.5 MB of disk space (27.3 MB with sound files),
- the workload is approximately 1,500 hours (about eight months).
The purpose of fundraising
Creating the CTCT program required a specialist knowledge and cost a lot of exhausting work. Over time, the program itself has grown into a quite powerful tool, contrary to initial assumptions. I worked on everything alone, ensuring the high quality of every aspect of the tool. The funds collected will somehow be a reward for devoting eight months to creating this program, and will also motivate for further work.
The funds will also be allocated to the buy devices and tools, without which the further development of the CTCT program will not be possible. There is required to buy a more modern laptop, NES consoles with Tetris® cartridges (for NTSC and PAL versions), CRT TVs, video grabbers, cameras, voltage converters, etc. If funds are collected, the program will be made available on the web as freeware software, completely free for anyone interested. Publishing the CTCT software should help popularize Tetris e-sport, so all hands to the pumps!
Information about each supporter will of course be placed on the About page in the control panel window, but also in the detailed instruction manual (PDF document) attached to the program and on the future project website.
If you can't or just don't want to donate, you can help in a different way. Send information about the CTCT project and this campaign to your friends, classmates, co-workers, provide the address on your social media channels or in other places where you are. I will also enjoy this form of help and be very grateful for it.
Plans for the future
Currently, work is underway to complete the first stable version of the software, which is characterized by the functionality described in the previous sections and presented in the screenshots. There is still to be done:
- add code responsible for handling errors during program startup,
- create the graphic for the splash window and present the data loading progress in it,
- create a detailed instruction manual for the tool (in the form of PDF document),
- figure out how to implement a dark theme for control panel window and all dialog boxes,
- complete the About page with information about supporters.
In the perspective of further work on the project, expected should be:
- analyzing video signals from consoles and rendering stacks in high resolution,
- support for additional meters, including TRT and BRN,
- keeping statistics and rendering charts summarizing games,
- external editor for customizing background and content for built-in scenes.
About the author
My name is Jarosław Baran a.k.a. furious programming, I'm from Poland. I am a freelancer, creating various stuff using Delphi and Free Pascal for over 10 years. You can find me mainly on 4programmers.net website, where I have been taking part in discussions for a long time, willingly helping others, publishing educational materials and taking care of order as a moderator. I like computers and electronics, but also DIY, astronomy, documentaries and movies based on real events.
I am a huge fan of retro games, in particular those for NES, SNES and Sega. I haven't been parting with the NES console since childhood, regularly playing various games for almost 25 years. Primarily I love platformers, but I also like logical, sports and racing games.
Last year, I won the title of Polish Vice-Champion in Classic Tetris at the CTWC Poland 2019.
To create screenshots of the program's appearance and operation, real players' data (names, locations and profile data) and their actual results obtained during the CTWC 2019 championships in Portland, Oregon were used. This data is publicly available and comes from videos shared on the Classic Tetris channel.
This software was not used to support the CTWC 2019 championships in Portland, Oregon. For the purposes of taking screenshots and videos of using the CTCT, real data has been added to present the program's capabilities and its compatibility with the graphic style proposed by the CTWC organization.