Browse Source

there it is

master
Victor Giers 4 years ago
parent
commit
b520abf1b0

+ 84
- 0
README.md View File

@@ -1,2 +1,86 @@
# Streit
Brainstorm
---


streit1: dialektik ohne begriffe
entscheiden sie über diskussion mit farben
streit2: die bessere identität
entscheiden sie über diskussion mit symbolen (nationalflaggen, firmenmarken, bandlogos, ..)
streit3: streitender schwarm
tragen sie ihre eigenen werte oder ideen ein oder entscheiden sie über werte und ideen anderer
streit4: streitender schwarm2
entscheiden sie über zufällige gegenüberstehende meinungen aus dem internet

---


Schöne Inszenierung von Userentscheidung in Computerspiel:
First Person, schwarzer Raum, es werden Lichtinseln auf den Boden projiziert, User kann dort hin laufen (VR kompat denkbar) um sich zu positionieren, dabei wird Entscheidung getroffen. In Licht schwebt (?) Objekt, falls sich zwischen Objekten entschieden werden soll, oder stehen Menschen / Menschengruppen, zu denen man sich bekennen soll..............

->

Ewiger Streit zwischen Menschengruppen
Gesellt man sich zu einer / entscheidet man sich für eine, so teilt sich diese wiederum in Fraktionen auf und streitet. Neue Menschen gesellen sich zu den Gruppen oder wenden sich ab, Überläufer? Individualität der Charaktere? Nein immer Gruppenkonsens. Überlauf / Abwendung / Neugewinnung wirkt mechanisch. Viele unterschiedliche Synchronsprecher verleihen den Charakteren im Diskurs Individualität, nur durch Unterschied der Stimme, da Konsens ja gleich..... Jeder Charakter spricht einen Satz. Auch auf dem Dorf!!!!!!! (Dorf = viele Charaktere)
Arbeitstitel: Unter der Linde
Pausensequenz .. schwarz löst sich auf zu Umgebung wie auf dem Mond in Majoras Mask (einzelner Baum, hyperschön surreal paradiesische Umgebung) / wie bei A/E unter'm Baum
Charaktergestaltung
Eintönige Charaktere wie in Superhot, aber in grau.
Unterschiedliche Kleidungs/Körpertypen?
Relevanz Synchronsprache/Animation 3/1
Intonation (Sound)
Entweder:
Ton indifferent aber nicht synthetisch / roboterhaft, immer die selbe Sprache. Egal bei welchem Thema!
Oder:
Je nach Streitthema unterschiedliche Tonation / Wortschatz / .. Gefahr: Unverständnis gegenüber der Charaktere durch Bewertung dieser
Gestikulation (Animation)
Same wie für sound - Charakter/Thema oder durchgehende "graue" Charaktere?
...
Langweiliges grau in Farbe, Form, Bewegung und Klang im Kontrast zu brutaler Direktheit
Das Grau ermöglicht Verständnis.
Pure Decision-Making-Game
Persönliches Verhältnis zu Charakteren wird allein durch Synchronstimme aufgebaut
Keine Facialanimations, keine Hände. Easy.
...
Andererseits...
Gibt es viele Characterdesigner. Das ganze wäre fruchtiger.
Größenwahn: UE4 Virtualcharacter BoMoCap+FaMoCap wie Senua
Problem: Direkte Darstellung von Menschengruppen ultrakritisch. Das bräuchte noch mehr Ethnologen/Menschen aller Kulturen als es Synchronsprecher bräuchte.
Außer _______ Humor

...

Das Spiel startet jedes Mal mit einer großen Menschengruppe ..
Die Fraktionen sind pro Gespräch nicht sichtlich von vornherein in Lichtinselfraktionen aufgeteilt, sondern wie Miis im Garten random verteilt
Erst am Ende des Gesprächs erst laufen alle zu ihren respektiven Gruppen. Der Spieler ist aufgefordert zu beobachten wo diejenigen, mit denen er übereinstimmt, hingehen. Dies wiederum ist schwierig, im Falle des Graus! (Grau = keine Individualität in Charakteren außer Stimme / Modell)

