Historia projektu StreamChange

Ocenianie kanałów u Bafa

Od września 2016 roku na kanale Baf, co kilka dni wieczorami, były prowadzone streamy z tworzenia miasta z Margonem w 3D. W przerwach od modelowania obiektów w Blenderze, Baf oceniał kanały widzów. Tworzenie modelu Nithal - największego miasta z gry przeglądarkowej Margonem, zakończyło się na koniec listopada. Model posłużył do nagrania filmiku animowanego, który został wyrenderowany na silniku Unreal Engine 4. Każda klatka została zapisana jako obraz PNG. Zostały one następnie złożone razem w Blenderze, do formatu AVI. Filmik ważył kilkadziesiąt gigabajtów, a jego przesyłanie na Youtube trwało 20 godzin. Animacja została opublikowana 6 grudnia i nie zdobyła popularności nawet po wielu latach jej obecności na Youtube. Trzy miesiące tworzenia grafiki 3D poszły praktycznie na marne, ponieważ większą popularność można było zdobyć filmikiem przygotowanym w ciągu kilkunastu minut. Od tego czasu Baf rozpoczął stopniowo wycofywać się z tworzenia grafiki 3D, a na streamach, które wciąż chciał regularnie prowadzić, coraz więcej czasu było przeznaczane na ocenianie kanałów, aż zostało głównym, a później jedynym tematem streamów.
Na ocenianie z początku decydowali się gracze Margonem, którzy poznali Bafa, gdy tworzył animacje 3D i prowadził ankiety na temat animacji wśród graczy. Z czasem kolejni początkujący Youtuberzy, zainteresowani ocenianiem ich kanałów, trafiali na streamy Bafa z wyszukiwarki.
Podczas, gdy inni streamerzy zajmujący się ocenianiem kanałów, wystawiali tylko punktowe oceny, często nie przekazując przy tym żadnej wiedzy dla twórców, Baf starał się zawsze udzielać praktycznych wskazówek i nie określać ocen kanałów w skali 0 do 10 nawet wtedy, gdy ktoś o to prosił. To oczywiście zajmowało znacznie więcej czasu niż określenie kanału jedną liczbą. Każdy kanał był oceniany średnio 8 minut. Jednocześnie widzowie pisali na czacie dużo pytań odnośnie grafiki 3D, gry Margonem i informatyki. Przez to na ocenianie swojego kanału trzeba było czekać. Pół godziny oczekiwania to był standard. Aby ustalić, w jakiej kolejności Baf ma przyglądać się wskazanym mu kanałom, otwierał je w kolejnych kartach przeglądarki. Kanały przeznaczone do oceniania były ułożone od lewej do prawej strony ekranu. Taki sposób jest w sam raz, gdy na ocenianie czekają trzy osoby. Kłopot zaczyna się wtedy, gdy z oceniania chce skorzystać kilkanaście osób jednocześnie. Ponieważ czas oczekiwania był długi, ponad połowa widzów rezygnowała z oceniania, zanim nadeszła ich kolej. Nie pisali jednak, że rezygnują, tylko po cichu wychodzili ze streama. Nietrudno się domyślić, że przy większej skali robi się kompletny chaos. Tak właśnie było u Bafa. Zamiast skoncentrować się na ocenianiu kanałów, trzeba było otwierać kolejne kanały w kartach przeglądarki i obserwować,  jeszcze pisze coś na czacie, a kto już najpewniej wyszedł. Kolejnym utrudnieniem jest czat działający z różnym opóźnieniem u poszczególnych widzów. Gdy odstęp czasu pomiędzy wysłaniem kilku wiadomości na czacie jest mniejszy niż sekunda, to widzowie mogą mieć na swoich ekranach różną kolejność wiadomości. Zdarzało się, że widzów prawie równocześnie poprosiło o ocenianie, a później sprzeczali się, kto był pierwszy. Prowadząc streamy z oceniania kilka razy w tygodniu, Baf dostrzegł pełen wachlarz problemów, jakie mogą się mu przytrafić. Gdy widzów przybywało, ocenianie było coraz bardziej męczące dla prowadzącego, a widzowie rezygnowali niezadowoleni. Trzeba było coś z tym zrobić.

Fejkowe konta znanych Youtuberów obecne na czacie

