国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim Web-Frontend js-Tutorial Echtzeit trifft auf KI: Wie wir Gaming genutzt haben, um unsere neue Bibliothek vorzustellen, jetzt Open Source!

Echtzeit trifft auf KI: Wie wir Gaming genutzt haben, um unsere neue Bibliothek vorzustellen, jetzt Open Source!

Nov 13, 2024 am 07:49 AM

Wir freuen uns, Ihnen mitteilen zu k?nnen, dass wir den Code, den wir zur Erstellung eines interaktiven Erlebnisses verwendet haben, das Daten für über 3.000 Benutzer bei gro?en Technologieveranstaltungen synchronisiert hat, als Open Source ver?ffentlichen und so die Leistungsf?higkeit und Skalierbarkeit unserer neu ver?ffentlichten Echtzeitbibliothek demonstrieren.

Multiplayer Infinite Craft

Realtime meets AI: How we used gaming to showcase our new library, now open souce!

Ein wichtiger Teil davon war die Entwicklung des Super, das auf Infinite Craft basierte, im Mehrspielermodus. Das Spiel besteht darin, verschiedene Elemente zu kombinieren, um neue zu schaffen und so die Kreativit?t zu f?rdern.

Benutzer würden mit den wesentlichen Elementen beginnen: ?Feuer“, ?Wasser“, ?Erde“, ?Wind“, ?Kaffee“, ?JavaScript“ und ?Entwickler“. Nach der Kombination von ?Fire“ und ?JavaScript“ analysiert eine KI die Kombination und erstellt ?Firebase“.

Da diese Veranstaltungen eine gro?e Anzahl von Menschen (manchmal 3,5.000 Menschen) zusammenbringen würden, konnten wir nicht jedes neue Element unter allen synchronisieren. Das lag vor allem daran, dass das Gameplay keinen Spa? machen würde; Stattdessen w?re es verwirrend und stressig. Am Ende dieser Ereignisse w?ren das 16.000 Elemente. K?nnen Sie sich vorstellen, wie man 16.000 nichtstrukturierte Elemente auf einem mobilen Bildschirm anzeigt?

Wir haben einen anderen Ansatz gew?hlt und es zu einer Art Rennen gemacht. Jeder würde mit einer einzelnen Instanz spielen, aber für den Fall, dass er eine erste Entdeckung fand (was bedeutet, dass noch niemand zuvor diese Kombination ausprobiert hatte), wurden dem Benutzer neue Punkte gutgeschrieben und jeder Teilnehmer der Veranstaltung erhielt eine Push-Benachrichtigung. Mit mehr Punkten war die Chance, am Ende des Tages einen gro?en Preis zu gewinnen, gr??er.

Hinzufügen von Echtzeit

Wir haben mit einem Next.js-Projekt erstellt und dabei unser @superviz/realtime-Paket verwendet, das eine WebSocket-Infrastruktur bietet, die auf einem Publisher/Subscriber-Entwurfsmuster (PubSub) basiert. Dies erm?glichte eine effiziente ereignisgesteuerte Kommunikation zwischen verschiedenen Instanzen der Anwendung.

Hierfür hatten wir zwei verschiedene Kan?le erstellt, den Standard und das Spiel. Der Standardkanal war die Kommunikation des gesamten Erlebnisses, er würde erkennen, ob eine Aktivierung dem Benutzer Punkte verliehen hat, und würde mit anderen Teilen des Systems synchronisiert werden (haupts?chlich durch Synchronisierung von Benutzerdada). Wir hatten einen eigenen Kanal für das Spiel, der jeden benachrichtigte, der das new.element-Event h?rte.

Wenn jemand zwei Elemente kombiniert, sendet er eine Anfrage an unsere API. Die API würde analysieren, ob der Benutzer gültig war und ob die Elementkombination bereits in unserer Datenbank vorhanden war. Wenn keine dieser Bedingungen erfüllt w?re, würde es eine Aufforderung an OpenAI senden, das Element zu erstellen. Bevor wir das Ergebnis zurücksenden, würden wir die Datenbank aktualisieren und mehrere Ereignisse ver?ffentlichen.

await Promise.all([
  defaultChannel.publish("activation.game.update", {
    userId: user.id,
    points: quantity,
  }),

  gameChannel.publish("new.element", {
    element,
    user,
    points: quantity,
  }),
]);

Im Frontend des Spiels h?rten wir uns das new.event an und fügten mithilfe von Toast eine Push-Benachrichtigung hinzu. Etwa so:

