Toon posts:

Brute upload voor live streaming muziekgame

Pagina: 1
Acties:

  • Oogst
  • Registratie: juli 2001
  • Laatst online: 17-10-2020
Ik doe momenteel research om een spel te maken dat online gespeeld wordt met live muziek, en gespeeld wel door het liefst zo veel mogelijk spelers tegelijk. Daarvoor moet ik muziek streamen van mijn computer naar zoveel mogelijk spelers tegelijk. Het enige dat me ervan weerhoudt om dit zomaar met 100 spelers tegelijk te doen, is uploadsnelheid: als ik live streamende muziek naar 100 computers tegelijk ga uploaden, dat trekt mijn gewone internetabonnement natuurlijk nooit.

Er zijn een paar dingen die dit misschien gemakkelijker te realiseren maken:
-De game werkt alleen als ik live muziek aan het maken ben, dus dat is alleen op specifieke momenten. Ik hoef niet 24/7 een hoge upload te hebben.
-Alle spelers ontvangen dezelfde data, dus dan denk ik aan broadcasting. Maar broadcasting van dezelfde data naar meerdere ontvangers is niet zomaar mogelijk met de internets, toch? Valt hier wat handigs mee te doen?

Uiteraard zoek ik hiervoor een oplossing die niet al te duur is, en liefst ook eentje die ik van thuis uit kan doen, ipv dat ik naar een plek met meer bandbreedte toe moet.

Ik heb al eerder multiplayer games geprogrammeerd, maar hoe aan dit soort brute bandbreedte te komen voor mijn eigen computer is een helemaal nieuw onderwerp voor me. Dus, tips? Hoe pak ik dit handig aan?

Alvast bedankt! :)

Devblog / portfolio
Swords & Soldiers
Awesomenauts
Proun
Cello Fortress


  • CodeCaster
  • Registratie: juni 2003
  • Niet online

CodeCaster

👌👀 good shit ✔💯

Als een vertraging acceptabel is zou je een soort torrent/piramidestructuur kunnen opzetten waarbij iedere client die met jou verbindt zelf weer moet uploaden naar een aantal andere clients.

As always, we are nailed to a cross of our own construction.


  • leuk_he
  • Registratie: augustus 2000
  • Laatst online: 21-09 12:08

leuk_he

1. Controleer de kabel!

Broadcast werkt niet over internet. ipv6 beloofd dat wel te kunnen, maar als optie(in de de routers). Je moet dus of een brute server hebben of je data rondsturen via p2p. En alles wat de datahoeveelheid verminderd helpt uiteraard.

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


  • Brilsmurfffje
  • Registratie: december 2007
  • Niet online

Brilsmurfffje

Parttime Prutser

peer 2 peer is de beste optie.
Company of Heroes een computerspel maakt hier ook gebruik van voor het downloaden van patches

  • supreme tweaker
  • Registratie: december 2002
  • Laatst online: 15-09 09:46
Je kan natuurlijk gewoon een server huren en jou audiostream via die server distribueren naar alle clients. Zo upload jij 1x 320Kbit MP3 (bijvoorbeeld) wat die server binnenhaalt, en dan per client doorstuurt. Dat kan met een kabelinternetabbonnement wel.

Burp


  • DrClaw
  • Registratie: november 2002
  • Laatst online: 02-09 12:03
bandbreedte is inderdaad de limiterende factor in je hele verhaal.

maar .. je hoeft misschien niet je hele gemixte audiostream op te sturen. als je je live muziek maakt met een set aan voorgedefinieerde instrumenten, wat je dan kunt doen, is in plaats van de gemixte audiostream opsturen, stuur je je toetsaanslagen door (hehe, midi anyone), en aan de client-zijde bouw je die midi dan weer om naar dezelfde audiodata die jij ook hoort.

het is trouwens best een grappig idee wat je daar hebt .. een soort van een collaborative jam session met veel personen tegelijk over het internet. komt echter nog veel bij kijken.

je wilt de latency bijvoorbeeld zo laag mogelijk houden. als je tcp zou gebruiken, dan ben je toch wel enigzins gebonden aan de langzaamste snelheid naar je clients toe. dus gebruik je udp. maar, udp packets komen niet gegarandeerd aan. het kan dus zijn, dat er pakketjes missen bij sommige clients .. en als daar nou net wat midi control data in zit, dan klinkt dat bar lelijk.

je zult dan wel enige logica moeten inbouwen, die de midi data opnieuw opvraagt, en de gespeelde noot dan alsnog afspeelt (maar wel later in de 'sample' zogezegd).

..