W 2017 roku popularnością cieszyły się rajdy popularnych Youtuberów na streamy początkujących twórców. Czasem także w wolnym czasie, topowi Youtuberzy odwiedzali różne przypadkowe streamy, pisali jakąś wiadomość i patrzyli jaka będzie reakcja. Pokryło się to w czasie z licznymi zmianami wyglądu plakietki zweryfikowanego kanału przez programistów Youtube. Nietrudno się domyślić, że wynikiem ówczesnej sytuacji był cały wysyp fikcyjnych, pustych kont, które podszywały się pod popularnych Youtuberów. Ludzie posługiwali się nimi, aby robić kawały na czatach na streamach.
Takie konta miały zdjęcie profilowe i baner, skopiowane z konta popularnego influencera oraz jego nazwę z dodanym znakiem przypominającym plakietkę „Zweryfikowany”. Nazwy kanałów mogą zawierać pełen zakres znaków Unicode, więc żartownisie mieli z czego wybierać, aby jak najwierniej odwzorować prawdziwą plakietkę.
Podrabiane kanały miały ukrytą liczbę subskrybentów oraz choć jeden film skopiowany z prawdziwego konta, ustawiony najczęściej na stronie głównej jako zwiastun kanału. Raz zdarzył się kanał, który miał ustawione na stronie głównej, playlisty filmów z prawdziwego kanału, a więc były pod nimi widoczne wysokie liczby wyświetleń, a kliknięcie prowadziło do filmu na prawdziwym koncie. Widzowie pisali z nim na czacie przez kilkanaście minut zanim ktoś domyślił się, że to fejk. Byli aż tak przekonani, że to prawdziwy Youtuber, że ten, kto pierwszy dał znać, że to fejk, został uznany za wariata. Ludzie kryjący się za podrobionymi kontami, pisali także regularnie na streamach u Bafa, co doprowadziło go do rozważań, czy dałoby się coś z nimi zrobić.

Niesłuszny timeout na streamie z Margonem

W czasach, gdy Baf tworzył animacje o Margonem oraz już po ich opublikowaniu, regularnie bywał na streamach z tej gry, aby poznać innych twórców zajmujących się tą samą branżą i zbudować sieć kontaktów. Była to także możliwość poznania opinii od ludzi, którzy spędzają przy tej grze najwięcej czasu. Takie opinie były przydatne na przykład przy wyborze lokacji z gry, w której powinna toczyć się akcja filmiku animowanego. Raz odwiedził średnio popularnego twórcę, który prowadził stream z Margonem i napisał na czacie jakieś pytanie. To była pierwsza wiadomość napisana przez niego na tym streamie. Streamer odpowiedział mu, że pyta o to dzisiaj już trzeci raz i od razu dał mu timeouta. Historię wiadomości na czacie można było przesunąć do góry tylko o około 20 wiadomości, więc Bafowi trudno było dowieść, że streamer się myli. W 2017 roku, nie było jeszcze funkcji ponownego odtwarzania czatu, na zapisanym nagraniu z transmisji. Sytuacja z niesłusznym timeoutem doprowadziła do rozważań nad możliwością zapisu całej historii czatu do pliku tekstowego. Wszak w takim pliku można byłoby wyszukać, czy nazwa danego widza pojawiła się już wcześniej, czy też faktycznie była to jego pierwsza wiadomość.

Program na Windowsa napisany w VB.NET

Do połowy 2017 roku, Baf miał już ułożony plan, jakiego programu mu potrzeba. W tym czasie swoją kinową premierę miał film The Circle. Znaczna część fabuły tego filmu (jak i książki, na podstawie której napisano scenariusz) dotyczy miniaturowej kamerki, nazwanej SeeChange. To właśnie jej program zawdzięcza swoją nazwę – StreamChange. Gdyby planowanie programu nie pokryło się w czasie z premierą tego filmu, czytałbyś ten tekst na stronie o zupełnie innej nazwie.
Baf był wtedy na pierwszym roku studiów informatycznych. Nauka na tym etapie studiów polega na rysowaniu schematów blokowych oraz pisaniu prostych programów konsolowych. We własnym zakresie Baf nauczył się prostego języka Visual Basic .NET, który pozwala tworzyć programy okienkowe na Windowsa, uruchamiane w środowisku .NET Framework. To jest język dla początkujących, co przejawia się choćby w zastąpieniu nawiasów słowami i tak na przykład deklaracja klasy zaczyna się od Class, a kończy na End Class. Wiele skróconych nazw, obecnych w innych językach programowania, zostało w Visual Basic zastąpionych pełnymi nazwami (np. liczba całkowita to Integer, a w innych językach jest int). Przez to napisany kod jest bardzo długi, ale za to znacznie bardziej zrozumiały dla młodego, niedoświadczonego programisty.
Właśnie w tym języku Baf postanowił napisać program, który usprawni jego ocenianie kanałów. Najtrudniejsze na początek okazało się pobieranie wiadomości z czatu przez Youtube Data API. Mimo, że VB.NET był niszowym językiem, Google przygotował bibliotekę dla języków .NET, która zawierała implementację wszystkich funkcji API oraz autoryzacji OAuth2. Do biblioteki, Google dołączył obszerną dokumentację z przykładami kodu. Na GitHubie był dostępny przykładowy program, który okazał się sporą pomocą. Kolejnym problemem było układanie kanałów w odpowiedniej kolejności i przesuwanie się kolejki do góry, gdy do oceny był brany kolejny kanał. Pierwsza wersja została zaprezentowana na streamie w lipcu 2017 roku. Z początku wcale nie ułatwiała ona oceniania, ponieważ miała liczne błędy. Kolejne streamy służyły do testowania jej w realnych warunkach.