await Promise.all([
  defaultChannel.publish("activation.game.update", {
    userId: user.id,
    points: quantity,
  }),

  gameChannel.publish("new.element", {
    element,
    user,
    points: quantity,
  }),
]);

Aber die Anwendungsmagie geschah auf dem Dashboard und beim Ausl?sen des anderen Ereignisses.

Ein verspieltes Dashboard

Auf unserem Stand hatten wir einen riesigen Fernseher, auf dem das Armaturenbrett angezeigt wurde. Es wurde so gestaltet, dass es sowohl informativ als auch faszinierend ist und Echtzeitaktualisierungen der Spieleraktivit?ten und Entdeckungen anzeigt. Es war eine visuelle Darstellung jeder einzelnen Teilnehmeraktivit?t. Die Teilnehmer wurden nicht nur über ihre Ergebnisse informiert, sondern sorgten auch w?hrend der gesamten Veranstaltung für freundschaftlichen Wettbewerb und Spannung.

Realtime meets AI: How we used gaming to showcase our new library, now open souce!

Das Dashboard wurde vom beliebten Multiplayer-Spiel Agar.io inspiriert. ?hnlich wie Spieler in Agar.io durch den Verbrauch kleinerer Zellen wachsen, stellte unser Dashboard jeden Teilnehmer als dynamische Einheit dar, die sich mit zunehmenden Punkten vergr??erte.

Realtime meets AI: How we used gaming to showcase our new library, now open souce!

Das Designkonzept drehte sich um die Schaffung einer visuell ansprechenden und intuitiven Darstellung von Echtzeitdaten. Jeder Teilnehmer wurde als kreisf?rmige Einheit dargestellt, wobei sich konzentrische Ringe nach au?en erweiterten, um seine Punktzahl und den Grad seines Engagements anzuzeigen. Diese organische, zellenartige Visualisierung machte die Daten nicht nur auf einen Blick leicht zu interpretieren, sondern fügte dem Veranstaltungserlebnis auch ein Element der Gamifizierung hinzu. Wir würden auch den Benutzern, die offline waren, Transparenz bieten, um unsere kürzlich ver?ffentlichte Pr?senzfunktion zu pr?sentieren.

Hinter den Kulissen

Um dies zu erm?glichen, hat sich diese Seite jedes einzelne Ereignis angeh?rt, und das war genug! Dies ist die Liste der H?rereignisse, für die die Seite abonniert wurde:

const handleGameUpdate = (message) => {
  const userFromMessage = message.data.user;
  const element = message.data.element;

  if (userFromMessage.email ===
    JSON.parse(localStorage.getItem(USERDATA_KEY) as string))
    return;

  toast(`${userFromMessage?.name} just discovered ${element.name.toUpperCase()} and has more chance of winnin!`);
};

useEffect(() => {
  gameChannel.subscribe("new.element", handleGameUpdate);
}, []);

Lassen Sie uns die Ereignisse aufschlüsseln, die unser Dashboard überwacht, und untersuchen, wie jedes dazu beitr?gt, ein dynamisches Echtzeiterlebnis zu schaffen:

Aktivierungsereignisse: Das Dashboard wartet auf die Ereignisse ?activation.start“ und ?activation.complete“, die einen Fortschrittsring hinzufügen, wenn eine Aktivierung beginnt, und einen vollst?ndigen Ring hinzufügen, wenn sie abgeschlossen ist. Die Ringe wurden in der Reihenfolge hinzugefügt, in der die Person an den Aktivierungen teilnehmen würde, und lieferten eine visuelle Echtzeitgeschichte ihrer Reise durch das Ereignis.

Die Veranstaltung ?activation.game.update“ war dafür verantwortlich, den Spielfortschritt in Echtzeit zu pr?sentieren. Es aktualisiert den Punktestand des Spielers, der durch die Erweiterung des Rings um seine Entit?t auf dem Dashboard visuell dargestellt wird.

Realtime meets AI: How we used gaming to showcase our new library, now open souce!

Spielaktualisierungen: Es abonniert new.element-Ereignisse vom Spielkanal, die eine Toastbenachrichtigung mit dem erstellten neuen Element anzeigen würden. Diese Funktion versammelte Menschen um den Bildschirm, um in Echtzeit zu sehen, was andere erstellten, und erzeugte so ein Gemeinschaftsgefühl und gemeinsame Begeisterung.

Wir hatten die Entstehung wundersch?ner Elemente wie ?Echtzeitkommunikation“, ?Web-Sockets“, ?Kollaborationsumgebung“, ?Remote-Arbeit“ und lustiger Elemente wie ?Intergalaktischer Kaffee“ gesehen!

Pr?senzereignisse: Der Code abonniert verschiedene pr?senzbezogene Ereignisse, die eine entscheidende Rolle bei der Aufrechterhaltung einer aktuellen Darstellung der Teilnehmeraktivit?ten spielen. Zu diesen Ereignissen geh?ren:

  • Presence.leave: Wird ausgel?st, wenn ein Teilnehmer offline geht, wodurch seine Darstellung auf dem Dashboard halbtransparent wird.
  • pr?senz.joined-room: pr?senz.joined-room: Wird ausgel?st, wenn ein Teilnehmer online geht. Für neue Teilnehmer würde eine neue Zelle auf dem Bildschirm erscheinen. Für zurückkehrende Teilnehmer würde es die Helligkeit ihrer vorhandenen Zelle wiederherstellen. Durch diesen Effekt k?nnen Teilnehmer und Organisatoren leicht erkennen, wer gerade an der Veranstaltung aktiv ist.

Diese Aktualisierung in Echtzeit schafft ein dynamisches, ansprechendes Erlebnis für alle Teilnehmer und demonstriert die Leistungsf?higkeit und Vielseitigkeit der Echtzeitbibliothek bei der Verarbeitung mehrerer gleichzeitiger Ereignisse und Aktualisierungen.

Hackathon KI trifft auf Echtzeit

Realtime meets AI: How we used gaming to showcase our new library, now open souce!

Wir haben kürzlich einen Super Hackathon 2.0 mit der Herausforderung ?KI trifft auf Echtzeit“ veranstaltet und dabei die Grenzen der Innovation durch die Kombination künstlicher Intelligenz mit Echtzeit-Kommunikationstechnologien verschoben.

Den Teilnehmern wurde die Freiheit gegeben, alles zu kreieren, was sie sich vorstellen konnten, ?hnlich wie bei unserem Super! (Aber wir konnten mit diesem Projekt nicht an unserem eigenen Hackathon teilnehmen?)

Beim Hackathon gab es beeindruckende Projekte, die unsere Echtzeitbibliothek neben verschiedenen KI-Technologien nutzten. Die Kreativit?t und Innovationskraft der Teilnehmer war wirklich bemerkenswert. Wenn Sie neugierig auf die Gewinnerprojekte sind und erfahren m?chten, wie sie KI mit Echtzeitfunktionen kombiniert haben, laden wir Sie ein, unseren ausführlichen Blogbeitrag über die Hackathon-Gewinner zu lesen. Es ist eine gro?artige Inspirationsquelle und zeigt das Potenzial unserer Echtzeitbibliothek in Kombination mit KI.

Auf vielfachen Wunsch ist es Open Source

Die überw?ltigende Begeisterung für unser Spiel endete nicht mit den Ereignissen. Die Teilnehmer waren begierig darauf, weiterzuspielen und ohne Einschr?nkungen zu erkunden, die Leute waren regelrecht süchtig nach dem Gameplay. Wir haben Ihre Wünsche laut und deutlich geh?rt!

Nachdem unsere neue Realtime-Bibliothek offiziell ver?ffentlicht wurde, freuen wir uns, Ihnen mitteilen zu k?nnen, dass wir den Code für dieses Projekt als Open Source ver?ffentlichen! Dadurch k?nnen Sie nicht nur weiterspielen, sondern auch besser verstehen, wie alles hinter den Kulissen funktioniert.

Das Repository finden Sie auf unserer GitHub-Seite. Wir ermutigen Sie, es zu klonen, damit zu experimentieren und vielleicht sogar Ihre eigenen Verbesserungen oder Variationen beizusteuern.

Viel Spa? beim Codieren und Basteln!

Das obige ist der detaillierte Inhalt vonEchtzeit trifft auf KI: Wie wir Gaming genutzt haben, um unsere neue Bibliothek vorzustellen, jetzt Open Source!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1502
276
Wie stelle ich eine HTTP -Anforderung in node.js? Wie stelle ich eine HTTP -Anforderung in node.js? Jul 13, 2025 am 02:18 AM

Es gibt drei g?ngige M?glichkeiten, HTTP-Anforderungen in Node.js zu initiieren: Verwenden Sie integrierte Module, Axios und Knotenfetch. 1. Verwenden Sie das integrierte HTTP/HTTPS-Modul ohne Abh?ngigkeiten, das für grundlegende Szenarien geeignet ist, jedoch eine manuelle Verarbeitung von Datengen?hten und Fehlerüberwachung erfordert, z. 2.Axios ist eine auf Versprechen basierende Bibliothek von Drittanbietern. Es verfügt über eine kurze Syntax und leistungsstarke Funktionen, unterstützt Async/Auseait, automatische JSON -Konvertierung, Interceptor usw. Es wird empfohlen, asynchrone Anforderungsvorg?nge zu vereinfachen. 3.Node-Fetch bietet einen Stil ?hnlich dem Browser-Abruf, basierend auf Versprechen und einfacher Syntax

JavaScript -Datentypen: Primitive VS -Referenz JavaScript -Datentypen: Primitive VS -Referenz Jul 13, 2025 am 02:43 AM

JavaScript -Datentypen sind in primitive Typen und Referenztypen unterteilt. Zu den primitiven Typen geh?ren String, Anzahl, Boolesche, Null, undefiniertes und Symbol. Die Werte sind unver?nderlich und Kopien werden bei der Zuweisung von Werten kopiert, sodass sie sich nicht gegenseitig beeinflussen. Referenztypen wie Objekte, Arrays und Funktionen speichern Speicheradressen, und Variablen, die auf dasselbe Objekt zeigen, wirkt sich gegenseitig aus. Typeof und Instanz k?nnen verwendet werden, um die Typen zu bestimmen, aber auf die historischen Probleme der TypeOfnull zu achten. Das Verst?ndnis dieser beiden Arten von Unterschieden kann dazu beitragen, einen stabileren und zuverl?ssigeren Code zu schreiben.

JavaScript Time Object, jemand erstellt eine EACTEXE, schnellere Website auf Google Chrome usw. JavaScript Time Object, jemand erstellt eine EACTEXE, schnellere Website auf Google Chrome usw. Jul 08, 2025 pm 02:27 PM

Hallo, JavaScript -Entwickler! Willkommen in den JavaScript -Nachrichten dieser Woche! Diese Woche konzentrieren wir uns auf: Oracas Markenstreit mit Deno, neue JavaScript -Zeitobjekte werden von Browsern, Google Chrome -Updates und einigen leistungsstarken Entwickler -Tools unterstützt. Fangen wir an! Der Markenstreit von Oracle mit dem Versuch von Deno Oracle, ein "JavaScript" -Marke zu registrieren, hat Kontroversen verursacht. Ryan Dahl, der Sch?pfer von Node.js und Deno, hat eine Petition zur Absage der Marke eingereicht, und er glaubt, dass JavaScript ein offener Standard ist und nicht von Oracle verwendet werden sollte

Handlingversprechen: Verkettung, Fehlerbehandlung und Versprechenkombinatoren in JavaScript Handlingversprechen: Verkettung, Fehlerbehandlung und Versprechenkombinatoren in JavaScript Jul 08, 2025 am 02:40 AM

Versprechen ist der Kernmechanismus für den Umgang mit asynchronen Operationen in JavaScript. Das Verst?ndnis von Kettenanrufen, Fehlerbehebung und Kombination ist der Schlüssel zum Beherrschen ihrer Anwendungen. 1. Der Kettenaufruf gibt ein neues Versprechen durch .then () zurück, um asynchrone Prozessverkampferung zu realisieren. Jeder. Dann () erh?lt das vorherige Ergebnis und kann einen Wert oder ein Versprechen zurückgeben; 2. Die Fehlerbehandlung sollte .Catch () verwenden, um Ausnahmen zu fangen, um stille Ausf?lle zu vermeiden, und den Standardwert im Fang zurückgeben, um den Prozess fortzusetzen. 3. Combinatoren wie Promise.All () (erfolgreich erfolgreich erfolgreich nach allen Erfolg), Versprechen.Race () (Die erste Fertigstellung wird zurückgegeben) und Versprechen.Allsettled () (Warten auf alle Fertigstellungen)

Was ist die Cache -API und wie wird sie bei Dienstangestellten verwendet? Was ist die Cache -API und wie wird sie bei Dienstangestellten verwendet? Jul 08, 2025 am 02:43 AM