misschien kun je ook eens kijken naar de efficiente codecs die ze gebruiken bij voip telefonie. ook hier is latency belangrijk, al zijn pauzes van max 0.5 seconden in een gesprek nog tolerabel. de meeste codecs echter zijn geoptimaliseerd voor speech, die de nadruk legt op bepaalde frequentiebanden .. misschien minder geschikt voor muziek. maar ja, misschien helpt het.

[Voor 55% gewijzigd door DrClaw op 08-11-2010 00:22]


  • Gomez12
  • Registratie: maart 2001
  • Laatst online: 23-07 14:44
Waarom niet een streaming server huren voor die periodes?

Jij upload naar 1 streaming server en die verdeelt het dan verder, als je dan nog steeds bandbreedte tekort komt dan kan je altijd nog naar p2p etc gaan kijken.

Ik vermoed ( niet gegoogled ) dat er vast wel partijen zijn waarbij je stream-capaciteit per uur per luisteraar oid in kan kopen...
brilsmurfffje schreef op maandag 08 november 2010 @ 00:02:
peer 2 peer is de beste optie.
Company of Heroes een computerspel maakt hier ook gebruik van voor het downloaden van patches
Zou je hier iets meer van kunnen toelichten? p2p lijkt mij een extreem moeilijk concept hiervoor, ik vermoed dat het niet gaat om de hoeveelheid data maar meer om het synchroon afspelen van de data.
P2p is afaik heel erg goed om grote hoeveelheden data ergens te krijgen, maar kent veel onbekende factoren waardoor het synchroon afspelen extreem moeilijk is

[Voor 45% gewijzigd door Gomez12 op 08-11-2010 00:19]


  • CH4OS
  • Registratie: april 2002
  • Niet online

CH4OS

It's a kind of magic

DrClaw schreef op maandag 08 november 2010 @ 00:11:
maar .. je hoeft misschien niet je hele gemixte audiostream op te sturen. als je je live muziek maakt met een set aan voorgedefinieerde instrumenten, wat je dan kunt doen, is in plaats van de gemixte audiostream opsturen, stuur je je toetsaanslagen door (hehe, midi anyone), en aan de client-zijde bouw je die midi dan weer om naar dezelfde audiodata die jij ook hoort.
Als je het dan als tekst (een XML file of zo) verstuurd, dan kan je het ook nog eens heel goed comprimeren.
brilsmurfffje schreef op maandag 08 november 2010 @ 00:02:
peer 2 peer is de beste optie.
Company of Heroes een computerspel maakt hier ook gebruik van voor het downloaden van patches
Mooiste zou dan zijn, om per game alleen te delen met de deelnemers binnen die game.
Probleem is dan wel, dat je deelnemers van de game verplicht om hun verbinding (deels) open te zetten.
Is dus wel een belangrijke om mee te nemen in de algemene voorwaarden van het spel.

[Voor 36% gewijzigd door CH4OS op 08-11-2010 00:37]


  • DrClaw
  • Registratie: november 2002
  • Laatst online: 02-09 12:03
het probleem van de TS is trouwens analoog aan de battlefields in bijvoorbeeld world of warcraft. daar kunnen ook tot 100 man tegelijkertijd een gevecht (lees: een muziekopvoering) uitvoeren, waarbij iedereen z'n eigen speelstijl en knoppen (lees: zijn instrument en manier van bespelen) heeft.

zo'n gevecht ziet er dan aardig synchroon en realtime uit, maar er zit een flinke hoeveelheid prediction logic in wat betreft de player positions en de player shots. en dat principe kun je helaas niet gemakkelijk transponeren naar de wereld van muziek maken. maar ja, het is allicht het proberen waard.

..

nog een ander ideetje: stel, iedereen heeft zn eigen korg kaoss pad achtige interface om muziek te maken .. dat zijn eigenlijk allemaal loops, en de loops veranderen an sich niet veel. je zou dan, alweer, de veranderingen in de sequences op kunnen sturen naar de verschillende clients, en dat de ene verandering eerder bij de ene client aankomt dan bij de andere maakt op zich niet uit.

  • stfn345
  • Registratie: januari 2000
  • Laatst online: 00:06
er zijn talloze opties:

1: Gebruik iets als ustream: jij streamt naar ustream, de rest kijkt/luistert a la youtube naar jouw broadcast - 1 x upstream nodig
2: gebruik een CDN met wowza of windows media servers. Zelfde verhaal, alleen kun je hierbij zelf vormgeven hoe de client het binnenkrijgt.

  • Oogst
  • Registratie: juli 2001
  • Laatst online: 17-10-2020
Wow, veel reacties, bedankt! :)

Met MIDI zou ik er eigenlijk al zijn, want dat gebruikt zo weinig bandbreedte, dat kan met een normale internetverbinding al wel naar zoveel computers. Echter, ik speel cello. Das een ouderwets analoog instrument en dat moet dus echt met streaming audio overgestuurd worden.