Główne okno programu StreamChange Ilustracja 1. Główne okno programu StreamChange

Po starcie aplikacji, na ekranie ukazywało się jej główne okno, w którym było logowanie i przyciski do otwierania innych modułów w osobnych oknach. Kolejka była pierwszym wykonanym modułem, a zaraz po niej powstało zapisywanie historii wiadomości do pliku. Historię można było zapisać do pliku XML, który dało się potem otworzyć w programie StreamChange, by czytać, przeszukiwać i filtrować jego zawartość. Drugą opcją był zapis do pliku PDF i był on w sam raz, gdy zapisem czatu chciałbyś podzielić się ze znajomymi, którzy nie mają programu StreamChange.

Okno programu StreamChange TrueYou Ilustracja 2. Okno programu StreamChange TrueYou

Gdy kolejka już w miarę działała, kolejnym problemem do rozwiązania były fejkowe konta. Jednym z kluczowych cytatów z filmu The Circle jest „Because knowing is good, but knowing everything is better”. Wokół tego motto został stworzony kolejny moduł aplikacji. Zapisywał on do bazy danych wszystkich widzów, którzy napisali coś na czacie. Każdy wpis zawierał historię zdjęć profilowych, historię nazw, opis, link do kanału, liczbę subskrypcji, ilość wysłanych wiadomości na czacie, ilość minut spędzonych na streamie, daty i godziny pierwszej i najnowszej wiadomości na czacie. Takie narzędzie pozwalało szybko demaskować osoby, które zmieniły awatar i nazwę swojego kanału. Dało też możliwość sprawdzania, czy ktoś jest na streamie pierwszy raz, czy też kiedyś już napisał jakąś wiadomość. Jeśli masz dużo widzów, nie byłbyś w stanie zapamiętać, że dany widz odwiedził cię rok temu i napisał wtedy jedną wiadomość. Program to potrafił. Mając takie dane, można było rozpoznawać nie tylko fejkowe konta popularnych twórców, ale też osoby podszywające się pod twoich stałych widzów nawet, jeśli ci widzowie nie publikują żadnych filmów. Odczucie było takie, jakbyś wcześniej czytał czat przez dziurkę od klucza, a potem StreamChange otworzył dla ciebie całe drzwi. Nie był to jednak program bez wad. Ponieważ powstał w VB.NET, działał ociężale i zawieszał się, gdy miał wyświetlić obszerną tabelę widzów. Dało się też odczuć brak wiedzy programisty, który go stworzył – nieraz zdarzały się nieobsługiwane błędy, których wystąpienie skutkowało zamknięciem programu.

Porozmawiaj z Generalną - inteligentnym botem

Pierwszym krokiem po otwarciu programu, zawsze było zalogowanie się w nim na swoje konto Google, by program dostał token OAuth2. Taki sposób logowania dawał programowi uprawnienie do wysyłania wiadomości na czacie z konta, którym się zalogowałeś. Moduł kolejki już na początku swojego istnienia wykorzystywał tą funkcję do powiadamiania widzów, że dostali się do kolejki, na które miejsce się zakwalifikowali lub że kolejka jest już pełna. Możliwość zaprogramowanego wysyłania wiadomości w wybranych sytuacjach bez ingerencji streamera kusiła, by tą funkcjonalność rozszerzyć. Po ocenie setek kanałów, Baf dostrzegł, że na wielu powtarzają się te same błędy, jak brak opisu kanału lub intro z panzoida oraz że niektóre proste błędy, program byłby w stanie dostrzec samemu. Te obserwacje doprowadziły do rozszerzenia modułu kolejki o automatyczne, podstawowe ocenianie kanałów. Gdy ktoś napisał komendę dołączenia do kolejki, program odpowiadał mu, na które miejsce trafił, a kilka sekund po tym dostawał wiadomość z poradą, co może poprawić na swoim kanale.
Wysyłanie wiadomości przez StreamChange było rozwijane w takim kierunku, by przypominało język naturalny, teksty pisane przez żywego człowieka. Konto, z którego były wysyłane wiadomości, potrzebowało przyjaznej nazwy, która nie będzie kojarzyła się z bezdusznym robotem. Wybór padł na nazwę Generalna. To nie była oryginalna nazwa – tak samo nazywała się najaktywniejsza w tamtym czasie moderatorka CDX’a i Torcia.
Aby wirtualna Generalna zyskała złudzenie bycia człowiekiem, StreamChange musiał zostać poszerzony o moduł cleverbot. Cleverbot to algorytm AI, który odpowiada na wysyłane do niego wiadomości. Jest systemem uczącym się – zapamiętuje, jak ludzie odpisują na dany tekst i naśladuje ich. Im więcej ludzie z nim piszą, tym trafniej potrafi odpowiadać, ponieważ rośnie jego baza wiedzy i posiada w niej odpowiedzi na więcej pytań. Trzeba jednak mieć na uwadze, że sztuczną inteligencję obowiązuje zasada „garbage in, garbage out”. Oznacza ona, że wprowadzając do programu głupie treści, on również będzie głupio odpowiadał. Najsłynniejszym tego przykładem był bot Tay, którego ludzie nauczyli pisać rasistowskie i inne obraźliwe teksty, przez co musiał zostać wyłączony po 16 godzinach od premiery.
Baza tekstów Generalnej była czasami ręcznie porządkowana przez jej twórcę, więc ten bot był bardziej kulturalny niż Tay. Niestety mała ilość danych do uczenia się, sprawiała, że odpowiedzi Generalnej rzadko były trafione. Były za to bardzo śmieszne. Generalna potrafiła także witać widzów po imieniu, gdy miała czyjeś imię w bazie danych. Widzowie polubili Generalną i często prowadzili z nią rozmowy, by umilić sobie czas oczekiwania na ocenianie ich kanału.