Kinder! Jeder Charakter ist ein Kind. Das wäre sehr japanisch. Altersklassen gegenüber höflich, nützlich einzelne Altersklassen nicht zu diskriminieren, dem Grau zuspielend.

Die Streitthemen müssen EXQUISIT gewählt sein, Auswahl treffen dürfte Spaß machen

In diesem Spiel findet kein Eierlecken statt, anders als in Spielen, deren Geschichte durch Entscheidungen des Spielers dem Spieler angepasst werden.


Furries? Mit Anonmasken? Im Garten unter der Linde?
Spieler begegnet allen auf Augenhöhe (außer Kindern und Rollstuhlfahrern lol)
Tiermenschen oder Geistmenschen?
Tiermenschen - Ich setze den Spieler über sie
Geistmenschen - Ich setze den Spieler unter sie
Nichts davon. Weltliche Themen durch total abstrakte, graue Wesen behandeln lassen
Ich lerne: Abstrakt = Elitär - Abstrakt kann nicht jeder.
Abstrakt = Geil. Jeder in seinem Film.

Die Stimme als einziges Nonabstraktum im Character ist nötig für's warme Gefühl wenn man sich seiner Gruppe anschließt. Dieser erhöhte Unterscheidungsgrad macht es im "Characterpool" (Durcheinander der Streitenden) auch entspannter zu folgen, wer sich nach Streit wo positioniert

Unerwartete Kontextwechsel. Die Charaktere bleiben die gleichen, aber wird im einen Gespräch über Probleme in einer Science Fiction Umgebung geredet (die nicht sichtbar ist und sich nur aus dem Streit heraus erschließt), so kann die Umgebung nach der Koallition zu den Lichtinseln, der Entscheidung des Spielers und der anschließenden erneuten Gruppenvergrößerung / -verkleinerung und Splitterung, aka im nächsten Level / im nächsten Gespräch eine völlig andere sein, ein anderer Kontext gegeben sein, nun schließt sich Beispielsweise ein Farmer dem Gespräch an und klagt über seine Dürre und alle haben kurioser Weise sofort verständnis. Damit wird die Abgrenzung der Level deutlicher, es entsteht Witz und es wird wieder Diplomatieverständnis vermittelt durch das unmittelbaren Abklingens des vorherigen Gesprächs. Flexibel bleiben, oben bleiben!

Das Skript kann geschrieben sein wie das Drehbuch eines Theaterstücks: "x betritt den raum" "y geht ab"
"a: 'blabla'
b (vehement): 'blablabla'"
(..wobei Vehemenz der Gräue nicht zuspielen würde)
Mit Seitenreferenz (Gruppe A: Gehe zu Seite X, Gruppe B: Gehe zu Seite Y, Gruppe C: ..) Am besten meißtens nur 2 Fraktionen lol. AAAAH so viel Text zu schreiben.

Zur Themenfindung

Konkrete Themen wie Klimawandel sind erschöpft. Keine vorbelastete Fragen, neue Szenerien schaffen, in denen der Spieler sich möglichst a priorisch befragen muss.

+ 48
- 0
index.html View File

@@ -0,0 +1,48 @@
<!DOCTYPE html>
<!-- __V3D_PUZZLES__ - enable Puzzles button in the App Manager -->
<!-- __V3D_TEMPLATE__ - template-based file; delete this line to prevent this file from being updated -->
<html lang="en">
<head>
<title>Verge3D Web Interactive</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">

