Jump to content

RogerBidon

Member
  • Posts

    104
  • Joined

  • Last visited

  • Days Won

    5
  • Feedback

    0%

Everything posted by RogerBidon

  1. @braven(sinbad) vs @dvertov(Kiki) Sorry, we had a (seemingly) technical issue and have only one replay. (It is a 2-0.) Replays https://super-tilt-bro.com/replay/emus/2.0-alpha12/index.html?game=05ef2266-436e-4944-a98d-18f2738b8c5f
  2. Thank you! I love to make that kind of things. Technically it is closer to dark magic than science, such a joy to work on! And ... The show must go on! @Deadeye(multi) vs @Dabest(Pepper) This is the first set played on the loser bracket. After this, one player will be eliminated from the tourney ... Two men enter, one man leaves! Replays https://super-tilt-bro.com/replay/emus/2.0-alpha12/index.html?game=f460e4a1-ef56-431a-9e59-3a84a00a4809 https://super-tilt-bro.com/replay/emus/2.0-alpha12/index.html?game=9b66e895-21da-4451-8366-53c7f8c8e3a0
  3. @Fei (green sinbad) vs @urangutanLP (multi) Serious matchs begin, both players have sent some to losers brakets. No tourist allowed, let's rock it! Replays https://super-tilt-bro.com/replay/emus/2.0-alpha12/index.html?game=5dd61d33-d084-401b-869a-3e8141bc71f3 https://super-tilt-bro.com/replay/emus/2.0-alpha12/index.html?game=672d631d-d0fe-4b74-a1c8-2ddc4931d202
  4. @Fei(Sinbad) vs @Dabest(multi) I lost sleep for the 3 last nights to make a build of the game which works on Fei's outdated computer. HE BETTER WINS! Joke aside, Fei is super strong, and Dabest trained before the tourney. Let's see who wins! Replays https://super-tilt-bro.com/replay/emus/2.0-alpha12/index.html?game=4165b958-73ca-4372-84aa-a44c53960193 https://super-tilt-bro.com/replay/emus/2.0-alpha12/index.html?game=d0692387-0521-4c07-96d2-04a38e1900ae
  5. @urangutanLP (Pepper) vs @Deadeye(Sinbad): First set featuring a VGS member, and not anybody! The great Deadeye in person! Cheer for him! https://super-tilt-bro.com/replay/emus/2.0-alpha12/index.html?game=73b18770-bcad-4003-8d1a-1afe46fea840 https://super-tilt-bro.com/replay/emus/2.0-alpha12/index.html?game=73b18770-bcad-4003-8d1a-1afe46fea840
  6. @Le poussin(green sinbad) vs @pwikoo (multi) LePoussin is not the weakest player, by far. Some say that he trained and will reveal his super sayan form in this tourney! Replays https://super-tilt-bro.com/replay/emus/2.0-alpha12/index.html?game=2bbe0f66-f480-44bc-96d6-da49ce492f9d https://super-tilt-bro.com/replay/emus/2.0-alpha12/index.html?game=c63c737b-a8c8-4bf1-992c-6eedb4bb3a81 https://super-tilt-bro.com/replay/emus/2.0-alpha12/index.html?game=6dcfcb9a-4451-4b57-8bef-5e81d16ba3d8
  7. @Infitek (green sinbad) vs @pwikoo (multi) First set of the all mighty ruller of North America (Pwikoo). Does this brave european stand a chance? Replays https://super-tilt-bro.com/replay/emus/2.0-alpha12/index.html?game=937e34c9-3613-42b0-addb-e508cc28f43b https://super-tilt-bro.com/replay/emus/2.0-alpha12/index.html?game=7456fadf-88ae-453c-85c4-74796f4da219 https://super-tilt-bro.com/replay/emus/2.0-alpha12/index.html?game=eb616ab5-31c4-448d-9c72-7b8c75181375
  8. First set of the tourney, @Gobolz (Kiki) vs @Dimo (Sinbad)! Contenders are already heat up! Ready to make the show! An unseen edge-guarding technique, lightning-fast Sinbad, impressive aerial fights, an aggressive spike, ... You'll not be bored for sure! Replays: https://super-tilt-bro.com/replay/emus/2.0-alpha12/index.html?game=091e8291-1770-4482-95fd-989523d032cf https://super-tilt-bro.com/replay/emus/2.0-alpha12/index.html?game=0f7a2cd9-d383-4a5c-ab51-f96a092116b7
  9. Yes, for now the web version is the only native way to play on macos. You could also try playing the Windows version under Wine (but I don't remember if I built it 64 or 32 bits, so it is like a toss of a coin since Wine on mac does not support 32 bits apps) I really should build a mac version. I will give it another try, but can use the help of someone accustomed to compile things on macos. Someone here is accustomed to run gcc on mac?
  10. Damn, that's 17 if I count correctly. One too many for a 16-persons brackets. Let's find 15 more to fill the 32-places brackets! In all seriousness, I never asked how tournaments handle this. I guess strongly seeded players are matched against empty slots on the first round.
  11. We never discussed ineligibility. I guess the only ones who can't are me (too much deep in organization, and rafling a prize I give), Broke Studio (donated a prize), Jeevan (our Tournament Organizer), and maybe Gloves (has to preserve his deity status.) That said, @Gloves and @braven already taunted each-other. It is asking for a show-match in my opinion
  12. Damn, @Feiis that really your first post on VGS?! Great to have you signed up for the tourney. I will have to follow up on my promise to lend you a cart to participate with a real NES now
  13. There is quite some time to organize a laptop-shop heist before the begining of the tourney ... ... or I played too much GTA
  14. If the mac in question is powerful enough, it can run the web version. Try to go online with it without turning fullscreen on, if it pings the server it is good, if a red popup appears it's dead.
  15. Super Tilt Bro., a Guide to Improve Technically and Gain Unrivaled Dominance (GITGUD) For sure, moving around the character in Super Tilt Bro. is easy. You can also beat the CPU opponent by knowing its flaws. But what to do against a human who knows the game? What are the basic strategies in the game, and how to get the upper hand? This guide will give you the basics to work on. The rules If you never touched a platform-fighter before, we'll get you covered immediately. You, and another player are on the same stage, with the goal of pushing your foo out of the screen's boundaries. To do so, you can strike them with a variety of attacks, causing damages and throwing them forward. The more damage your opponent took, the farther they will be ejected. The green player attacks the yellow one to increase damages, then finish with a strong attack. Oh, and here are the controls! Note that the jump is on d-pad UP, while A and B are bound to normal and special attacks. We'll come to that in the very next section. Common tricks Attacks Attacks are the most essential moves. An attack hits your opponent, causing damages and throwing them. Each character has a variety of attacks. All bound to the A button, plus an optional direction. Some cause high damages, some throw far away, some are quick, to choose an attack will depend on the situation and your character. The simplest attack is done by pressing the A button alone. It is called a "jab", it is a quick attack that does little damage but can save you from a bad situation by throwing your opponent just far enough to be safe. Kiki's jab, used to stop Sinbad's rush More powerful attacks can be unleashed by pressing a direction with the A button. These are called tilt attacks, because the character often needs to tilt forward to perform them. Every direction maps to a different attack. Forward + A will trigger a forward-tilt attack, which is totally different from an upward-tilt or a downward-tilt. If in doubt, generally go for the tilt in the direction of your target. Pepper's forward, upward, and downward tilts Finally, attacks are different when performed in the air. These are called aerial attacks in general and follow the same principle of having variants for forward-aerial, upward-aerial, downward-aerial, and neutral-aerial (without direction, like the jab) Pepper's forward, upward, neutral and downward aerials Special attacks Special attacks are like attacks, but vary a lot more between characters. They often move the character or have other special effects. They follow the same rule of having variants depending on the direction pressed, and if the character is grounded. Pepper's neutral-special place her cat on the stage, she can teleport back to him later. Their use depends heavily on the character, most useful specials are described in the character-specific section of this guide. Shield By pressing DOWN, your character will shield. The shield can take two hits, avoiding injury to your character. Beware though, the third hit will break the shield and largely amplify the knockback, often leading to disastrous consequences. Two hits soaked, the third was too much Double jump I hope I learn you nothing saying that characters can jump a second time while mid-air. It defies physics, but is super cool looking! Wall jump If you played Super Smash Bros, read this. This is a fundamentally different: there is no ledge grab, wall jump is the way. To put it simply. Your character can perform a wall jump by pressing any button while touching a wall. Now if you experienced the game, you will notice that there are a few tricks. Notably you can do only one wall jump, you need to touch the ground before doing another. Also, it does not jump very far. Is it of little use? We'll need to introduce the helpless fall to understand wall jump's use. Some special attacks help you to gain height. This is handy when you want to come back on stage after being pushed away. These attacks put your character in a special state, the helpless fall. When helpless, a character can't do anything except ... wall jumping! Wall jumping, allows you to escape helpless fall, and go back to the stage. Sinbad using a wall-jump to climb a wall Short hop Releasing the jump button early, you can jump lower. This is called a short hop, and is particularly useful to land aerial attacks against a grounded opponent. Short hop versus full jump Fast fall By pressing DOWN when falling, you can fall faster. This can be used to get on ground before your opponent to be one step ahead of them. Fast fall versus normal fall Tech This is certainly the trick that will give you the most for what it takes. To compete seriously, you must master it. When you are hit by an attack, you normally crash on the ground after being thrown. If you press DOWN just before crashing you will tech, meaning your character avoids the crash and recovers more rapidly. Tech versus crash Moreover, you can press DOWN+LEFT or DOWN+RIGHT to tech-slide. It means that your character will avoid the crash and slide rapidly on the requested direction. It is essential to lose your opponent and avoid being the victim of their worst combos. This is a tech slide Combo When you hit your opponent, they blink for a short duration. This shows a special state, named hitstun, when they are unable to do anything. You can find series of attacks that abuse hitstun to be unavoidable once the first landed. These series of attacks are true combos, completely unavoidable. True combos are rare, hard to pull, and work only when the opponent did not receive too much damage. You can however take profit of crashes, or bad reactions of your opponent to land long strings of attacks. We'll still call that combos Pepper's most iconic combo, note that the opponent could have tech-slide to escape it. Strategy We generally consider three phases of gameplay: neutral, advantage, and disadvantage. Neutral is when the situation is even. The beginning of the game is always in neutral state, players are too far to attack each other. In neutral game, you want to gain advantage by pushing your opponent in a corner, and avoid them doing it to you. Think calmly about your options, this is the calm before the storm. Advantage is when you gained the upper-hand, and want to maximize your advantage. Typically, you pushed your rival off-stage, and they want to recover. Their options are limited while you have all of yours. Don't get caught off-guard by a weird move, and you should be able to mark the point. Disadvantage is, you guessed it, the opposite of advantage. You want to recover, but the opponent is there waiting for you. Your options depend widely on your character, the rule of thumb being "act quickly, act weirdly, take them off guard." Also, each character has at least one move dedicated to recovery, generally up-special. When in trouble try up-special, it is often the best answer. Playing Sinbad General strategy Sinbad moves fast, strikes rapidly, jumps quickly, ... He is what we call a rush down character. With him, you want to run straight to your foo and unleash a lot of attacks before they can even react. Of course, avoid being too predictable, you have the tools to vary your approaches. One hit can generally be followed by big combos, giving you a huge advantage. It requires strict timing on your controller though, beginners may have trouble unleashing all his potential. Playing the advantage You have two kill moves that cover a large area: your side-tilt and your neutral-special. If your opponent is off-stage, wait them on the ledge ready to inflict the deadly strike. You can also jump offstage to finish them with your fast aerial attacks and come back on stage for the extra glory that comes with a bold move. Playing the disadvantage Sinbad has the best recovery in the game. Your up-special travels a good distance vertically, and has a hitbox punishing an opponent edge-guarding from the stage. You can also use your side-special to come back quickly horizontally. Side-special cancels all your momentum, literally a life-saver. Common combos Easy: down-tilt -> up-special This is an easy combo that can be done out of shield. The default move used to punish an opponent hitting your shield. Hard: side-tilt -> run -> short-hop -> forward-air -> jab -> jab -> jab -> side-tilt Forward-air has great range, and throws downward. With a short hop, it is a perfect combo tool. Playing Kiki General strategy Kiki can draw walls and platforms with her special attacks. She is also strong and has a good range, but she is slow. She shines at defensive play styles, you want to detect a flaw or a bad habit in your opponent's game and punish it. To maintain a good distance between you and your opponent is the key, you often out range them but are vulnerable to close combat. Your shield and defensive walls are your best friends ... That and your side-tilt which is super strong with long range. Kiki can abuse the attack-slide mechanic. When Kiki lands while still performing an aerial attack, she keeps most of her momentum. This allows her to attack while moving. Building incredible pressure if used wisely. Kiki's aerial-down does not stop on landing. Kiki is simple to understand, and require experience to play against. It is often a favorite of beginners. Playing the advantage You can get super early kill using your walls to deny your opponent's recovery. Against low recovery (from below stage's ground), just put a wall. Against high recovery, you will need to be a bit more creative. Playing the disadvantage You always want to recover high. Use your double jump early, then up-special to draw a platform behind you. That way you regain your double jump and can go higher, putting space between you and your opponent. Your momentum-cancelling move is your up-special. Spam it if you took a bad hit that may KO you. Common combos Kiki is not combo-heavy. One strike is generally enough. Though, to evade close combat, there's always this one: jab -> jab -> side-tilt Playing Pepper General strategy Pepper has a very versatile move set, allowing you to get creative in combat. With a teleport, and attacks sending her opponent in literally all directions, she is a combo power-house ... If you set up the right conditions. Pepper takes time to master, but can be very surprising in the hands of inventive players. Playing the advantage If you placed your cat, Carrot, off-stage. You can teleport on him to chase your opponent. When you teleport right on them, your foo will be thrown downward, often losing a life. You can also use your side-aerial to slam them downward. If you are on stage, your side-special correctly timed can catch them even far away. Playing the disadvantage If you placed Carrot on the stage, you can teleport on him to be safe. You can also come back with your up-special, which can be directed. UP+LEFT+B will always move to the left. If the opponent is edge guarding, a side-special can clear the path. Clear the path, then fly on your broom Common combos Slam dunk: down-tilt -> jump -> side-aerial -> fast-fall -> down-tilt -> side-special You can repeat the first part of the combo, but it is easily evaded by a tech-slide. Turn around!: down-special -> side-tilt -> teleport Using the teleport aggressively Glossary You want to talk like a professional Super Tilt Bro. player? Here's a small cheat sheet. Aerial attack: An attack performed in the air. Forward-aerial, up-aerial, down-aerial, neutral-aerial: a specific aerial attack. Forward-special, up-special, down-special, neutral-special: a specific special attack. Forward-tilt, up-tilt, down-tilt: A specific tilt. Helpless fall: A state where your character is unable to do anything befor touching the ground again. Shown by falling head-first. Hitstun: A period when you can't do anything after getting hit. Shown by blinking. Jab: The grounded attack done by pressing A, without direction. KO: Losing a stock. Self destruct: Losing a stock by your own means (voluntarily or involuntarily.) Special attack: An attack done by pressing B, and optionally a direction. Stock: A life. You begin the match with some stocks, lose them by goind out of screen, and win when your opponent has no more stock. Tilt: A grounded attack done by pressing a direction and A. One last word This guide scratches the surface of many aspects of the game. Reading it will not magically improve your level. The guide is there to show you what to watch in your and your opponent's gameplay in order to improve. Actually gaining skill requires practice. If you want to find other players to train, Super Tilt Bro.'s Discord is dedicated to that
  16. Super Tilt Bro. 2.0-alpha11: Skins, dreams, and rock'n roll! What's new in the game? New musics Two new musics can be heard in game. The first, inspired by the stage "The Hunt," is composed by Kilirane. The second, inspired by Kiki, is composed by Tuï. Improved menus Some menus were hastily done placeholders, others missed notable features. A big pass has been done to globally level-up. Matchmaking menu is now integrated in character selection screen. Notably, credits and matchmaking screen have been completely revamped. The title screen has a better animation, and your ranked play credentials are saved. Gameplay When both players select the same skin, now the second player is attributed a lightened variant of it. It is way easier to identify who is who. Weird input handling during the final slowdown has been fixed. Sinbad and Kiki skins also have been improved, they were almost random color swaps. Now they are carefully selected color swaps! Pepper's down-special has a new hitbox at the end of the move. It allows to hit behind her, and is an excellent combo-starter. What's new under the hood? New cartridge prototypes After weeks of efforts to fix race conditions between the game and the Wi-Fi chip, we finally got everything in order. Broke Studio revised the hardware design, changed almost everything, and now things are nearing perfection! With that and the netcode which becomes more robust everyday, biggest technical challenges seem to be behind us. Time to focus on making a great game! Do not forget to wishlist
  17. Technical highlight: Music driver, when you can't do a thing, find another way! Hey! Today topic is music! ... *hmm* OK, it is about the code playing musics. Super Tilt Bro. version 2 has better musics than the old version, by a long shot. It was not easy, the old music driver is a minimal driver, written while figuring things out. It is very light but seriously lacks features. To the point that importing any track require multiple days of work, and forces to butcher the original song. When Tuï came with a title screen theme, there was no way to butcher it, the audio engine needed an upgrade. It would have been too easy to use a well known audio engine. GGSound and Famitone are solid, do the work perfectly and are battle-tested. Super Tilt Bro. needs technologies that are experimental, unstable, and ... *hmm* AMBITIOUS! OK, and to have a home-made audio driver opens some possibilities, we will come back on it. Before that, let's discuss some common knowledge about NES audio, detail Super Tilt Bro.'s driver operation, and bring biased comparison with other drivers. Here is a glimpse at Super Tilt Bro.'s audio features, so you know where we are headed: Support for Famitracker effects: Axx, Bxx, Dxx, Fxx, Gxx, Qxx, Rxx, Sxx, 1xx, 2xx, 3xx, 4xx (More to come, aiming to support them all) Support for instruments Support for tempo Faster than Famitone An audio driver, how does it work? At the lowest lever there is the audio chip in the NES, we name it the APU for Audio Processing Unit. The APU has a lot of functionality but at the end of the day it exposes some registers and the sound played depends on values we write in these. The goal is then to regularly change values in these registers to play a music. The audio driver is essentially a chunk of code that is called regularly, reading music data, interpreting it, and writing values in the APU registers. We'll strive to do it as fast as we can (to let CPU cycles for the game) while minimizing music data size (to let ROM space for the game.) Oh ... And ... You know ... Actually being able to play what the musician composed. On the NES, most artists work with the tracker named Famitracker. It has tons of features, and its own track format. The first step will be to convert tracks from tracker's format to our driver's. From tracker to driver One distinctive point of Super Tilt Bro.'s driver is to be extremely light while relying on a powerful import script. Other driver generally have more features but ask the composer not to use the rest. Super Tilt Bro. handles only the minimum, but what is not supported by the driver is converted to a simplified equivalent at import time. From now on, I will take for granted that you are accustomed to trackers and have some chiptune knowledge. Sorry others, I can only suggest trying Famitracker or Famistudio by yourself, it is a lot of fun. I will also talk about "ticks." A tick is one call of the driver. As it should be called regularly it is the shortest rhythm unit. I'll observe 6 ticks for a quarter note. So, the driver's goal is to write values in the APU's registers. To do so, it read some data and acts accordingly. Since these data describe the behavior expected from the driver, the simplest is to use a bytecode. A bytecode is a flow of instructions to execute, like a compiled program. Here are the instructions to play a scale: play the note C wait 6 ticks play the note D wait 6 ticks play the note E wait 6 ticks play the note F wait 6 ticks play the note G wait 6 ticks play the note A wait 6 ticks play the note B wait 6 ticks Of course, the NES has multiple channels (pulse1, pulse2, triangle, and noise.) We need a series of instructions per channel. To be able to compress things, Super Tilt Bro. introduce the concept of sample. A sample is a series of instruction, and each channel plays a series of samples. Now we can reuse some samples, like by having the chorus in a sample and verses in others. CHANNEL pulse1: sample_verse1 sample_chorus sample_verse2 sample_chorus CHANNEL pulse2: sample_silence CHANNEL triangle: sample_silence CHANNEL noise: sample_silence sample_verse1: play the note C wait 6 ticks play the note D wait 6 ticks ... sample's end sample_refrain: play the note C wait 5 ticks silence wait 1 tick play the note C wait 5 ticks silence wait 1 tick play the note G wait 5 ticks ... sample's end sample_verse2: play the note B wait 6 ticks play the note A wait 6 ticks ... sample's end sample_silence: play silence wait 255 ticks sample's end We could improve the compression with smaller samples. Above we could have made a sample for the series "C during 5 ticks, silence during 1 tick," but you get the idea. While perfectly adapted to driver's code, this notation rapidly become hard to read for human being. We can use an intermediate format, more like trackers' notation but constrained to Super Tilt Bro.'s driver capacities: CHANNEL 00 00, 01 SAMPLE 00 (2a03-pulse) # note frequency_adjust volume duty pitch_slide 00 : C-3 ... ... ... ... 01 : ... ... ... ... ... 02 : ... ... ... ... ... 03 : ... ... ... ... ... 04 : ... ... ... ... ... 05 : ... ... ... ... ... SAMPLE 01 (2a03-pulse) # note frequency_adjust volume duty pitch_slide 00 : E-3 ... ... ... ... 01 : ... ... ... ... ... 02 : ... ... ... ... ... 03 : ... ... ... ... ... 04 : ... ... ... ... ... 05 : ... ... ... ... ... OK, that is easier to read if you are familiar with trackers. (If you are not, I warned!) "CHANNEL 00" is pulse1, others were left out of this example for brevity. This format exposes driver's features. There is no loosely defined "effect" column, each column has a specific role. There also is no instrument. "note", "volume", and "duty" should be self-explanatory. "pitch_slide" contains a signed number, it is equivalent to 1xx and 2xx effects in Famitracker. "frequency_adjust" changes the currently played frequency by a number of pitch units, it works as expected even if there is an active pitch_slide. It is unused when importing from Famitracker but can allow for an arpeggio and a slide as Famistudio allows. This format is readable and trivial to convert to driver's bytecode. But, how do we convert a full-featured Famitracker track to such a limited format? Here is an extract from a real world track from Tuï: ROW 00 : C#3 12 . ... ... : ROW 01 : ... .. . ... ... : ROW 02 : ... .. . ... ... : ROW 03 : ... .. . ... ... : ROW 04 : ... .. . 4AA 103 : ROW 05 : ... .. . ... ... : ROW 06 : ... .. . ... ... : ROW 07 : ... .. . ... ... : ROW 08 : ... .. . ... ... : ROW 09 : ... .. . ... ... : ROW 0A : ... .. . ... ... : ROW 0B : ... .. . ... ... : ROW 0C : ... .. . ... ... : ROW 0D : ... .. . ... ... : ROW 0E : ... .. . ... ... : ROW 0F : ... .. . ... ... : ROW 10 : ... .. . ... ... : ROW 11 : ... .. . ... ... : ROW 12 : ... .. . ... ... : ROW 13 : ... .. . ... ... : ROW 14 : ... .. . ... ... : ROW 15 : ... .. . ... ... : ROW 16 : ... .. . ... ... : ROW 17 : ... .. . ... ... : ROW 18 : ... .. . ... ... : ROW 19 : ... .. . ... ... : ROW 1A : ... .. . ... ... : ROW 1B : ... .. . ... ... : ROW 1C : ... .. . ... ... : ROW 1D : ... .. . ... ... : ROW 1E : ... .. . ... ... : ROW 1F : ... .. . ... ... : ROW 20 : --- 00 . 400 100 : Instrument 12 is simple, it just sets duty to 2. The 4xx effect is a vibrato, and the 1xx effect is a pitch slide from low to high pitch. Everything together make for a nice sound: touloulou.mp3 We will simply transform the file step by step, to finally conform to our limitations. First is to flatten the instrument in the pattern, and convert the vibrato to a series of 1xx and 2xx. Here is the result: ROW 00 : C#3 .. F ... ... ... V02 : ROW 01 : ... .. F ... ... ... V02 : ROW 02 : ... .. F ... ... ... V02 : ROW 03 : ... .. F ... ... ... V02 : ROW 04 : ... .. F 214 103 ... V02 : ROW 05 : ... .. F ... ... ... V02 : ROW 06 : ... .. F 114 ... ... V02 : ROW 07 : ... .. F ... ... ... V02 : ROW 08 : ... .. F ... ... ... V02 : ROW 09 : ... .. F 214 ... ... V02 : ROW 0A : ... .. F ... ... ... V02 : ROW 0B : ... .. F ... ... ... V02 : ROW 0C : ... .. F 114 ... ... V02 : ROW 0D : ... .. F ... ... ... V02 : ROW 0E : ... .. F ... ... ... V02 : ROW 0F : ... .. F 214 ... ... V02 : ROW 10 : ... .. F ... ... ... V02 : ROW 11 : ... .. F ... ... ... V02 : ROW 12 : ... .. F 114 ... ... V02 : ROW 13 : ... .. F ... ... ... V02 : ROW 14 : ... .. F ... ... ... V02 : ROW 15 : ... .. F 214 ... ... V02 : ROW 16 : ... .. F ... ... ... V02 : ROW 17 : ... .. F ... ... ... V02 : ROW 18 : ... .. F 114 ... ... V02 : ROW 19 : ... .. F ... ... ... V02 : ROW 1A : ... .. F ... ... ... V02 : ROW 1B : ... .. F 214 ... ... V02 : ROW 1C : ... .. F ... ... ... V02 : ROW 1D : ... .. F ... ... ... V02 : ROW 1E : ... .. F 114 ... ... V02 : ROW 1F : ... .. F ... ... ... V02 : ROW 20 : --- .. F 100 100 ... V00 : Note that everything happens in import script's memory, we can add effect columns at will. It comes handy to avoid conflicts. As Super Tilt Bro.'s driver handles only one "pitch_slide", we now have to merge the slides present on different columns. That done by adding slide values, and here is the result: ROW 00 : C#3 .. F ... ... ... V02 ... : ROW 01 : ... .. F ... ... ... V02 ... : ROW 02 : ... .. F ... ... ... V02 ... : ROW 03 : ... .. F ... ... ... V02 ... : ROW 04 : ... .. F ... ... ... V02 211 : ROW 05 : ... .. F ... ... ... V02 ... : ROW 06 : ... .. F ... ... ... V02 117 : ROW 07 : ... .. F ... ... ... V02 ... : ROW 08 : ... .. F ... ... ... V02 ... : ROW 09 : ... .. F ... ... ... V02 211 : ROW 0A : ... .. F ... ... ... V02 ... : ROW 0B : ... .. F ... ... ... V02 ... : ROW 0C : ... .. F ... ... ... V02 117 : ROW 0D : ... .. F ... ... ... V02 ... : ROW 0E : ... .. F ... ... ... V02 ... : ROW 0F : ... .. F ... ... ... V02 211 : ROW 10 : ... .. F ... ... ... V02 ... : ROW 11 : ... .. F ... ... ... V02 ... : ROW 12 : ... .. F ... ... ... V02 117 : ROW 13 : ... .. F ... ... ... V02 ... : ROW 14 : ... .. F ... ... ... V02 ... : ROW 15 : ... .. F ... ... ... V02 211 : ROW 16 : ... .. F ... ... ... V02 ... : ROW 17 : ... .. F ... ... ... V02 ... : ROW 18 : ... .. F ... ... ... V02 117 : ROW 19 : ... .. F ... ... ... V02 ... : ROW 1A : ... .. F ... ... ... V02 ... : ROW 1B : ... .. F ... ... ... V02 211 : ROW 1C : ... .. F ... ... ... V02 ... : ROW 1D : ... .. F ... ... ... V02 ... : ROW 1E : ... .. F ... ... ... V02 117 : ROW 1F : ... .. F ... ... ... V02 ... : ROW 20 : --- .. F ... ... ... V00 100 : In some little steps, we obtained a Famitracker's module that sounds the same as the original while observing our harsh constraints. Here is the result in internal format: SAMPLE 00 (2a03-pulse) # note frequency_adjust volume duty pitch_slide 00 : C#3 ... 15 2 ... 01 : ... ... ... ... ... 02 : ... ... ... ... ... 03 : ... ... ... ... ... 04 : ... ... ... ... 17 05 : ... ... ... ... ... 06 : ... ... ... ... -23 07 : ... ... ... ... ... 08 : ... ... ... ... ... 09 : ... ... ... ... 17 0A : ... ... ... ... ... 0B : ... ... ... ... ... 0C : ... ... ... ... -23 0D : ... ... ... ... ... 0E : ... ... ... ... ... 0F : ... ... ... ... 17 10 : ... ... ... ... ... 11 : ... ... ... ... ... 12 : ... ... ... ... -23 13 : ... ... ... ... ... 14 : ... ... ... ... ... 15 : ... ... ... ... 17 16 : ... ... ... ... ... 17 : ... ... ... ... ... 18 : ... ... ... ... -23 19 : ... ... ... ... ... 1A : ... ... ... ... ... 1B : ... ... ... ... 17 1C : ... ... ... ... ... 1D : ... ... ... ... ... 1E : ... ... ... ... -23 1F : ... ... ... ... ... 20 : --- ... ... 0 0 And the bytecode will look like this: sample0: play the note C#3 set volume to 15 set duty to 2 wait 4 ticks set pitch slide to 17 units per tick wait 2 ticks set pitch slide to -23 units per tick wait 3 ticks ... Actually, before generating the bytecode, the import script will apply some dictionary compression which is finding the optimal set of samples to store the music in as few bytes as possible. How does this driver perform relative to others? There are a lot of drivers more or less working. We will focus on the three cool kids: Famitracker, Famitone, and GGSound. Famitracker is the driver that comes with the eponymous tracker. It has every feature needed to play tracker's musics. Despite that, this driver is often avoided by game developers because it can consume a lot of the CPU budget. Famitone, by Shiru, is the lightest of the three. Missing notable features, it is typically used on small games, when ROM space is more precious than comfort of the composer. GGSound, by Gradual Games, is a solid in-between which is easier to write for while keeping performances under control. Here is a overview of each one's implementation. (Except Famitracker, sorry I didn't do my homework on it.) Famitone and GGSound implement instruments but no effect. Super Tilt Bro. does not support instrument, but handles 1xx and 2xx effects. Music formats Famitone features a minimal bytecode: play a note, wait, select an instrument, and loop the track. GGSound adds some control flow: call a subsection (like our samples), GOTO, ... Super Tilt Bro. has no instrument-related data, instead opcodes directly reflect data to write in APU registers After the rain, Famitone's demo track, and how it is handled by different drivers. Note: CPU cost is the worst tick encountered while playing the track. Two points are obvious: Super Tilt Bro.'s driver is lighter than others, sensible since it does not handle instruments. Also, musics take more space in ROM. Other drivers having instruments, most data is a simple series of notes. Super Tilt Bro. makes up for its weakness with compression, but it is not yet enough to compete. What to think about that? That your read until there. Impressive! The topic is far from easy Also, the Super Tilt Bro.'s driver is a very lightweight engine which is able to play complex tracks that are not supported by others. This is possible thanks to a big transformation that happens before even running the game. On the other hand, tracks are larger, pressuring the ROM. In Super Tilt Bro.'s case it is not a big deal, CPU cycles are very precious when running the netcode while there is big fat ROM in the cart. That said, it is not a magical solution that fits everybody needs. In the future, we could gain some ROM space by optimizing the bytecode, and maybe publish the driver as a standalone project if somebody is interested. Also, there is a major reason I insisted on implementing a specific audio engine: everything is possible. It was put aside because of priorities, but one day it would be nice to feature dynamic musics. It means a track that becomes more intense when players are excited, and calms down when they become more passive. That's a reason of the concept of samples, if each sample has multiple variants, the sound engine can choose the most appropriate at any time. Having a powerful import script is really a good thing. It is too often minimal, simply rejecting features unsupported by the driver or, worse, generating invalid tack data. GGSound could use a compression like the one in Super Tilt Bro. since it is capable of an equivalent to samples. Also, with only the addition of pitch slide effect, and running Super Tilt Bro.'s simplifier, GGSound and Famitone could handle most effects, simplifying composers life. One last thing, I notice that I repeated the game's name all over this essay. This is because the audio driver does not have a name. Somebody is inspired to name it?
  18. When the guy popped talking about writing a top of hombrew games on a substack, I really didn't understand some of you where really hyped. Like, what are the chance for a random list by a random guy on the internet to be well done? Actually, I was pleasely surprised. The man seemed to have gueninely enjoyed our games, and the list was free to access. I would never have paid for such a thing. While it was clear the article should have been named "My 100 favourite hombrews to play in transit, 97th will blow your mind" I did not understand the backlash, and angry folks on all channels (heck, I muted Discord to let it pass.) Seems the hype was in part due to his big following on twitter. I am happy I never check that, I would have been disapointed. Remember folks, numbers on social networks are not a good measurement of people's popularity. Pretending to be a star-journalist while posting on a substack instead of well known media is a better indicator. That said, I disagree with you @dale_coop about the motivation of the brewer, and think it is a balance between challenge, expression, and money that differ from dev to dev. Expression being sharing your art, or bringing fun to people. I know in my case, expression is a big factor, I love to see people enjoying my game, and the ROM is the big deal. It is there, as easy as possible to grab, and the community being built around it is what keeps me motivated. Of course technical challenge is fantastic, especially on the hardware-side, and money is hoped to at least repay some of the dev costs. This is a blance, and all three aspects are important to understand a dev.
  19. Super Tilt Bro. 2.0-alpha10: Improved netcode, and movesets What's new around the game? Community is growing The Super Tilt Bro.'s Discord server sees more and more active users. To the point it finally fills its initial purpose: to help find an online match. More than that, the community is striving. We debate the best characters, strategies, and tournament dates. Thank you everybody in the community, seeing such enthusiasm is the best reward I could ever receive as a developer! (If you are not yet part of it, join now: https://discord.gg/qkxHkfx) Cartridge wishlist If you want to see online NES gaming on real hardware: progress on this side is steady. Not yet ready, but once prototypes are stable we will start pre-orders. Don't want to miss it? Here you can register to be notified when it happens (no spam included): https://super-tilt-bro.com/wishlist.html What's new in the game? Improved Netcode The game received a big optimisation pass. While not touching netcode directly it impacts game's capability to rollback efficiently. There also are bug fixes in the netcode itself, those bugs occasionally caused you to see characters teleporting around the screen. Lost with this "rollback" thing? In a nutshell, the game predicts your opponent's inputs to stay smooth when it takes time to transit by the network. Sometimes, the game misspredicts, it then has to fix what is drawn on screen. This is done by internally re-playing all frames since the missprediction, and is called rollback. You can read more about rollback here: https://sgadrat.itch.io/super-tilt-bro/devlog/154432/real-time-online-gaming-with-the-nes What to expect from it? Playing Pepper vs Pepper on "The Hunt" suffered many slowdowns. It should now be playable perfectly with good connections. Playing on Flatland and Skyride with poor connections should be greatly improved. We'll see how it behaves on real conditions, and may do another pass of optimisations if necessary. General gameplay changes There are two comfort changes in inputs. First, you can now tech with the jump button in addition to the shield button. For reference "teching" is when you press one of those button just before crashing on ground, your character softens the crash to fasten their recovery. Top: crash // Bottom: tech Pepper Pepper's signature move (Plan 7-B) has been reworked. Before this patch you would place Carrot on the stage with side-special, and teleport on him with neutral-special. Now, it is all on neutral-special, placing Carrot the first time, teleporting the second time. This makes sens since it is actually the same move, and both parts are useless and broken without the other. It also frees the side-special which is now a long range attack. Ideal to follow-up on combos when your opponent has been sent too far away. Sinbad Sinbad's jab has been completely changed. It was an infinitely spammable light attack, it is now a three hits combo which deals good damage. A short video is worth a thousand words Kiki Fixed Kiki being unable to draw platforms after respawn. NTSC online The server now accepts NTSC clients. This is done in anticipation for the physical release, when players cannot freely choose their system's region. For now the emulator is still configured in PAL by default, and changing it is not recomended. There notably is no crossplay between PAL and NTSC. If you want to experiment you a free to proceed, beware that the other player must also configure their emulator in NTSC mode. More efficient satellite launch In the online menu, the satellite now observe a prograde rotation. This requires less fuel to launch it from the surface, and feels more natural to space enthusiasts.
  20. Super Tilt Bro.'s menus are mostly coded in C. Main loop, and ingame are still in assembly to avoid any C overhead (we can mess with memory reserved for the C stack for example.) Also it is one of the few project (if not the only one?) using 6502-gcc, and not cc65. The code heavily rely on modern high-level optimizations that gcc brings. Finally, I see you give links. Maybe the github link would be more appropriate than the game's page in this post. Here it is: https://github.com/sgadrat/super-tilt-bro (Oh, and the server is C++ and python, but I guess it does not count )
  21. Hey there! Wanted to show that networked NESs! As we prepare for game events to come we have tested our stand. Here you can see both NES connected to the tablet in the middle. The game server runs on the tablet itself, so there is no need for an existing network, what is on the table is autonomous. Convention center's Wi-Fi can be as unstable as it usually is, there will be no problem. Since this setup we found that the old laggy tablet was not suited for the task, with ping showing spikes up to 500ms. The stand will run with a modern laptop instead. Pretty excited to put it in the hands of strangers to see their impression! (Did you whishlist your cart? Doing it helps a lot, telling friends also helps https://super-tilt-bro.com/wishlist.html )
  22. Super Tilt Bro. 2.0-alpha9: Redrawn menu, replays, and wishlist What's new around the game? Wishlist the cartridge now! Ok, there is no Steam for retro game cartridges. We do it in the pure homebrew tradition: our wishlist system is crafted at home with love! To wishlist your Super Tilt Bro. cartridge, go to https://super-tilt-bro.com/wishlist.html and fill your e-mail address. This is a notification system, you will receive one mail when the pre-orders are available. Nothing more, nothing less. As soon as the mails are sent, the list will be deleted. We care about your privacy, and the well-being of your inbox. If you want to follow the game's development, you should also follow Super Tilt Bro.'s Twitter or join us on Discord Replays You outrageously out-played your opponent but forgot to record your screen? That happens all the time! We know this terrible feeling when you cannot show your best moves to the world. You deserve internet felicity for every win! So here comes the replay system. After playing an online game, you can now head to https://super-tilt-bro.com/replay.html to watch the replay of the game. As simple as that! It's then up to you to record your screen, and share the game. You can also use this page to watch games, it is kind of a Super Tilt Bro. TV channel. What's new in the game? Redrawn online menu The online menu has been completely redrawn by Martin Le Borgne Woah! Other menus have also been updated. It is more subtle but you may notice that there are more sound effects than before, the navigation is slightly better, and clouds' parallax is more consistent. Bad ping is gone About the infamous "bad ping" message when trying to connect to a server. This message happens when the game decides that the network conditions are too bad to even try to connect. It originally was when ping was above 200 ms. With time, and netcode improvements, this limit became too low. The game can handle 200 ms ping and still be playable. The limit has been raised to 800 ms. Gameplay improvements The fast-fall mechanics has been improved. Now, your character shines while fast-falling, and weird cases where you stayed in fast-fall mode for too long have been fixed. Added sound effects for jump, fast-fall, and land moves. Finally, the maximum time allowed on the respawn platform has been decreased, from five to four seconds. Kiki changes Most animations of Kiki have been extended. The goal is to smooth the animation, and to add end-lag to her moves. Kiki always has been a character with a good range, and strong attacks. The idea is that she is strong at punishing her opponent's mistakes, but should not spam here attacks. Search the weakness in your foo's play, and exploit it. Adding end-lag to her animations ensures that Kiki's player has to think twice before attacking. Animations change details: - Jab is now 16 frames instead of 12. It can still be cancelled by another jab at any point. - Side-tilt: Added 4 frames of end-lag. The animation is now 20 frames instead of 16. - Up-tilt: Added 4 frames of start-lag, and 4 frames of end-lag. Removed 8 frames with active hitbox. The animation's duration is unchanged, 16 frames. Talking about animations, Kiki now has a proper animation for drawing a platform above her head. When landing during an attack, Kiki slides on the ground performing the attack. This is not new, but has changed a little. Tilt-slide, and jab-slide distances are slightly reduced. Finally, Kiki's platforms now last 2 seconds instead of 2.40 seconds previously. This patch happens to be quite a nerf for Kiki. It will need some serious play-test to see if balance is not broken in the unusual way. Sinbad changes Slide attacks go slightly farther. What's new under the hood? Real NTSC compatibility There are some differences between the PAL and NTSC NES. The most impacting one is the frame rate. An NTSC NES displays 60 frames per second, while the PAL version outputs only 50 frames per second. Super Tilt Bro. has been primarily developed on PAL hardware. That said, since the beginning the game is playable on NTSC systems. Until now the trick has been to double one out of six frames, to virtually reduce NTSC frame rate to 50 frames per second. Frame doubling trick to get 50 FPS on NTSC While it basically works, it is far from ideal. This trick not only loses the extra smoothness of 60 FPS, it adds extra bumpiness by oscillating between 60 and 30 FPS. So, how do get rid of this doubled frame? There are three impacted domains: physics, animation, and audio. In physics, all speeds have to be slower on NTSC. An object that moves 1 pixel per frame at 50 FPS needs to move at 0.83 pixels per frame at 60 FPS, to keep progressing at the same speed (50 pixels per second.) So speeds needs to be multiplied by 0.83 but here's the catch, the NES is very poor at two things: multiplications, and floating point arithmetic. Full description of the solution would not fit in this release note. Long story short: by decomposing the multiplication byte by byte, and reserving 1 KB of ROM for lookup tables, it is possible to multiply by any constant (even 0.83) blazing fast. Characters animations also need to be slowed down. These animations actually do not run at 50 FPS, they are more like animated GIF: each encoded frame takes ROM space, so we limit it. For such animation, the frame doubling trick is completely unnoticeable, lightly extending one animation frame's duration from time to time. Just take care of always extending the same animation frames, so the animations are always played exactly the same. It is important to have consistent frame data in versus games. And the audio engine. Yes, the audio is impacted by the frame rate: in the NES, the most reliable timing information we have is the periodic display of a new frame. We naturally use it to regulate music's beat. As most authors compose for the NTSC NES, Super Tilt Bro.'s audio engine has been converted to NTSC-native. On PAL, it occasionally plays two beats in one frame to simulate 60 FPS. It is to be noted that while feeling the same, the game is slightly altered: 50/60 is not exactly 0.83, and frame data is not the same between PAL and NTSC. That sadly means that the netcode cannot accommodate a cross-play PAL/NTSC, desynchronizations would be terribly common. An option could be to fallback to the frame doubling trick only on cross-play, maybe better than nothing. And voilà! You know the fun parts of being PAL/NTSC compatible (the right way.) It's been a long time without "under the hood" section in the release note. Please tell if it was a nice surprise, or "too technical, didn't read." Maybe this subject deserves a complete devlog entry?
  23. Rapid update, you can now register your email address on https://www.super-tilt-bro.com to be notified when the physical release draws near It is a one-time mailing list. You will only receive the Kickstarter* launch notification, straight to the essential! * Maybe a preorder notification if we decide to go without Kickstarter.
  24. @fcgamerNo problem, I'll contact you via private message on VGS, that's ok? Note that it will still take months before the game is in a good-enough state to be sold. I want to make it the best I can before asking for money. In the meantime, you can play the alpha, which just received an update! Release-note time! ------ Super Tilt Bro. 2.0-alpha8: New musics, and fixes What's new in the game? New musics Two new musics, by Kilirane, can be heard in game. The first is inspired by Sinbad, while the second depicts Pepper's personality. You will also notice that the main theme is now played at correct pace in the menus. The audio engine has actually received some long-deserved love in this patch, including the feature of playing NTSC musics correctly on PAL system, and inversely. Kiki Kiki can now walljump While Kiki does not really need a walljump, it makes it available to all characters. Kiki was the only one unable to do it, disturbing after playing other characters. So walljump is now a standard move, like the double-jump, all future characters are expected to have it. Fixes Kiki can no more have a free jump by buffering the jump action during an aerial. Long-time bug, it was originally on all her moves, then reduced patch by patch. All should be squashed now. Kiki no more ignores gravity when spamming side-special. Kiki's AI no more KO itself when thrown out of screen. Before this fix, you could often have Kiki AI draw a platform out of screen, then run straight to the blast-line. Sinbad cannot bufferize grounded moves when his side-tilt lands aside from the platform. Pepper's teleport no more kill her randomly. Pepper's teleport on-spot hitbox is now correctly placed at her starting position. Join the bug-squashing squad! The game can be freely played (in emulator) here: https://sgadrat.itch.io/super-tilt-bro To find an online match, there is no place better than discord : https://discord.gg/qkxHkfx
×
×
  • Create New...