Dystrybucja, która nigdy się nie rozpoczęła

Program, którego napisanie zajęło wiele miesięcy, był do tej pory używany tylko przez jednego streamera. Gdy zapoznamy się ze średnimi kosztami pracy programisty i spróbujemy policzyć potencjalny koszt implementacji programu o podobnej złożoności, wtedy mogłoby okazać się, że setup streamingowy Bafa należał do najdroższych na świecie. Biorąc pod uwagę, że był to wtedy kanał z pięcioma tysiącami subskrybentów, widzimy skrajną niegospodarność. Poniesione koszty nigdy nie miały szans się zwrócić. Cała ta sytuacja nie była widoczna gołym okiem, ponieważ żadne przepływy pieniężne nie miały miejsca. W rzeczywistości kosztem wykonania programu, były setki godzin pracy bez otrzymanego wynagrodzenia.
Rozwiązaniem miała być sprzedaż programu dla innych streamerów. Wtedy koszty jego stworzenia, zostałyby rozłożone na więcej osób i przyjęłyby akceptowalny poziom w przeliczeniu na jednego użytkownika. Miał to być program, na który może sobie pozwolić przeciętny streamer o małej widowni.
Przy rozpoczęciu przygotowań do wydania programu, stało się bardzo widoczne, że StreamChange był od początku tworzony z zamiarem używania go przez jednego streamera. Jego interfejs był trudny w obsłudze. Wiele przycisków miało tylko ikony bez jakichkolwiek objaśnień, do czego one służą. Niektóre funkcje były trudne do odnalezienia. Program miał wbudowaną linię komend, której użycie było konieczne, aby na przykład dołączyć bota do czatu. Nigdzie jednak nie było napisane, że to małe pole tekstowe to właśnie linia komend, ani co należy tam wpisać. Najtrudniejsza jednak była początkowa konfiguracja, aby program zadziałał na nowym komputerze – ta wymagała choćby założenia konta deweloperskiego w Google Cloud.
W ramach przygotowań do dystrybucji programu, dodano dymki z opisami, wyświetlające się po najechaniu myszką na przyciski oraz pola tekstowe.
StreamChange był do tej pory używany tylko na jednym komputerze i był to ten sam komputer, na którym został napisany i skompilowany. W celu przeniesienia takiego programu na inny komputer, konieczny był instalator. Samo środowisko Visual Studio jest w stanie zaoferować tylko prosty instalator w formie pliku .msi. W przypadku StreamChange to było zbyt mało i instalator nie działał poprawnie. Konieczne okazało się przygotowanie instalatora WiX. Tak samo nazywa się kreator stron internetowych, lecz to zupełny przypadek.
Sporządzenie działającego instalatora zajęło ponad dwa tygodnie. Prace składały się z konfiguracji WiX Toolset oraz napisania umowy licencyjnej, którą każdy płatny program powinien mieć do przeczytania w instalatorze. Następna w kolejności była instrukcja początkowej konfiguracji. W pliku pdf o rozmiarze około dziesięciu stron, została przygotowana szczegółowa instrukcja z ilustracjami dla każdego kroku konfiguracji. Instrukcja miała zostać rozesłana do osób, które nie potrafią programować, by ocenili, czy jest zrozumiała. Nikt jednak nie chciał zostać testerem i poświęcić choćby kilku minut na jej przeczytanie. W końcu jeden streamer, który rozważał zakup programu, otrzymał instrukcję i bez problemu skonfigurował program, co oznaczało, że instrukcja była w porządku.

Wygląd programu StreamChange Tester Ilustracja 3. Wygląd programu StreamChange Tester