<!-- Search Engines -->
<meta name="description" content="Interactive 3D Web application made with Verge3D. Immerse yourself in amazing graphics experience offered by state-of-the WebGL and HTML5 technologies.">
<!-- Twitter -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Verge3D Web Interactive">
<meta name="twitter:description" content="Interactive 3D Web application made with Verge3D. Immerse yourself in amazing graphics experience offered by state-of-the WebGL and HTML5 technologies.">
<meta name="twitter:image:src" content="https://cdn.soft8soft.com/images/player_socials.jpg">
<!-- Open Graph -->
<meta property="og:title" content="Verge3D Web Interactive">
<meta property="og:description" content="Interactive 3D Web application made with Verge3D. Immerse yourself in amazing graphics experience offered by state-of-the WebGL and HTML5 technologies.">
<meta property="og:image" content="https://cdn.soft8soft.com/images/player_socials.jpg">
<meta property="og:type" content="website">

<meta name="generator" content="Verge3D 2.12.0pre2">

<!-- favicons -->
<link rel="apple-touch-icon" sizes="180x180" href="media/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="media/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="media/favicon-16x16.png">
<link rel="manifest" href="media/manifest.json">
<link rel="mask-icon" href="media/safari-pinned-tab.svg" color="#5bbad5">
<meta name="theme-color" content="#ffffff">

<!-- WebXR origin trial -->
<meta http-equiv="origin-trial" content="Aop1aS3O0LG/MKmDbfhMRdlXGxB1ETrJJScdLSaYLDCMJI5iOLQ0uwhBObewdZKbpu00Y+9f7YC5tALasZ7BOg0AAABoeyJvcmlnaW4iOiJodHRwczovL3NvZnQ4c29mdC5jb206NDQzIiwiZmVhdHVyZSI6IldlYlhSRGV2aWNlTTY5IiwiZXhwaXJ5IjoxNTUxODMwMzk5LCJpc1N1YmRvbWFpbiI6dHJ1ZX0=">

<script src="v3d.js"></script>
<script src="streit.js"></script>

<link rel="stylesheet" type="text/css" href="streit.css">
</head>

<body>
<div id="container"></div>
<div id="fullscreen_button" class="fullscreen-open" title="Toggle fullscreen mode"></div>
</body>

</html>

BIN
media/android-chrome-192x192.png View File


BIN
media/android-chrome-512x512.png View File


BIN
media/apple-touch-icon.png View File


BIN
media/favicon-16x16.png View File


BIN
media/favicon-32x32.png View File


BIN
media/favicon.ico View File


BIN
media/fullscreen-close.png View File


BIN
media/fullscreen-open.png View File


+ 18
- 0
media/manifest.json View File

