Rollback, Melee, and the future of online multiplayer.

Some games just refuse to die, nearly 18 years later and three sequels later Super Smash Bros Melee continues to be played and loved by people all around the world. The dedicated Melee community has not only preserved their game but have breathed new life into it by adding a state of the art online multiplayer matchmaking system, something which even the newest entries in the series Super Smash Bros Ultimate lacks. The new online multiplayer utilizes a rollback netcode which significantly reduces lag and results in a nearly local multiplayer experience even with players in different regions. The project was created by Slippi, which had been used in Melee to record replays and provide useful statistics about players in real time. The rollback netcode that Melee uses was even more surprisingly developed in less than six months by Fizzi. The brilliance of rollback is that it avoids the common problems associated with most fighting games that use delayed base netcode which causes stuttering and freezing unless both players have a near perfect connection. With rollback netcode, it never waits for input of the opponent and basically predicts what will happen and the adjusts the frames once they are received. With careful optimization a player will not even notice this change and will only see the successful corrections from both players. The reason predications work so well is that we can assume most of the time when a player has already pressed an input, we just have to figure out how often they change their inputs which turns out can be quite easy to predict. Rollback has essentially solved the plague many online fighting games face and drastically improves the quality of multiplayer in games like Melee. The future of Melee has never been brighter and hopefully this multiplayer will also cause newer players to experience the beauty of Super Smash Bros Melee for the Nintendo Gamecube.

Evo 2018 champion William “Leffen” Hjelte demonstrating rollback in Super Smash Bros Melee.

Thoughts on different programming languages

Every programming language has its own set of advantages and disadvantages that you have to consider when you start working on a project. Python is a very popular programming language because the syntax is easy to understand and it can be a great language to quickly start working on an idea and instantly see results. I think Python also works extremely well for smaller programs and apps that use some form of machine learning because of all the unique libraries like TensorFlow and Pytorch. Java on the other hand is better suited for more large-scale projects that need to be capable of scaling to thousands of lines of code without becoming an unreadable mess. One considerable advantage of Java is its slogan “write once, run anywhere”, meaning that you can develop a Java program on your own computer and not worry about it running on a different computer. Using C++, you might have to compile separate versions of your program to make sure it’s compatible and works on Windows, Mac and Linux which could be time-consuming. A significant disadvantage of Java is that sometimes the language can be overly verbose compared to other languages like Python which feels much closer to writing out ideas as pseudocode.

Overall C++ is considerably faster and delivers better performance compared to Java if you require a program to make use of lower level hardware and memory. For instance, most popular game engines are written in C++ like Unreal Engine and Cry Engine. Developers use C++ for these game engines because they need to squeeze out every last bit of performance for a game to run fast enough to be playable. There are many reasons you might want to integrate multiple languages together like C++ and Java. For example, let’s say you are designing a Java program but aren’t really satisfied with how slow it takes for your program to load and open. You could then use C++ to optimize the parts of code that deal with loading and opening while keeping the user interface Java code. Security wise, I think Java would generally be safer on larger applications where you have multiple teams of people working together on separate parts of code like many large companies do and you also don’t have to worry as much about memory management. Security problems like memory leaks might be more common and harder to find with C++ compared to Java.

Some thoughts on the current state of the Video Game Industry

2020 has been a rather reflective year for me during these past couple of months as the entire world remains in a standstill from the ongoing pandemic. The video game industry in particular has seen changes as well with most developers and employees now working from home. Nevertheless, the start of this year brought massive releases in March such as Doom Eternal, Animal Crossing New Horizons, and of course Half Life Alyx. The Long awaited remake of Final Fantasy VII also launched in April to much excitement.

We are also seeing an explosive growth in online streaming as more people are at home to consume content. Riot also recently released their closed beta of Valorant which has been driving viewers especially with the cleverly implemented drop system reward for watching various streamers playing the game. Other streaming platforms like Mixer from Microsoft have also continued to grow throughout this year. The future release calendar for 2020 remains uncertain to a large degree but with the launch of the next generation consoles from Microsoft and Sony this holiday season we won’t have to speculate much longer.

Till next time.