De andere spelers spelen gewoon met toetsenbord en muis, dus er hoeft alleen streamende muziek van mij naar hun, niet andersom.
Gomez12 schreef op maandag 08 november 2010 @ 00:16:
Waarom niet een streaming server huren voor die periodes?

Jij upload naar 1 streaming server en die verdeelt het dan verder, als je dan nog steeds bandbreedte tekort komt dan kan je altijd nog naar p2p etc gaan kijken.

Ik vermoed ( niet gegoogled ) dat er vast wel partijen zijn waarbij je stream-capaciteit per uur per luisteraar oid in kan kopen...
...
Heeft iemand hier enig idee wat voor partijen dit doen en wat voor prijzen ik dan aan moet denken? Ik heb er wel geld voor over, maar ik ben bepaald niet rijk, dus een grof idee van de kosten zou handig zijn. :)
supreme tweaker schreef op maandag 08 november 2010 @ 00:08:
Je kan natuurlijk gewoon een server huren en jou audiostream via die server distribueren naar alle clients. Zo upload jij 1x 320Kbit MP3 (bijvoorbeeld) wat die server binnenhaalt, en dan per client doorstuurt. Dat kan met een kabelinternetabbonnement wel.
OGG geeft goed genoege kwaliteit op ongeveer 80kbit, dus dat scheelt alweer een heleboel bandbreedte. 320kbit MP3 is wel erg hoge kwaliteit, dat is hiervoor gelukkig niet noodzakelijk.
CodeCaster schreef op zondag 07 november 2010 @ 23:53:
Als een vertraging acceptabel is zou je een soort torrent/piramidestructuur kunnen opzetten waarbij iedere client die met jou verbindt zelf weer moet uploaden naar een aantal andere clients.
Hmm, interessant. Vertraging op de gameplay is een probleem, maar ik ken genoeg multiplayer coding trucjes om dat te fixen. Als de muziek met een vaste vertraging bij spelers aankomt is dat daarentegen weer minder erg, dus dit zou wel kunnen. Probleem is wel dat dit insane ingewikkeld is om te bouwen, en mensen moeten porten open hebben staan om server te kunnen zijn, dus ik moet dan ook nog eens een algoritme maken wat binnen 100 spelers zoekt naar een p2p structuur die daadwerkelijk succesvol genoeg verbindingen maakt. Dit is misschien ietsje te ingewikkeld voor me om in mijn vrije tijd goed te knutselen. :)
CptChaos schreef op maandag 08 november 2010 @ 00:18:
[...]
Als je het dan als tekst (een XML file of zo) verstuurd, dan kan je het ook nog eens heel goed comprimeren.
...
De belangrijkste reden dat tekst zich lekker laat comprimeren, is dat het zonder compressie zoveel groter is dan binair. XML is zo 20x zo groot als een bitstream, dus die compressie compenseert vooral voor dat het al extreem inefficient was... Ik heb voor Swords & Soldiers op de PS3 een mooi bitstream systeem gebouwd dat daar een stuk efficienter voor is. :)
DrClaw schreef op maandag 08 november 2010 @ 00:31:
het probleem van de TS is trouwens analoog aan de battlefields in bijvoorbeeld world of warcraft. daar kunnen ook tot 100 man tegelijkertijd een gevecht (lees: een muziekopvoering) uitvoeren, waarbij iedereen z'n eigen speelstijl en knoppen (lees: zijn instrument en manier van bespelen) heeft.
...
Groot verschil is wel dat je in 1kbit/s gemakkelijk alle relevante data van 1 WoW speler kan versturen, en ik heb hier rond de 80kbit/s nodig voor die streaming muziek, verwacht ik. Ander verschil is dat Blizzard hiervoor epische serverparken heeft draaien... ;)
razorhead schreef op maandag 08 november 2010 @ 00:35:
er zijn talloze opties:

1: Gebruik iets als ustream: jij streamt naar ustream, de rest kijkt/luistert a la youtube naar jouw broadcast - 1 x upstream nodig
2: gebruik een CDN met wowza of windows media servers. Zelfde verhaal, alleen kun je hierbij zelf vormgeven hoe de client het binnenkrijgt.
Die termen kende ik allebei nog niet, dus ik ben maar even gaan Googlen. Als ik het goed begrijp is CDN iets met een boel servers over de wereld verspreid. Dat lijkt me niet heel erg haalbaar? Windows Media Servers lijkt een protocol te zijn om op een server te installeren, maar lijkt geen oplossing te zijn voor bandbreedte. Toch?