@@ -0,0 +1,18 @@
{
"name": "",
"icons": [
{
"src": "/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}

+ 31
- 0
media/safari-pinned-tab.svg View File

@@ -0,0 +1,31 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="1000.000000pt" height="1000.000000pt" viewBox="0 0 1000.000000 1000.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,1000.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M4830 9985 c-260 -45 -521 -151 -960 -390 -165 -90 -125 -67 -705
-400 -280 -161 -663 -379 -850 -485 -187 -106 -421 -240 -520 -298 -785 -456
-1046 -690 -1202 -1077 -23 -58 -63 -206 -77 -293 -14 -80 -18 -105 -30 -194
-3 -18 -8 -76 -11 -128 -3 -52 -8 -120 -11 -150 -10 -135 -14 -592 -17 -1780
-2 -1402 0 -1474 48 -1778 65 -402 227 -669 571 -938 45 -35 108 -82 140 -104
81 -56 196 -133 216 -145 397 -240 521 -314 708 -422 124 -72 239 -139 257
-149 17 -11 80 -47 140 -81 262 -152 830 -485 936 -549 49 -30 90 -54 93 -54
2 0 33 -18 69 -40 36 -22 67 -40 69 -40 2 0 35 -18 73 -39 151 -87 185 -105
355 -190 283 -142 511 -224 698 -250 68 -9 300 -7 360 4 284 51 582 182 1165
509 22 13 67 38 100 56 33 18 68 40 78 48 9 8 17 12 17 8 0 -4 12 1 28 12 15
11 135 81 267 157 132 76 254 145 270 155 95 55 607 347 645 368 25 13 74 42
110 62 36 20 88 50 115 65 107 59 417 242 562 331 526 326 759 568 881 914 33
95 67 236 77 320 4 30 8 57 10 60 2 3 6 39 10 80 3 41 8 91 10 110 20 199 25
552 27 1940 3 1356 1 1435 -38 1715 -52 378 -164 611 -408 849 -136 133 -276
237 -591 441 -70 46 -405 245 -411 245 -3 0 -17 8 -32 19 -20 14 -652 382
-947 551 -16 10 -169 100 -340 200 -614 362 -899 517 -1138 619 -103 44 -249
96 -300 106 -10 2 -26 6 -35 9 -9 3 -30 8 -47 11 -16 2 -41 7 -55 11 -54 12
-307 12 -380 -1z"/>
</g>
</svg>

BIN
streit.bin View File


+ 38
- 0
streit.css View File

@@ -0,0 +1,38 @@
/* __V3D_TEMPLATE__ - template-based file; delete this line to prevent this file from being updated */

body {
margin: 0px;
overflow: hidden;
}

#container {
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
}

div#fullscreen_button {
position: absolute;
top: 10px;
right: 10px;
width: 50px;
height: 50px;
cursor: pointer;
background-size: 100% 100%;
display: none;
}

.fullscreen-open {
background-image: url('media/fullscreen-open.png');
}

.fullscreen-close {
background-image: url('media/fullscreen-close.png');
}

/* removes tap blinking on ios devices */
* { -webkit-tap-highlight-color:rgba(0,0,0,0); }



+ 7834
- 0
streit.gltf
File diff suppressed because it is too large
View File


+ 194
- 0
streit.js View File

@@ -0,0 +1,194 @@
'use strict';

/* __V3D_TEMPLATE__ - template-based file; delete this line to prevent this file from being updated */

window.addEventListener('load', function() {

(function() {

var params = v3d.AppUtils.getPageParams();

var PUZZLES_DIR = '../../puzzles/';
var logicURL = params.logic ? params.logic : '__LOGIC__visual_logic.js'.replace('__LOGIC__', '');
var sceneURL = params.load ? params.load : '__URL__streit.gltf'.replace('__URL__', '');
if (!sceneURL) {
console.log('No scene URL specified');
return;
}

// some puzzles can benefit from cache
v3d.Cache.enabled = true;

if (v3d.AppUtils.isXML(logicURL)) {
var logicURLJS = logicURL.match(/(.*)\.xml$/)[1] + '.js';
new v3d.PuzzlesLoader().loadEditorWithLogic(PUZZLES_DIR, logicURLJS,
function() {
var initOptions = v3d.PL ? v3d.PL.execInitPuzzles().initOptions
: { useFullscreen: true };
loadScene(sceneURL, initOptions);
}
);
} else if (v3d.AppUtils.isJS(logicURL)) {
new v3d.PuzzlesLoader().loadLogic(logicURL, function() {
var initOptions = v3d.PL ? v3d.PL.execInitPuzzles().initOptions
: { useFullscreen: true };
loadScene(sceneURL, initOptions);
});
} else {
loadScene(sceneURL, { useFullscreen: true });
}
})();

function loadScene(sceneURL, initOptions) {

initOptions = initOptions || {};

var ctxSettings = {};
if (initOptions.useBkgTransp) ctxSettings.alpha = true;
if (initOptions.preserveDrawBuf) ctxSettings.preserveDrawingBuffer = true;

var preloader = initOptions.useCustomPreloader
? createCustomPreloader(initOptions.preloaderProgressCb,
initOptions.preloaderEndCb)
: new v3d.SimplePreloader({ container: 'container' });

var app = new v3d.App('container', ctxSettings, preloader);
if (initOptions.useBkgTransp) {
app.clearBkgOnLoad = true;
app.renderer.setClearColor(0x000000, 0);
}

// namespace for communicating with code generated by Puzzles
app.ExternalInterface = {};
prepareExternalInterface(app);

if (initOptions.preloaderStartCb) initOptions.preloaderStartCb();
if (initOptions.useFullscreen) {
initFullScreen();
} else {
var fsButton = document.getElementById('fullscreen_button');
if (fsButton) fsButton.style.display = 'none';
}

sceneURL = initOptions.useCompAssets ? sceneURL + '.xz' : sceneURL;
app.loadScene(sceneURL, function() {
app.enableControls();
app.run();

if (v3d.PE) v3d.PE.updateAppInstance(app);
if (v3d.PL) v3d.PL.init(app, initOptions);

runCode(app);
}, null, function() {
console.log('Can\'t load the scene ' + sceneURL);
});

return app;
}

function createCustomPreloader(updateCb, finishCb) {
function CustomPreloader() {
v3d.Preloader.call(this);
}

CustomPreloader.prototype = Object.assign(Object.create(v3d.Preloader.prototype), {
onUpdate: function(percentage) {
v3d.Preloader.prototype.onUpdate.call(this, percentage);
if (updateCb) updateCb(percentage);
},
onFinish: function() {
v3d.Preloader.prototype.onFinish.call(this);
if (finishCb) finishCb();
}
});

return new CustomPreloader();
}

function initFullScreen() {

var fsButton = document.getElementById('fullscreen_button');
if (!fsButton) return;

if (document.fullscreenEnabled ||
document.webkitFullscreenEnabled ||
document.mozFullScreenEnabled ||
document.msFullscreenEnabled)
fullscreen_button.style.display = 'inline';

fullscreen_button.addEventListener('click', function(event) {
event.stopPropagation();
if (document.fullscreenElement ||
document.webkitFullscreenElement ||
document.mozFullScreenElement ||
document.msFullscreenElement) {
exitFullscreen();
} else
requestFullscreen(document.body);
});

function changeFullscreen() {
if (document.fullscreenElement ||
document.webkitFullscreenElement ||
document.mozFullScreenElement ||
document.msFullscreenElement)
fullscreen_button.className = 'fullscreen-close';
else
fullscreen_button.className = 'fullscreen-open';
}

document.addEventListener('webkitfullscreenchange', changeFullscreen);
document.addEventListener('mozfullscreenchange', changeFullscreen);
document.addEventListener('msfullscreenchange', changeFullscreen);
document.addEventListener('fullscreenchange', changeFullscreen);

function requestFullscreen(elem) {
if (elem.requestFullscreen)
elem.requestFullscreen();
else if (elem.mozRequestFullScreen)
elem.mozRequestFullScreen();
else if (elem.webkitRequestFullscreen)
elem.webkitRequestFullscreen();
else if (elem.msRequestFullscreen)
elem.msRequestFullscreen();
}

function exitFullscreen() {
if (document.exitFullscreen)
document.exitFullscreen();
else if (document.mozCancelFullScreen)
document.mozCancelFullScreen();
else if (document.webkitExitFullscreen)
document.webkitExitFullscreen();
else if (document.msExitFullscreen)
document.msExitFullscreen();
}
}




function prepareExternalInterface(app) {
// register functions in the app.ExternalInterface to call them from Puzzles, e.g:

var mouse = new v3d.Vector2();

app.ExternalInterface.getMouse = function(){
console.log(mouse.x, mouse.y);
app.ExternalInterface.setMouse(mouse.x, mouse.y);
}

function onMouseMove(event) {
mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.y = - (event.clientY / window.innerHeight) * 2 + 1;
app.ExternalInterface.setMouse(mouse.x, mouse.y);
}
window.addEventListener('mousemove', onMouseMove, false);

}


function runCode(app) {
}

});

BIN
streit_walk.bin View File


+ 7834
- 0
streit_walk.gltf
File diff suppressed because it is too large
View File


+ 1
- 0
v3d.js
File diff suppressed because it is too large
View File


+ 1050
- 0
visual_logic.js
File diff suppressed because it is too large
View File


+ 3052
- 0
visual_logic.xml
File diff suppressed because it is too large
View File


Loading…
Cancel
Save