Do potencjalnych klientów, którzy planowali zakup programu, był wysyłany program SC Tester. Była to mocno okrojona wersja programu, która nie robiła nic, ale jej konfiguracja przebiegała w identyczny sposób, jak w pełnej wersji. Stworzenie SC Testera było kolejnym etapem przygotowań do dystrybucji, który pochłonął ponad tydzień pracy. Założenie było takie, że SC Tester ograniczy ilość reklamacji płatnego programu. Poprawne uruchomienie SC Testera dawało pewność, że pełny program także będzie działał.
Programy instalowane na komputerach są podatne na piractwo. StreamChange miał sobie radzić z nim w ten sposób, że każdy Youtuber miał dostawać program z identyfikatorem swojego kanału zaszytym w kodzie. Przez to program dla każdego klienta musiałby być osobno kompilowany, ale za to działałby tylko na streamach osoby, która kupiła program. Gdyby ktoś rozpowszechnił taki program, to piraci i tak nie mogliby na nim zalogować się na swoje konto Youtube.
StreamChange był napisany we frameworku .NET, który jest kompilowany do kodu pośredniego i możliwa jest jego dekompilacja, a następnie usunięcie przypisania do jednego konta. Aby to utrudnić, w dystrybuowanym programie miał zostać zaciemniony kod (ang. obfuscation). Ta operacja była kolejną rzeczą w procesie dystrybucji, która dodawała nieco dodatkowej pracy.
Równocześnie z przygotowywaniem programu do dystrybucji, była prowadzona ankieta na temat ceny, jaką potencjalni klienci są gotowi zapłacić za taki program. W prowadzeniu ankiety pomógł Youtuber Majkel, który miał w tym czasie dużą i zaangażowaną widownię na streamach. Po zebraniu i uśrednieniu wyników ustalono jednorazową opłatę za program w wysokości 60zł.
Gdy rozesłano ogłoszenia o rozpoczęciu sprzedaży programu, kilka osób zgłosiło się po darmowy tester. Pełnego programu nikt nie kupił. Wiele tygodni pracy nad instalatorem, testerem i instrukcją, poszło na marne.
Podstawową wadą modelu biznesowego była tu grupa klientów, do której kierowany był program. Nastoletni Youtuberzy, którzy byli początkowo zaciekawieni programem, nie są chętni do jakichkolwiek zakupów. Wielu z nich ma roszczeniową postawę. Montują swoje filmy w pirackich programach do edycji wideo i dodają do nich grafiki bez licencji, znalezione w Google Grafika. Gdy czasami znajdzie się jakiś Youtuber, który chce kupić na przykład paczkę animacji od popularnego grafika, to ma do zaoferowania w zamian tylko paysafecard za 20 zł.

Upadek popularnych liczników subskrypcji

Screenshot strony Youtube z otwartym filmikiem Bafa o nazwie Jak ustawić wyjątkowy licznik subów w OBS Ilustracja 4. Poradnik do licznika subskrypcji

Mimo porażki z wprowadzeniem na rynek programu dla streamerów, Baf miał na swoim koncie inny sukces w świecie streamingu. Był to filmik wyjaśniający, jak dodać do OBS licznik subskrypcji. Osiągnął on dwieście tysięcy wyświetleń, zapewnił twórcy rozpoznawalność, a prezentowana w nim metoda stała się branżowym standardem i wyparła te stosowane wcześniej. Filmik został opublikowany w maju 2017 i przedstawiał instrukcję na przykładzie strony internetowej z licznikiem, stworzonej przez hinduskiego programistę, Akshata Mittala. Strona przestała działać w styczniu 2019 roku, gdy Google wziął się za ograniczanie dostępu do Youtube Data API i zmniejszył limit dziennej liczby zapytań przesyłanych na serwer Youtube. Nowy limit był zbyt mały, by strona mogła działać jak dotychczas, czyli na bardzo wielu streamach jednocześnie, co kilka sekund odświeżając licznik.
Upadek hinduskiego licznika pokrył się w czasie z premierą strony internetowej streamchange.pl, na której znajdował się kreator licznika subskrypcji bez pisania kodu CSS. Darmowe rozwiązanie dostępne pod marką StreamChange, likwidowało największą trudność ustawienia swojego licznika, jaką była edycja kodu CSS przez nastolatków o zerowej wiedzy z programowania. W takim kodzie, często zdarzały się drobne pomyłki w postaci braku jednego znaku, które sprawiały, że cały licznik nie działał. Dzięki przekierowaniu na streamchange.pl z popularnego poradnika, nowa strona była odwiedzana już od pierwszego dnia jej istnienia, a po miesiącu, dzienna liczba odczytań licznika wynosiła średnio sześćset tysięcy.

Fussbot kończy działalność

Wygląd programu Fussbot Ilustracja 5. Wygląd programu Fussbot