UStream klinkt razend interessant, maar ik kon niet vinden of ik er vanuit C++ mijn eigen stream naartoe kan knallen. Lijkt van niet, lijkt alleen via hun eigen software te gaan? En ik vraag me af hoeveel latency UStream heeft. Zou me niks verbazen als daar zo 10 seconde tussen kan zitten en dan werkt het voor mijn game niet meer. Heeft iemand hier ervaring met UStream?

Devblog / portfolio
Swords & Soldiers
Awesomenauts
Proun
Cello Fortress


  • Wolfboy
  • Registratie: januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Als je een XS4All verbinding hebt kan je dit gratis regelen tot 5 non-xs4all gebruikers: http://webcast.xs4all.nl/allediensten/livestream/

Als je toevallig wil streamen naar xs4all gebruikers is het een leuke optie, daarvoor is het onbeperkt.

Blog [Stackoverflow] [LinkedIn]


  • DrClaw
  • Registratie: november 2002
  • Laatst online: 02-09 12:03
nah, 't hoeft natuurlijk niet zo te zijn, dat jij de enige bent met een audiostream in het geheel. er zijn namelijk ook midi celli (cello's?) : http://www.tkinstruments.com/id115.htm

dan zou je t dus ook gewoon vanaf thuis kunnen streamen.

enne, xml, 't is leuk dat er een unified markup language is, maar er zit me een partij overhead omheen.. met een beetje efficiente binaire bitstream ben je er ook.

ik doelde met dat hele WoW verhaal op het feit, dat er vele tientallen clients tegelijkertijd in een realtime battle bezig kunnen zijn. en dat is helaas niet alleen maar 'een beetje posities doorsturen'; er komt flink wat bij kijken om dat voor alle clients geloofwaardig over te laten komen. En ja, natuurlijk hebben de blizzard mensen hun apparatuur op strategische posities in het netwerk staan. daarvoor scheppen ze ook miljoenen aan abonnementsgeld per maand naar binnen. feit blijft, dat zo'n gevecht te vergelijken is met een live muziekopvoering, alleen zijn menselijke oren vele malen gevoeliger voor fouten (ritmisch, harmonisch) dan ogen. trouwens ook meteen de reden, waarom audio prio heeft boven video bij live streams. haperende audio is ergernis nummer 1.

  • Oogst
  • Registratie: juli 2001
  • Laatst online: 17-10-2020
Ik zat eens te rekenen, en met 80kbit/s per client, zou ik met een 100mbit/s verbinding al 100 spelers tegelijk kunnen hebben, plus wat speling, toch? Bestaan er internetabonnementen waarbij je zoveel upload krijgt? Ik zat eens rond te kijken en ik vond ze zo snel niet, tot mijn verbazing?

Qua cello en MIDI: cello omzetten naar MIDI is wel te doen, maar MIDI daarna weer omzetten naar goed klinkende cello is niet mogelijk. Cello hoort bij de moeilijkste instrumenten om te genereren.

Devblog / portfolio
Swords & Soldiers
Awesomenauts
Proun
Cello Fortress


  • denan
  • Registratie: september 2003
  • Laatst online: 23-06 10:15

denan

[Plausible deniability]

Oogst schreef op dinsdag 09 november 2010 @ 10:13:
Ik zat eens te rekenen, en met 80kbit/s per client, zou ik met een 100mbit/s verbinding al 100 spelers tegelijk kunnen hebben, plus wat speling, toch? Bestaan er internetabonnementen waarbij je zoveel upload krijgt? Ik zat eens rond te kijken en ik vond ze zo snel niet, tot mijn verbazing?

Qua cello en MIDI: cello omzetten naar MIDI is wel te doen, maar MIDI daarna weer omzetten naar goed klinkende cello is niet mogelijk. Cello hoort bij de moeilijkste instrumenten om te genereren.
Glasvezel, maar dan moet het wel in je regio leverbaar zijn.

Zoniet dan denk ik dat de bovenstaande opties (wowza media server) het beste/goedkoopste zijn. In principe stream jij dan naar 1 publishing point en daarop loggen de spelers dan weer in. De bandbreedte is dan alleen beperkt door de hoeveelheid die je inkoopt bij de leverende partij.

[Voor 11% gewijzigd door denan op 09-11-2010 10:26]


  • leuk_he
  • Registratie: augustus 2000
  • Laatst online: 21-09 12:08

leuk_he

1. Controleer de kabel!

Oogst schreef op maandag 08 november 2010 @ 11:38:
[...]

Heeft iemand hier enig idee wat voor partijen dit doen en wat voor prijzen ik dan aan moet denken? Ik heb er wel geld voor over, maar ik ben bepaald niet rijk, dus een grof idee van de kosten zou handig zijn. :)
http://aws.amazon.com/ec2/pricing/ ? Per uur, geen minimum bedrag, moet je wel je eigen software op de server verzinnen en erop knallen.

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.

Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee