Du bist nicht eingeloggt! Möglicherweise kannst du deswegen nicht alles sehen.
  (Noch kein mods.de-Account? / Passwort vergessen?)
Zur Übersichtsseite
Hallo anonymer User.
Bitte logge dich ein
oder registriere dich!
 Moderiert von: Irdorath, statixx, Teh Wizard of Aiz


 Thema: Das pOT erstellt Spiele 4 ( code code durrrr )
« erste « vorherige 1 ... 7 8 9 10 [11] 12 13 14 15 ... 33 nächste » letzte »
erste ungelesene Seite | letzter Beitrag 
FooFur

Arctic
 
Zitat von freakadelle

Inwiefern? Generell läuft erstmal alles durchn ControlsManager, der dann die Inputs als Events weiterschickt. Ich halte mir gerne offen mehr als nur ne Spielfigur kontrollieren zu können, deshalb verbindet meine Game logic dann immer das zu kontrollierende Objekt mit den richtigen events. (Niemals wird der raw input direkt auf dem Spieler abgegriffen)
Dahinter steht dann nochmal ein layer auf dem Objekt selbst, wo generell ne Statemachine läuft die für jeden State nochmal das input event mit ner tatsächlichen action verbindet. In den Defaultstates ist dann meinetwegen (A) auf "Jump" gemapped, im Near Death state allerdings auf "Call Medic" und alles andere ist garnicht gemapped.
Damit konnte ich bisher eigentlich alles abfangen und man ist sehr flexibel.



Habs fast gleich, aber z.b. gamepad. Die Axen will ich ja einstellbar haben also muss der controlsmanager ne axe + min/max auf ein event mappen. in der config will ich aber nur eine "taste" dafür haben. also gibts jetzt virtuelle axen die z.b. GAMEPAD_VAXIS_LA_LEFT/RIGHT etc. heißen. Klappt auch und so. Wir haben jetzt n dual stick platformer. Aber wenn man z.b. an der wand slidet und nen walljump ausführen will darf man nicht ausversehen nach unten drücken weil das das sliden abbricht. Wenn der controller aber z.b. für die y achse die werte (-0.1f, -1.f, also nach unten) als "stop slide" mappt ist das doof zu kontrollieren da man höllisch aufpassen muss den slide nicht ab zu brechen um zum walljump anzusetzen. hab jetzt einfach (-0.9f, -1.f) auf "stop slide" gemappt. das ist aber nix was ich einfach in die konfig schreiben kann/will da steht ja nur die virtuelle axe. So ist das aber für alle mappings dieser die axe so und das ist kacke. man könnte natürlich noch interne min/max ranges für aktionen machen... vielleicht bin ich auch nur zu schlecht mit dem controller und das stört sonst niemanden Breites Grinsen

wie auch immer, alles kacke Breites Grinsen
26.05.2017 16:22:52  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
freakadelle

AUP freakadelle 05.02.2011
1. Bitte "Axis" oder "Achse" Breites Grinsen Meine innere Stimme dreht durch

2. Das soll jetzt keine Lösung darstellen, weil ich mir nicht sicher bin ob ichs komplett durchschaut habe, aber wenn es an solchen Details scheitert könntest du auch versuchen am Design anzusetzen. Also überlegen ob dein analogstick wirklich zwei vollkommen unterschiedliche digitale aktionen triggern sollte.
Und dann zwei Lösungsansätze durch Fokusgruppentests vergleichen.
Aber wie gesagt, ohne das selbst auszuprobieren ists schwierig da genaueren input zu geben

Spoiler - markieren, um zu lesen:
Giev Dev Build pls
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von freakadelle am 26.05.2017 17:20]
26.05.2017 17:19:45  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
FooFur

Arctic
 
Zitat von freakadelle

1. Bitte "Axis" oder "Achse" Breites Grinsen Meine innere Stimme dreht durch

2. Das soll jetzt keine Lösung darstellen, weil ich mir nicht sicher bin ob ichs komplett durchschaut habe, aber wenn es an solchen Details scheitert könntest du auch versuchen am Design anzusetzen. Also überlegen ob dein analogstick wirklich zwei vollkommen unterschiedliche digitale aktionen triggern sollte.
Und dann zwei Lösungsansätze durch Fokusgruppentests vergleichen.
Aber wie gesagt, ohne das selbst auszuprobieren ists schwierig da genaueren input zu geben

Spoiler - markieren, um zu lesen:
Giev Dev Build pls





Das liest sich in der tat grausamm Breites Grinsen Ich meinte das eher als konfigurationsproblem denn als ein eigentliches anwender problem. Das Funktioniert super, nur die art wie das in der config abgelegt wird beinhaltet halt nicht alle relevanten informationen für die achsen.

einfaches beispiel: das menu ist mit dem dem linken analog stick steuerbar (steht so in der config). genau wie die spielerbewegung im spiel (auch in der config). für beides wird das gleiche achsenmapping verwendet. die achsen gehen von -1 bis 1, links ist jetzt von (-1, -0.1,) rechts von (0.1, 1) auf der x achse. "nach unten" ist momentan aber das angesprochene (-0.9, -1) auf y, um dem spieler ein bischen unterstützung zu geben. Das ist aber momentan nirgendwo einstellbar. im spiel ist das super, im menu komisch. vielleicht map ich die aktiven ranges für die achsen echt einfach auf die aktionen und das hat sich Breites Grinsen

Spoiler - markieren, um zu lesen:
in zwei wochen gitbs vielleicht was, *hußt*
26.05.2017 21:04:06  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
freakadelle

AUP freakadelle 05.02.2011
Jo, in dem Fall überschreibste das halt entweder aus dem State des Anwenders (Avatar bzw Avatar im Wallride State) oder du hinterlegts im controlsmanager ein paar presets, die du aktivieren kannst. Ich würde die Funktion im Manager lassen, weil du dir dann je nach preset und user-mods und deadzone einstellungen etc die eigentlich zu nutzende Range zusammenbauen kannst
26.05.2017 21:12:29  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Ameisenfutter

AUP Ameisenfutter 23.12.2022
I bims mal wieder.

Ich habe alle Spielerdaten in einem Skript gespeichert. Das will ich jetzt in Form von .xml speichern (damit man das einfach einlesen und auch händisch bearbeiten kann).

code siehe unten

Das hab' ich schon. Was machen? Breites Grinsen

/ Was ich bisher an documentation gefunden habe ist relativ complicated. Ich will ja quasi nur ein skript serializen (?)
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von Ameisenfutter am 02.06.2017 12:55]
02.06.2017 12:28:31  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Murica

Arctic
http://wiki.unity3d.com/index.php?title=Saving_and_Loading_Data:_XmlSerializer

? peinlich/erstaunt

e/ Seit gestern kein Freelancer mehr. ¯\_( ツ )_/¯
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von Murica am 02.06.2017 12:40]
02.06.2017 12:39:12  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Ameisenfutter

AUP Ameisenfutter 23.12.2022
 
Code:
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
using UnityEngine;

public class cgmSaveData : MonoBehaviour {
    public GenerationMainScript gms;

	// Use this for initialization
	public void GenerateCharacter ()
    {
        
        // path check and create directory if not already there
        if (!Directory.Exists("Saves"))
            Directory.CreateDirectory("Saves");

        // create xml serializer
        var serializer = new XmlSerializer(typeof(GenerationMainScript));

        // create file stream (charName_datetime.xml)
        FileStream saveFile = File.Create("Saves/" + gms.charName + "_" + System.DateTime.Now.ToString() + ".xml");
        print(saveFile);

        // serialize data and close stream
        serializer.Serialize(saveFile, gms);
        saveFile.Close();

        print("success!");

    }

}



Das funzt nicht. traurig

// var serializer = new XmlSerializer(typeof(GenerationMainScript));

in der Zeile ist ein Problem
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von Ameisenfutter am 02.06.2017 13:15]
02.06.2017 12:55:25  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Slutti

AUP Slutti 26.02.2010
 
Zitat von Murica

http://wiki.unity3d.com/index.php?title=Saving_and_Loading_Data:_XmlSerializer

? peinlich/erstaunt

e/ Seit gestern kein Freelancer mehr. ¯\_( ツ )_/¯


Wat machste jetzt?
02.06.2017 13:07:56  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
He-Bro

AUP He-Bro 02.08.2016
verschmitzt lachen
Pfandflaschen sammeln.
02.06.2017 13:23:23  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Murica

Arctic
 
Zitat von Ameisenfutter

 
Code:
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
using UnityEngine;

public class cgmSaveData : MonoBehaviour {
    public GenerationMainScript gms;

	// Use this for initialization
	public void GenerateCharacter ()
    {
        
        // path check and create directory if not already there
        if (!Directory.Exists("Saves"))
            Directory.CreateDirectory("Saves");

        // create xml serializer
        var serializer = new XmlSerializer(typeof(GenerationMainScript));

        // create file stream (charName_datetime.xml)
        FileStream saveFile = File.Create("Saves/" + gms.charName + "_" + System.DateTime.Now.ToString() + ".xml");
        print(saveFile);

        // serialize data and close stream
        serializer.Serialize(saveFile, gms);
        saveFile.Close();

        print("success!");

    }

}



Das funzt nicht. traurig

// var serializer = new XmlSerializer(typeof(GenerationMainScript));

in der Zeile ist ein Problem



Inwiefern klappt das nicht?

Hast du auch an die XML Properties gedacht?
[XmlRoot("MonsterCollection")]

 
Zitat von Slutti

 
Zitat von Murica

http://wiki.unity3d.com/index.php?title=Saving_and_Loading_Data:_XmlSerializer

? peinlich/erstaunt

e/ Seit gestern kein Freelancer mehr. ¯\_( ツ )_/¯


Wat machste jetzt?



Diesen Monat Urlaub / Flaschen sammeln, ab nächsten Monat dann Sklave der deutschen Spieleindustrie.
Midsize Studio, arbeiten mit Ubi zusammen. Mehr sag ich wegen Haiders nicht. traurig
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Murica am 02.06.2017 13:39]
02.06.2017 13:37:16  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Ameisenfutter

AUP Ameisenfutter 23.12.2022
 
Zitat von Murica

Hast du auch an die XML Properties gedacht?
[XmlRoot("MonsterCollection")]



Ich versteh' nicht ganz wo das hin muss.

Das hier sind die Spielerdaten:

 
Code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.Xml.Serialization;

[XmlRoot ("CharacterData")]
public class GenerationMainScript : MonoBehaviour {

...

}


Das bringt nix, und wenn ich es in das save-script schreibe auch nicht. peinlich/erstaunt

/ unity sagt:
 
InvalidOperationException: To be XML serializable, types which inherit from IEnumerable must have an implementation of Add(System.Object) at all levels of their inheritance hierarchy. UnityEngine.Transform does not implement Add(System.Object).



// GenerationMainScript hängt halt an einem GO mit Transform, ist das das Problem?
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von Ameisenfutter am 02.06.2017 13:59]
02.06.2017 13:56:05  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Black1900

AUP Black1900 06.04.2014
 
Zitat von Murica

 
Zitat von Slutti

 
Zitat von Murica

http://wiki.unity3d.com/index.php?title=Saving_and_Loading_Data:_XmlSerializer

? peinlich/erstaunt

e/ Seit gestern kein Freelancer mehr. ¯\_( ツ )_/¯


Wat machste jetzt?



Diesen Monat Urlaub / Flaschen sammeln, ab nächsten Monat dann Sklave der deutschen Spieleindustrie.
Midsize Studio, arbeiten mit Ubi zusammen. Mehr sag ich wegen Haiders nicht. traurig



Oh munteres Ratespiel. Ich fange an:
Kalypso?
02.06.2017 14:01:38  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Roter Fuchs

AUP Roter Fuchs 04.08.2009
Blue Byte?
02.06.2017 15:34:57  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Cru$her

AUP Cru$her 23.11.2009
Ich missbrauche den Thread auch mal, weil hier meist sehr kreative Köpfe sich rumtummeln peinlich/erstaunt.

Folgendes Szenario im zweidimensionalen Raum:

Spieler A und Spieler B haben ein Spielbild, auf dem sie beide frei Sachen einzeichnen können.

Spieler A: Gerät mit 16:10 Display.
Spieler B: Gerät mit 16:9 Display.

Auf beiden Geräten wird ein 16:9 Bild angezeigt, was dazu führt, dass Spieler B alles sieht und Spieler A an den Seiten etwas abgeschnitten hat (keine schwarzen Balken, sondern Display immer ausgefüllt)

Auf beiden Geräten kann ich erfassen, auf welchem Pixel des Displays etwas gemacht wurde (nicht auf welches Objekt im Bild o.ä.) und die Info übertragen.

Wie kann ich jetzt sicherstellen, dass wenn Spieler B z.B. eine Krone über einem Kopf zeichnet, diese auch bei Spieler A über dem Kopf erscheint? Natürlicherweise würden sich diese Informationen ja verschieben, je näher man am Rand ist. In der Mitte sind beide gleich, aber nach außen hin wird die Verschiebung immer und immer größer.

Professionell die Problematik dargestellt:


Ich bin mir ziemlich sicher, dass so ein Problem schon zig Mal gelöst wurde...habt ihr irgendwelche Ideen oder Fachbegriffe dafür, mit denen mir weitergeholfen wird? Seitenverhältnisse können quasi jede beliebige Kombination sein, muss jetzt nicht 16:9 vs. 16:10 sein mit entsprechender Quelle . Könnte also auch ein 16:10 Basisbild sein, wobei Spieler A 16:9 hat und Spieler B: 4:3 oder sonstwas.
[Dieser Beitrag wurde 4 mal editiert; zum letzten Mal von Cru$her am 03.06.2017 2:12]
03.06.2017 2:05:46  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
freakadelle

AUP freakadelle 05.02.2011
In welcher Engine machst du das?

Wie sieht denn das Design aus? Sind das overpaints, oder ist das ne normale 3D scene mit beweglicher Kamera? Stell ich mir generell erstmal schwierig vor, weil der mit dem breiteren Format Elemente "bearbeiten" kann die andere evtl garnicht sehn/rendern.

Generell würde ich als Ansatz ausprobieren nicht die einzelnen Formate miteinander zu vergleichen, sondern einen gemeinsamen Referenzpunkt zu suchen. Und das ist eigentich die Kamera die in allen Instanzen gleich sein sollte. Du transformierst also nicht einen screen space point direkt von Format zu Format sondern gehst immer über den gemeinssamen referenzpunkt.

Denn wenn einer in nem breiten format über diverse Pixel malt sind deren screen coords durch die Kamera und ihr Frustrum definiert. Und die kannste umrechnen wie du willst, wenn du nicht davon ausgehst, dass dein Referenzpunkt in einer Ecke des screens ist, sondern bei der Kamera, über deren FOV/Frustrum du transformieren kannst

Ist aber schwierig direkt anzusetzen mit so wenig info finde ich. Malt man zB immer auf eine texture in größe des screens, oder sind as einzelne elemente? Oder müssen sich die elemente verschieben können etc?
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von freakadelle am 03.06.2017 2:29]
03.06.2017 2:25:31  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Cru$her

AUP Cru$her 23.11.2009
 
Zitat von freakadelle

In welcher Engine machst du das?

Wie sieht denn das Design aus? Sind das overpaints, oder ist das ne normale 3D scene mit beweglicher Kamera? Stell ich mir generell erstmal schwierig vor, weil der mit dem breiteren Format Elemente "bearbeiten" kann die andere evtl garnicht sehn/rendern.

Generell würde ich als Ansatz ausprobieren nicht die einzelnen Formate miteinander zu vergleichen, sondern einen gemeinsamen Referenzpunkt zu suchen. Und das ist eigentich die Kamera die in allen Instanzen gleich sein sollte. Du transformierst also nicht einen screen space point direkt von Format zu Format sondern gehst immer über den gemeinssamen referenzpunkt.

Denn wenn einer in nem breiten format über diverse Pixel malt sind deren screen coords durch die Kamera und ihr Frustrum definiert. Und die kannste umrechnen wie du willst, wenn du nicht davon ausgehst, dass dein Referenzpunkt in einer Ecke des screens ist, sondern bei der Kamera, über deren FOV/Frustrum du transformieren kannst

Ist aber schwierig direkt anzusetzen mit so wenig info finde ich. Malt man zB immer auf eine texture in größe des screens, oder sind as einzelne elemente? Oder müssen sich die elemente verschieben können etc?



Alles 2D, also kein "Kamera ist bei jedem anders"-Gedöns oder ähnliches.
Technologie: Android und Javascript, wobei der Android-Teil eher nur anzeigen und nicht zeichnen muss, falls das Relevanz hat. Arbeite direkt mit Canvas in einem Fenster/Layout, das ein Bild oder Stream als Hintergrund hat.

Design: Einfach overpaints auf beliebigen Fenstern/Bildern. Man malt auf dem ganzen Screen. Quasi Montagsmaler mit einem gemeinsamen Hintergrundbild. Du könntest aber auch deinen Desktop-Stream als Basis nehmen und da meinetwegen Ordner einkreisen. Relativ offen, was die Quelle ist. Wenn auf Sachen gezeichnet wird, die der "abgespeckte" nicht sieht, ist das okay. Wichtig ist nur, dass wenn ich etwas über ein Element male, es auch an exakt der gleichen Stelle liegt.

Referenzpunkt finde ich schwierig - die Bildschirmmitte ist auf beiden identisch, aber der Versatz wird zu den Rändern hin dann immer stärker und stärker, weswegen man da nicht linear drauf aufbauen kann. Und da der Hintergrund nur ein Bild, ein Stream o.ä. ist, kenne ich davon auch nichts, so dass ich sagen könnte "ah, an dem Punkt ist Charakter 1, such den einfach auf der anderen Seite und nimm den als Referenz".

Meine Hoffnung ist da halt, dass ich mit irgendwelchen Zauberformeln quasi die Seitenverhältnisse beider Geräte miteinander vergleichen kann und irgendwie rauskriege, wie ich die Pixelangaben manipulieren muss, damit sie im jeweils anderen Bild den gleichen Teil vom Original beschreiben. Ob nu ne Transformationsmatrix oder was auch immer :/.
[Dieser Beitrag wurde 3 mal editiert; zum letzten Mal von Cru$her am 03.06.2017 9:09]
03.06.2017 9:04:54  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Flitzpiepe42

AUP Flitzpiepe42 07.10.2019
Kannst du nicht den Stream zur Orientierung nutzen? Der Hintergrund ist ja bei beiden der selbe - wenn du den matchst, hast du doch auch den korrekten relativen Bezug...?!?
03.06.2017 9:22:20  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Murica

Arctic
Naja, du machst ja nicht
Gerät 1: Ich hab auf Display Position X Y gemalt
Gerät 2: *Umrechne Display Position mit Seitenverhältnis und Auflösung auf Canvas Position

Sondern eher
Gerät 1 malt auf Display Position X Y, übersetzt das in eine Position auf dem Canvas / Bild
Gerät 1: Habe auf Canvas / Bild Position X Y gemalt
Gerät 2: Okay, male auf Canvas X Y.

Da ist es dann auch egal was für ein Seitenverhältnis oder was für eine Auflösung die jeweiligen Geräte haben.
Klar, wenn du das Bild abschneidest, wird halt auf eine Stelle gemalt die nicht gezeigt wird, aber das ist ja wurst.


Oder versteh ich da gerade etwas an deinem Projekt falsch. Breites Grinsen

e/ Bzw wenn das Bild sich ändert ("Spiegel"?), bspw Kamerabild, malt man eben auf ein neues Canvas, nicht direkt auf das Bild, und legt das drüber.
Wichtig dabei ist halt, dass das Canvas und das eigentliche Hintergrundbild auf beiden Geräten die selbe Größe haben, und anstatt Displaypos 0,0 die Mitte als Referenzpunkt zum Anzeigen genommen wird.
[Dieser Beitrag wurde 4 mal editiert; zum letzten Mal von Murica am 03.06.2017 9:51]
03.06.2017 9:41:36  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Cru$her

AUP Cru$her 23.11.2009
 
Zitat von Flitzpiepe42

Kannst du nicht den Stream zur Orientierung nutzen? Der Hintergrund ist ja bei beiden der selbe - wenn du den matchst, hast du doch auch den korrekten relativen Bezug...?!?



Das Problem für mich ist gerade, wie ich dieses "matching" denn machen soll :/. Ich mein der Stream in dem Fall ist bei einem Gerät halt nicht vollständig auf dem Bild und ich hab auch keine Methoden, bei denen ich einfach sagen kann "sag mir mal welche Position Canvas Pixel 150/150 auf dem Stream ist". Da müsste ich doch in irgendner Form die Skalierung, die genutzt wurde, haben um das wieder auf den Stream zurückrechnen zu können. Oder verstehe ich irgendwas falsch?

 
Zitat von Murica

Sondern eher
Gerät 1 malt auf Display Position X Y, übersetzt das in eine Position auf dem Canvas / Bild
Gerät 1: Habe auf Canvas / Bild Position X Y gemalt
Gerät 2: Okay, male auf Canvas X Y.

Da ist es dann auch egal was für ein Seitenverhältnis oder was für eine Auflösung die jeweiligen Geräte haben.
Klar, wenn du das Bild abschneidest, wird halt auf eine Stelle gemalt die nicht gezeigt wird, aber das ist ja wurst.



Genau dieser direkte Übersatz führt ja zu der Verschiebung, die ich auf dem Bild dargestellt habe peinlich/erstaunt. Der Canvas (der ja das Vollbild des Displays ist) ist bei einem halt 1920x1080 (sagen wir mal auch 1:1 das Bild auf dem gemalt wird) und auf dem anderen z.B. 1920x1200, so dass das Bild vergrößert werden musste um es aufs Display zu matchen und dadurch an den Seiten weniger zu sehen ist.
Canvas X Y von Gerät 1 hat somit dann mit dem Canvas X Y auf Gerät 2 absolut gar nichts zu tun. Pixel 0,0 auf Gerät 1 ist die linke Hand einer Person, Pixel 0,0 auf Gerät 2 ist durch das Abschneiden die rechte. Wenn da jetzt jemand hinzeichnet darf ich dann halt nicht sagen "oh cool, Pixel 0,0, da male ich auch", sondern muss merken "okay, sein Pixel 0,0 wär bei mir außerhalb, bringt nix.".

Evtl. mach ich mir das auch gerade zu kompliziert, weil ich aktuell prozentual arbeite. (ich sage nicht "Pixel 100,100 wurde gemalt", sondern "Pixel 10%,10%" wurde gemalt. Hab aber irgendwie einen Knoten im Kopf.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Cru$her am 03.06.2017 9:57]
03.06.2017 9:54:33  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Flitzpiepe42

AUP Flitzpiepe42 07.10.2019
Naja, hab keinen hohen IQ, aber wenn du das Bild cropst auf die kleinste Diagonale/Darstellung, dann sieht jeder das selbe Bild. Da du damit die Abmessungen des Bildes kennst und wo du es auf dem Bildschirm positionierst, muss du nur noch die Malereien in diesen Bezug setzen, der passt dann auch überall anders. Malereien außerhalb des Bildes entfallen einfach
03.06.2017 10:01:27  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Murica

Arctic
Solange du auf dem kleineren Gerät nicht skretched ist Pixel 10, 10 auf beiden Geräten erstmal Pixel 10,10.

D.h. wenn du als Referenz von 0,0 ausgehst: Bei einem Bild von 100x100 liegt Pixel (0+)10, (0+)10 auf dem gespiegelten auf Position (Breite -) 10, (0+) 10 (wenn seitlich gespiegelt).

Oder von der Mitte ausgehend liegt 10,10 auf -40, -40 - daher auf Gerät auf +40, -40.

Solange du das Bild abschneidest ist das doch kein Problem?
Witzig würde es erst werden wenn du das Bild auf dem kleineren Gerät skreteched, d.h. bspw 1 gezeichneter Pixel auf dem größeren Gerät 2 Pixel entsprechen würden. Das müsstest du dann halt irgendwie interpolieren.

/e Gott ist mein Deutsch so früh am Morgen herrlich.

Ist dann auch vollkommen wurst ob Gerät 1 Pixel auf 10,10 überhaupt sieht oder nicht. Ist ja alles nur Datenmatsch. Er selbst kann dann halt erst ab 20,10 bspw malen.
[Dieser Beitrag wurde 4 mal editiert; zum letzten Mal von Murica am 03.06.2017 10:09]
03.06.2017 10:04:26  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Cru$her

AUP Cru$her 23.11.2009
 
Zitat von Murica

Solange du auf dem kleineren Gerät nicht skretched ist Pixel 10, 10 auf beiden Geräten erstmal Pixel 10,10.

D.h. wenn du als Referenz von 0,0 ausgehst: Bei einem Bild von 100x100 liegt Pixel (0+)10, (0+)10 auf dem gespiegelten auf Position (Breite -) 10, (0+) 10 (wenn seitlich gespiegelt).

Oder von der Mitte ausgehend liegt 10,10 auf -40, -40 - daher auf Gerät auf +40, -40.

Solange du das Bild abschneidest ist das doch kein Problem?
Witzig würde es erst werden wenn du das Bild auf dem kleineren Gerät skreteched, d.h. bspw 1 gezeichneter Pixel auf dem größeren Gerät 2 Pixel entsprechen würden. Das müsstest du dann halt irgendwie interpolieren.

/e Gott ist mein Deutsch so früh am Morgen herrlich.



Wie kommst du auf Spiegeln? Hab grad das Gefühl ich erklär das scheiße Breites Grinsen.

Das stretching geschieht zwangsweise. Wäre bei meinem Beispiel oben auch der Fall: Wenn ein Gerät 1920x1080 hat (16:9) und das Bild auch, muss das Bild bei der empfangenen 1920x1200 (16:10) Auflösung ja hochskaliert werden, so dass es auf die volle Höhe des Displays passt.

Ich mutmaße mal einfach grob dass das skalieren dann so geschieht:
1. 1080 auf die 1200 matchen: Bild muss um Faktor 1,11111... vergrößert werden.
2. Resultierende breite ist 2133,33... Pixel, Displaybedingt fehlen dann also insgesamt 2133,33 - 1920 = 213,33 Pixel. Damit ca. 106 Pixel auf jeder Seite abgeschnitten.

Dann hätte ich zumindest schonmal Pixel zum abziehen, ich vermute aber mal dass ich auch noch mehr machen muss, weil das Bild höher ist und die Pixel um Faktor 1,1 "mehr wert". Oder könnte das passen wenn ich doch prozentual arbeite und meine ausgerechneten 106 Pixel zusätzlich von der Seite abziehe? Man, alles so kompliziert!
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von Cru$her am 03.06.2017 10:19]
03.06.2017 10:16:45  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Murica

Arctic
Achso. Breites Grinsen

Ja, da bist du dann schon auf dem richtigen Weg. Bin gerade zu fault es nachzurechnen, aber du musst praktisch:

- Richtige Position des Pixels auf dem hochskalierten finden.
Sollte easy sein wenn du von der Mitte ausgehst.

Abstand zu Mitte * Faktor = neue Position (von der Mitte (0,0) aus)

Beim Empfangen auf dem hochskalierten Gerät:
- Richtige Position des nächsten Pixels finden

Neue Position Pixel 1, +/- neue Position Pixel 2 -> Platz für einen interpolierten neuen Pixel 3? Und dann dessen Position rausshizzln.

Gleiche für zeichnen auf dem hochskalierten Bild.
Display Position durch Faktor X auf die richtige Canvas Größte runterskalieren. Diese Position dem kleineren Gerät dann mitteilen.

Machst das schon richtig.

Denke ich Breites Grinsen - eventuell ist das auch Quatsch.

e/ Das zweite Gerät würde ich dabei erstmal komplett vergessen. Da du eh erstmal auf das "komplette" Canvas in Originalgröße rechnen musst - und diese Koordinaten auch auf das andere Gerät übergibst. Was das 2. Gerät dann damit anstellt, ist ja erstmal egal.
Und ja, bei dem "Die linke Hand ist die Rechte Hand auf Display #2" dachte ich du spiegelst das ganze.
[Dieser Beitrag wurde 4 mal editiert; zum letzten Mal von Murica am 03.06.2017 10:36]
03.06.2017 10:25:16  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Cru$her

AUP Cru$her 23.11.2009
Okay, danke schonmal. Nochmal in Ruhe lesen, bin grad auch ziemlich durch Breites Grinsen. Aber das Thema lässt mich grad nicht los.

Okay, war vielleicht doof erklärt peinlich/erstaunt. War so gemeint, dass die linke Hand halt durch das Abschneiden nicht im Bild ist und das Bild woanders startet.
03.06.2017 10:36:08  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Armag3ddon

AUP Armag3ddon 04.01.2011
Du willst wirklich umsetzen, dass mehrere Leute mit unterschiedlichen Auflösungen und Seitenverhältnissen gemeinsam ein pixelgenaues Bild auf der größt möglichen Auflösung malen?

Irgendwie bezweifle ich, dass das ein Problem ist, welches deinem Eingangspost zufolge bereits "zig Mal gelöst wurde". Allenfalls bereits zig Mal als unmöglich deklariert.

Der typische Lösungsweg wäre hier, den kleinsten gemeinsamen Nenner zu finden und darauf das Bild zu machen oder alternativ scrolling auf zu kleinen Bildschirm zu haben. Anderenfalls werden dich Umrechnungsfaktoren wie 1,1111... immer wieder vor Probleme bringen. Du musst mit nicht quadratischen Pixeln und mit (geräteübergreifenden) Rundungsfehlern/-unterschieden arbeiten. Ich glaube, eine schrecklichere Aufgabe kann man sich nicht suchen.
03.06.2017 11:21:36  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Murica