W 2018 roku, sporą popularnością i uznaniem wśród streamerów, cieszył się Fussbot. Był to darmowy program do zainstalowania na komputerze, który posiadał wiele ciekawych funkcji wzbogacających streamy. Był zdecydowanie prostszy w obsłudze niż StreamChange. Fussbot był najbardziej znany z systemu zbierania punktów lojalnościowych dla widzów, często zwanych monetami, za oglądanie streamów i wysyłanie wiadomości na czacie. Wprowadzenie takiej funkcji na swój stream, zdecydowanie zwiększało aktywność na czacie. Widzowie często wysyłali komendy do sprawdzenia ilości zebranych monet, czasu spędzonego na streamie oraz rankingu widzów. Za zebranie określonej ilości punktów/monet, streamerzy przyznawali różne nagrody, najczęściej paysafecard za 20 złotych oraz wykonane przez siebie grafiki.
Fussbot został uśmiercony przez Google w styczniu 2019 roku, w ten sam sposób co liczniki akshatmittal.com i livecounts.net. Nowy limit na korzystanie z API był zbyt mały, by Fussbot mógł czytać wiadomości na streamach i naliczać widzom punkty za ich pisanie. Przydatny projekt non-profit, jakim był Fussbot, nie wytrzymał starcia z wielką korporacją. Wątpliwe, czy likwidacja Fussbota przyniosła jakąkolwiek korzyść Google. Wynikała raczej z tego, że ludzie tworzący politykę dostępu do API, nie mieli żadnego pojęcia, co dzieje się w świecie streamingu i nie wiedzieli, jak ich decyzje oddziałują na rzeczywistość. Blokując popularne aplikacje wzbogacające streamy, menadżerowie Google nieświadomie prowadzili do przenoszenia się streamerów z Youtube na Twitcha.

Płatna wersja StreamChange

Gdy wszystkie funkcje licznika na stronie streamchange.pl zostały już w pełni wykonane, a liczba użytkowników zatrzymała się na stałym poziomie (nasycenie rynku), nadszedł czas na rozbudowę strony o kolejną funkcjonalność. W pierwszej kolejności było to przepisanie kolejki widzów na streamie, używanej na potrzeby oceniania kanałów. Taka aplikacja była znacznie bardziej skomplikowana niż licznik subskrypcji. Ponieważ jedną z funkcji kolejki było wysyłanie wiadomości na czacie, konieczne było zabezpieczenie dostępu do aplikacji poprzez logowanie przy użyciu konta Google. Podczas, gdy prosty licznik sprawnie działał napisany w czystym PHP, to do implementacji kolejki, trzeba już było wybrać framework Symfony (też język PHP). Kolejka miała mieć identyczną funkcjonalność, jak ta napisana w VB.NET. Implementacja polegała tylko na przepisaniu desktopowego programu na aplikację internetową i zajęła znacznie mniej czasu, niż napisanie takiej aplikacji od początku.
Upadek Fussbota nie sprawił, że nagle nikt już nie chciał mieć na swoim streamie systemu zbierania punktów. On nie upadł przez brak klientów, tylko przez restrykcyjną politykę Google. Stąd dalszym kierunkiem rozwoju StreamChange było dodanie funkcji zbierania monet i zapisywania logów czatu. Funkcje były dostępne w kolejnych zakładkach dodanych do aplikacji z kolejką.
Gdy StreamChange składający się z kolejki, logu czatu i zbierania monet, w miarę sprawnie działał, po raz drugi podjęto próbę dystrybucji programu wśród streamerów. Dystrybucja aplikacji internetowej okazała się nieporównywalnie prostsza niż programu na Windowsa. Nowa aplikacja od początku była pisana tak, by jej interfejs był zrozumiały. Nie trzeba było też tworzyć instalatora ani pisać instrukcji. Aplikacje internetowe nie są podatne na piractwo, co też sporo upraszcza.
Internetowy StreamChange nie mógł być sprzedawany za jednorazową opłatą na początek. Do jego działania trzeba utrzymywać serwer, który generuje koszty co miesiąc. Obsługa użytkownika, który będzie korzystał z programu przez miesiąc, będzie tańsza niż kogoś, kto będzie intensywnie korzystał z niego przez rok. Niesprawiedliwe byłoby, żeby obaj płacili tyle samo. Program na komputery, raz sprzedany, nie generuje już kosztów dla jego twórcy, innych niż praca przy jego aktualizacjach. Po drugie, nie wiadomo było, jak długo taka aplikacja będzie działać. Program na komputery może działać tak długo, dopóki ktoś trzyma go na swoim komputerze. Aplikacja internetowa działa do czasu zdjęcia jej z serwera. Gdyby ktoś zapłacił jednorazową opłatę za korzystanie z aplikacji, a miesiąc później aplikacja została zlikwidowana, trzeba byłoby zwracać pieniądze. Widząc, jak Google wcześniej doprowadził do upadku podobne aplikacje dla streamerów, należało założyć, że przetrwanie aplikacji będzie obarczone wysokim ryzykiem. Ostatecznie ustalono opłatę za korzystanie ze StreamChange w wysokości 10zł za miesiąc. Na tak wycenioną aplikację, przez cały okres jej istnienia, zdecydowało się zaledwie dwoje streamerów – BefeQ i Rypix.
W nadziei, że kolejni streamerzy dołączą do użytkowników aplikacji, zostały dodane dodatkowe moduły – system transakcji i nagrody za monety zebrane na streamach. Streamerzy mogli po zalogowaniu tworzyć swoją listę nagród za monety, definiując ich nazwy, opisy oraz ceny. Możliwość logowania została udostępniona publicznie dla  widzów streamerów, którzy posiadali płatną aplikację. Widzowie mogli po zalogowaniu przeglądać, ile posiadają punktów u poszczególnych streamerów oraz zamawiać od nich nagrody. Nikt jednak z tego nie skorzystał, była to praca na darmo.