Cacheapi ist ein Tool, das der Browser zur Cache -Netzwerkanfragen bereitstellt, das h?ufig in Verbindung mit dem Servicearbeiter verwendet wird, um die Leistung der Website und die Offline -Erfahrung zu verbessern. 1. Es erm?glicht Entwicklern, Ressourcen wie Skripte, Stilbl?tter, Bilder usw. Zu speichern; 2. Es kann die Cache -Antworten entsprechend den Anfragen übereinstimmen. 3. Es unterstützt das L?schen bestimmter Caches oder das L?schen des gesamten Cache. 4.. Es kann Cache -Priorit?ts- oder Netzwerkpriorit?tsstrategien durch Servicearbeiter implementieren, die sich auf Fetch -Ereignisse anh?ren. 5. Es wird h?ufig für die Offline -Unterstützung verwendet, die wiederholte Zugriffsgeschwindigkeit, die Vorspannungs -Schlüsselressourcen und den Inhalt des Hintergrundaktualisierungss beschleunigen. 6. Wenn Sie es verwenden, müssen Sie auf die Cache -Versionskontrolle, Speicherbeschr?nkungen und den Unterschied zum HTTP -Caching -Mechanismus achten.

JS Roundup: Ein tiefes Eintauchen in die JavaScript -Ereignisschleife JS Roundup: Ein tiefes Eintauchen in die JavaScript -Ereignisschleife Jul 08, 2025 am 02:24 AM

Die Ereignisschleife von JavaScript verwaltet asynchrone Vorg?nge, indem sie Call -Stapel, Webapis und Task -Warteschlangen koordinieren. 1. Der Anrufstack führt synchronen Code aus, und wenn er auf asynchrone Aufgaben begegnet, wird er zur Verarbeitung an Webapi übergeben. 2. Nachdem das Webapi die Aufgabe im Hintergrund abgeschlossen hat, wird der Rückruf in die entsprechende Warteschlange (Makroaufgabe oder Micro -Aufgabe) eingebaut. 3. Die Ereignisschleife prüft, ob der Anrufstapel leer ist. Wenn es leer ist, wird der Rückruf aus der Warteschlange herausgenommen und zur Ausführung in den Anrufstapel geschoben. V. 5. Das Verst?ndnis der Ereignisschleife hilft zu vermeiden, den Haupt -Thread zu blockieren und die Codeausführungsreihenfolge zu optimieren.

Ereignis verstehen und in JavaScript DOM -Ereignissen sprudeln und erfassen Ereignis verstehen und in JavaScript DOM -Ereignissen sprudeln und erfassen Jul 08, 2025 am 02:36 AM

Ereignisblasen verbreiten sich vom Zielelement nach au?en zum Vorfahrknoten aus, w?hrend Ereignisfassungen sich von der ?u?eren Schicht nach innen zum Zielelement ausbreiten. 1. Ereignisblasen: Nach dem Klicken auf das untergeordnete Element l?st das Ereignis den H?rer des übergeordneten Elements nach oben aus. Nach dem Klicken auf die Schaltfl?che gibt es beispielsweise zuerst die untergeordnete und dann entzündete Eltern aus. 2. Ereigniserfassung: Stellen Sie den dritten Parameter auf True ein, so dass der H?rer in der Erfassungsstufe ausgeführt wird, z. B. das Ausl?sen des Capture -Listeners des übergeordneten Elements, bevor Sie auf die Schaltfl?che klicken. 3. Praktische Verwendungszwecke umfassen ein einheitliches Management von Ereignissen für Kinderelemente, Vorverarbeitung und Leistungsoptimierung von Abfangen. V.

Eine JS-Zusammenfassung von Funktionen h?herer Ordnung jenseits der Karte und des Filters Eine JS-Zusammenfassung von Funktionen h?herer Ordnung jenseits der Karte und des Filters Jul 10, 2025 am 11:41 AM

In JavaScript -Arrays gibt es zus?tzlich zu MAP und Filter andere leistungsstarke und selten verwendete Methoden. 1. Reduzierung kann nicht nur summieren, sondern auch z?hlen, gruppen, flach Arrays ab und bauen neue Strukturen auf. 2. FindingIndex werden verwendet, um einzelne Elemente oder Indizes zu finden. 3. Einige und alles werden verwendet, um festzustellen, ob Bedingungen bestehen oder sich alle treffen. 4. SORT kann sortiert werden, wechselt aber das ursprüngliche Array. 5. Achten Sie darauf, das Array zu kopieren, wenn Sie es verwenden, um Nebenwirkungen zu vermeiden. Diese Methoden machen den Code pr?gnanter und effizienter.

See all articles