Arctic
Naja, wenn man die originale Größe des Bildes als gemeinsamen Nenner nimmt, sehe ich da ehrlich gesagt kein großes Problem.
Ausser es muss wirklich 100% Pixelperfect sein - was ich mal nicht annehme.

Ob das jeweilige Gerät das ganze dann hoch- oder runterskaliert, cropped oder skretched, wäre dann anderen Geräten erstmal egal.
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von Murica am 03.06.2017 11:28]
03.06.2017 11:26:20  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Cru$her

AUP Cru$her 23.11.2009
 
Zitat von Murica

Naja, wenn man die originale Größe des Bildes als gemeinsamen Nenner nimmt, sehe ich da ehrlich gesagt kein großes Problem.
Ausser es muss wirklich 100% Pixelperfect sein - was ich mal nicht annehme.



Eben, sie haben ja eine Gemeinsamkeit. Die spannende Frage ist immer nur, welchen Teil davon die Spieler jeweils sehen und wie ich das rauskriege Augenzwinkern. Bin da glaube ich auch schon nah dran jetzt, aber ein kleiner Denkfehler ist noch drin. Verumte mal, dein Ansatz, die Mitte als Basis zu nehmen, spielt da stark mit rein peinlich/erstaunt. Versuche das grad mit der natürlichen Basis oben links...
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Cru$her am 03.06.2017 11:30]
03.06.2017 11:29:12  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Armag3ddon

AUP Armag3ddon 04.01.2011
Dann hast du das Problem, dass das Bild bei allen Spielern, wo irgendwas zur Originalauflösung verändert wird, doof ausschaut.

Eine Person malt dann einen Kreis, bei anderen Person wird daraus ein Oval etc. Und kleine Details (im schlimmsten Falle ein Strich von genau einem Pixel Breite) sind bei anderen Leuten gar nicht mehr sichtbar (außer, du baust komplexe Systeme ein, die erkennen, dass gewisse Teile des Bildes unsichtbar werden und vergrößerst die künstlich).
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Armag3ddon am 03.06.2017 11:32]
03.06.2017 11:32:17  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Cru$her

AUP Cru$her 23.11.2009
 
Zitat von Armag3ddon

Dann hast du das Problem, dass das Bild bei allen Spielern, wo irgendwas zur Originalauflösung verändert wird, doof ausschaut.

Eine Person malt dann einen Kreis, bei anderen Person wird daraus ein Oval etc. Und kleine Details (im schlimmsten Falle ein Strich von genau einem Pixel Breite) sind bei anderen Leuten gar nicht mehr sichtbar (außer, du baust komplexe Systeme ein, die erkennen, dass gewisse Teile des Bildes unsichtbar werden und vergrößerst die künstlich).



Nein, da die Auflösung immer gleichmäßig so skaliert wird, dass der kleinere Teil des Bildes das Display ausfüllt und der Rest einfach wegfällt, sind alle Formen 1:1 identisch. Also z.B. eine 16:9 Basis wird auf einem 16:10 Display einfach in der Auflösung soweit erhöht, dass es auf das 16:10 Display passt, ohne die aspect ratio zu ändern. Damit liegt dann ein gewisser Teil vom vergrößerten Bild "außerhalb". Falls am Rand gezeichnet wird, sehen es dann nur einige ggf. nicht je nach Auflösungsdifferenz.
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von Cru$her am 03.06.2017 11:42]
03.06.2017 11:41:14  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Armag3ddon

AUP Armag3ddon 04.01.2011
Cropping? Puh. Gut, wenn du der Meinung bist, dass Spieler sowas verzeihen werden!

Sobald man mitbekommt, dass jemand anderes in Bereichen malen kann, die man selbst nicht sieht, wäre der beste Fall für dich, dass das als Bug identifiziert wird. Augenzwinkern Alternativ wird sich doch jeder fragen, was der Unsinn soll.
03.06.2017 11:47:26  Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
 Thema: Das pOT erstellt Spiele 4 ( code code durrrr )
« erste « vorherige 1 ... 7 8 9 10 [11] 12 13 14 15 ... 33 nächste » letzte »

mods.de - Forum » Public Offtopic » 

Hop to:  

Thread-Tags:
| tech | impressum