Google wprowadza nowe zasady

Polityka dostępu do API, która uśmierciła liczniki subskrypcji, nie pozostała na długo. Kilka miesięcy później, Google jeszcze bardziej zaostrzył zasady dostępu do danych statystycznych z Youtube. Publiczne dane o statystykach kanału zostały uznane przez Google jako dane wrażliwe, co w konsekwencji doprowadziło do odebrania aplikacji StreamChange możliwości logowania przy użyciu konta Google. Jednocześnie kolejne zmniejszenie dziennego limitu zapytań, jakie można przesłać do Youtube, spowodowało upadek licznika łapek pod streamem sygnowanego marką Zairoxa. Licznik Zairox łączył się z Youtube, korzystając z kluczy API pochodzących z licznika subskrypcji livecounts.net. Stąd, jak można się spodziewać, oba liczniki przestały działać tego samego dnia.

Powstaje StreamChange Giveaway

Screenshot strony Youtube z otwartym filmikiem Nightbot exposed Ilustracja 6. Filmik Nightbot Exposed

Gdy inne aplikacje upadały, Nightbot miał co najwyżej kilkudniowe przerwy w działaniu. Sekretem jego sukcesu mogło być to, że należał do firmy z San Francisco, zlokalizowanej w miarę blisko siedziby Google.
Pewnego razu podczas niedzielnej mszy w kościele, Baf wpadł na pomysł przeprowadzenia odwrotnej inżynierii Nightbota oraz nagrania filmiku pokazującego, jak działa ta aplikacja. Nie chodziło tu o włamywanie się do aplikacji, tylko o ustalenie jej wewnętrznej struktury poprzez wnikliwą obserwację, jak działa na zewnątrz, co okazało się dość proste. Filmik Nightbot exposed, nagrany w języku angielskim, nie zdobył dużej popularności. Mimo to, jego przygotowanie było wielkim sukcesem, ponieważ dostarczyło cennej wiedzy o cechach Nightbota, które przeszkadzają jego użytkownikom. Filmik został opublikowany w czerwcu 2019, a już w kolejnym miesiącu rozpoczęło się programowanie aplikacji StreamChange Giveaway. Założenia były takie, że Giveaway będzie lepszą alternatywą dla Nightbota, bez wszystkich wad, które posiada Nightbot.
Programowanie Giveaway było pracą dorywczą w weekendy, którą trzeba było pogodzić z trudnymi studiami dziennymi, dlatego tworzenie pierwszej działającej wersji sporo się przeciągnęło. Kolejka oceniania kanałów była bardzo potrzebna samemu jej twórcy. Z Giveaway było przeciwnie – był on niepotrzebny dla twórcy i miał służyć jedynie innym streamerom. To też spowalniało wydanie pierwszej wersji. Na jesień 2019, Baf przeczytał dwie książki o marketingu sieciowym – Biznes XXI wieku Roberta Kiyosaki i Bądź Pro Erica Worre.
StreamChange Giveaway miał swoją premierę na streamie urodzinowym Flerka, 22 grudnia 2019. Flerek losował w nim nagrody rzeczowe dla widzów z czatu. Jak można było się spodziewać, program, który jest pierwszy raz używany w realnych warunkach, będzie miał błędy, które trudno było wykryć w testach syntetycznych. Napotkane błędy były poprawiane w kolejnych dniach.
Flerek był jedynym człowiekiem, który dostał link do nowej aplikacji oraz został przekonany do jej używania. Było to dokładnie zaplanowane działanie. Dystrybucja StreamChange Giveaway miała być eksperymentem sprawdzającym działanie marketingu sieciowego na Youtube. Po jego premierze u Flerka, była prowadzona obserwacja, z jaką szybkością program zdobywa nowych klientów i do jakich zasięgów będzie w stanie dojść bez jakiejkolwiek kampanii reklamowej.
Już na początku stycznia 2020, a więc po dwóch tygodniach od premiery, z aplikacji zaczął korzystać Vaster oraz bezinteresownie ją reklamował. Jego widownia składała się głównie z początkujących Youtuberów, w tym streamerów, dzięki czemu reklama trafiała do idealnej grupy.
Strona streamchange.pl była dotychczas na serwerze złożonym ze starych, niepotrzebnych części do komputera. W lutym, gdy Giveaway miał już spore grono stałych użytkowników, trzeba było zapewnić aplikacji większą stabilność działania. Serwis został wtedy przeniesiony na AWS. Aby ograniczyć koszty utrzymania serwisu, na AWS zostały umieszczone tylko licznik subskrypcji i giveaway. Płatna wersja StreamChange została ostatecznie zamknięta.

Problemy z Youtube API

W kwietniu 2020, Google ostatecznie uniemożliwił korzystanie z Youtube Data API. Od tego czasu, zostały tylko trzy projekty, które posiadają do niego niemal nielimitowany dostęp. Są to StreamElements, StreamLabs i Nightbot. Wszystkie są prowadzone przez firmy z Doliny Krzemowej. W tym czasie ze streamów Bafa, na zawsze musiała zniknąć wirtualna moderatorka Generalna. StreamChange Giveaway miał wtedy kilkudniową przerwę w działaniu, po której udało się wznowić działanie aplikacji. Youtube Data API nie było niezbędne do jego działania.

Szybki rozwój aplikacji

Lockdown w 2020 znacznie przyspieszył rozwój StreamChange Giveaway. Dzienna liczba streamów na Youtube znacznie wtedy wzrosła, a jednocześnie nastała moda na losowanie przeróżnych nagród dla widzów. Streamerzy losowali wszystko, od wirtualnych sukienek w grze MovieStarPlanet, do całych komputerów gamingowych. Lockdown zapewnił też więcej czasu twórcy aplikacji na jej rozwój, poprawianie błędów i wsparcie użytkowników. W połowie 2020 roku, już prawie żaden Youtuber z Polski nie używał Nightbota do losowania. StreamChange używali nawet najpopularniejsi Youtuberzy. Marka SteelSeries promowała wprowadzenie nowych peryferiów gamingowych, losując kilka sztuk w aplikacji StreamChange.
Na koniec 2020, StreamChange Giveaway został poszerzony o wersję z kolejką. Interfejs obu wersji był bardzo podobny, różniły się tylko lewą kolumną. Kolejka została stworzona głównie na streamy z oceniania kanałów i nie zdobyła nawet procenta popularności wersji z losowaniem.
Oprócz setek godzin przeznaczonych na programowanie, StreamChange Giveaway powodował też koszty pieniężne dla jego twórcy – trzeba było opłacać domenę i hosting. Aby pokryć opłaty za utrzymanie aplikacji, w styczniu 2021 zostało dodane pole na reklamę. Znalazło się ono w środkowej kolumnie aplikacji Giveaway. W pierwsze dni było mnóstwo chętnych na reklamę, lecz z czasem ich liczba malała.
W kwietniu 2021, z inicjatywy Nejta i Kqmixo, powstał serwer Discord dla społeczności użytkowników StreamChange. Służy on przede wszystkim do zgłaszania błędów w działaniu aplikacji oraz proponowania nowych funkcji. Jak się później okazało, nawet stali użytkownicy aplikacji, nie byli zainteresowani prowadzeniem dyskusji na Discordzie. Utworzenie serwera Discord pokryło się w czasie z naprawieniem wszystkich zauważalnych błędów w aplikacji i dodaniem wszelkich funkcji, jakie mogą być komukolwiek potrzebne w aplikacji do losowania. Od tego czasu wszelkie zmiany w aplikacji polegały głównie na optymalizacji kodu i aktualizacji bibliotek. W październiku spora część kodu została przepisana z Javascript na Typescript, co nie było odczuwalne dla użytkowników.
Do grudnia 2021, po wejściu na streamchange.pl, ukazywał się kreator licznika subskrypcji. Służył on jako strona główna, choć był zdecydowanie mniej popularny niż aplikacja Giveaway. W grudniu została stworzona nowa strona główna, z której można dowiedzieć się, że StreamChange to nie tylko licznik, lecz pakiet aplikacji dla Youtuberów, w skład którego wchodzą także Giveaway i kolejka.
W styczniu 2022 powstała dokumentacja StreamChange. Jest to ta część serwisu, w której właśnie czytasz tę historię. W dokumentacji jako pierwsze pojawiły się instrukcje do płatnych funkcji aplikacji Giveaway. Dokumentacja ma służyć jako ogólna baza wiedzy dla streamerów, dlatego obecnie znajdziemy w niej wiele artykułów w ogóle nie związanych z aplikacjami StreamChange, lecz wyjaśniających na przykład teoretyczne zagadnienia potrzebne streamerom.