NOISE SORT OF
This commit is contained in:
parent
b44b7fcfe9
commit
f95474d2c2
5 changed files with 543 additions and 57 deletions
|
@ -88,7 +88,7 @@ window.onload = function(){
|
||||||
|
|
||||||
// First slide!
|
// First slide!
|
||||||
//slideshow.nextSlide();
|
//slideshow.nextSlide();
|
||||||
slideshow.gotoSlide("distrust");
|
slideshow.gotoSlide("noise");
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -320,7 +320,7 @@ function Tournament(config){
|
||||||
_nextStep();
|
_nextStep();
|
||||||
setTimeout(function(){
|
setTimeout(function(){
|
||||||
if(self.isAutoPlaying) _startAutoPlay();
|
if(self.isAutoPlaying) _startAutoPlay();
|
||||||
},500);
|
},150);
|
||||||
};
|
};
|
||||||
var _stopAutoPlay = function(){
|
var _stopAutoPlay = function(){
|
||||||
self.isAutoPlaying = false;
|
self.isAutoPlaying = false;
|
||||||
|
@ -342,10 +342,18 @@ function Tournament(config){
|
||||||
|
|
||||||
// PLAY!
|
// PLAY!
|
||||||
if(self.STAGE == STAGE_PLAY){
|
if(self.STAGE == STAGE_PLAY){
|
||||||
if(_playIndex>0) self.agents[_playIndex-1].dehighlightConnections();
|
/*if(self.isAutoPlaying){
|
||||||
|
self.playOneTournament(); // FOR REAL, NOW.
|
||||||
|
_playIndex = 0;
|
||||||
|
_tweenTimer = 0;
|
||||||
|
self.STAGE = STAGE_REST;
|
||||||
|
publish("tournament/step/completed", ["play"]);
|
||||||
|
}else{*/
|
||||||
|
if(_playIndex>0 && _playIndex<self.agents.length+1) self.agents[_playIndex-1].dehighlightConnections();
|
||||||
|
if(_playIndex>1 && _playIndex<self.agents.length+2) self.agents[_playIndex-2].dehighlightConnections();
|
||||||
if(_playIndex<self.agents.length){
|
if(_playIndex<self.agents.length){
|
||||||
self.agents[_playIndex].highlightConnections();
|
self.agents[_playIndex].highlightConnections();
|
||||||
_playIndex++;
|
_playIndex += self.isAutoPlaying ? 2 : 1;
|
||||||
}else{
|
}else{
|
||||||
self.playOneTournament(); // FOR REAL, NOW.
|
self.playOneTournament(); // FOR REAL, NOW.
|
||||||
_playIndex = 0;
|
_playIndex = 0;
|
||||||
|
@ -353,13 +361,14 @@ function Tournament(config){
|
||||||
self.STAGE = STAGE_REST;
|
self.STAGE = STAGE_REST;
|
||||||
publish("tournament/step/completed", ["play"]);
|
publish("tournament/step/completed", ["play"]);
|
||||||
}
|
}
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ELIMINATE!
|
// ELIMINATE!
|
||||||
if(self.STAGE == STAGE_ELIMINATE){
|
if(self.STAGE == STAGE_ELIMINATE){
|
||||||
self.eliminateBottom(Tournament.SELECTION);
|
self.eliminateBottom(Tournament.SELECTION);
|
||||||
_tweenTimer++;
|
_tweenTimer++;
|
||||||
if(_tweenTimer==_s(0.3)){
|
if(_tweenTimer==_s(0.3) || self.isAutoPlaying){
|
||||||
_tweenTimer = 0;
|
_tweenTimer = 0;
|
||||||
self.STAGE = STAGE_REST;
|
self.STAGE = STAGE_REST;
|
||||||
publish("tournament/step/completed", ["eliminate"]);
|
publish("tournament/step/completed", ["eliminate"]);
|
||||||
|
@ -375,6 +384,7 @@ function Tournament(config){
|
||||||
}
|
}
|
||||||
|
|
||||||
// Middle...
|
// Middle...
|
||||||
|
_tweenTimer += self.isAutoPlaying ? 0.15 : 0.05;
|
||||||
for(var i=0;i<self.agents.length;i++){
|
for(var i=0;i<self.agents.length;i++){
|
||||||
var a = self.agents[i];
|
var a = self.agents[i];
|
||||||
a.tweenAngle(_tweenTimer);
|
a.tweenAngle(_tweenTimer);
|
||||||
|
@ -382,7 +392,6 @@ function Tournament(config){
|
||||||
}
|
}
|
||||||
self.sortAgentsByDepth();
|
self.sortAgentsByDepth();
|
||||||
for(var i=0;i<self.connections.length;i++) self.connections[i].updateGraphics();
|
for(var i=0;i<self.connections.length;i++) self.connections[i].updateGraphics();
|
||||||
_tweenTimer += 0.05;
|
|
||||||
|
|
||||||
// End
|
// End
|
||||||
if(_tweenTimer>=1){
|
if(_tweenTimer>=1){
|
||||||
|
@ -636,15 +645,16 @@ function TournamentAgent(config){
|
||||||
|
|
||||||
// INSTA-KILL ALL CONNECTIONS
|
// INSTA-KILL ALL CONNECTIONS
|
||||||
self.clearConnections();
|
self.clearConnections();
|
||||||
|
scoreText.visible = false;
|
||||||
|
|
||||||
// Tween -- DIE!
|
// Tween -- DIE!
|
||||||
scoreText.visible = false;
|
var duration = self.tournament.isAutoPlaying ? 0.13 : 0.3;
|
||||||
Tween_get(g).to({
|
Tween_get(g).to({
|
||||||
alpha: 0,
|
alpha: 0,
|
||||||
x: g.x+Math.random()*20-10,
|
x: g.x+Math.random()*20-10,
|
||||||
y: g.y+Math.random()*20-10,
|
y: g.y+Math.random()*20-10,
|
||||||
rotation: Math.random()*0.5-0.25
|
rotation: Math.random()*0.5-0.25
|
||||||
}, _s(0.3), Ease.circOut).call(self.kill);
|
}, _s(duration), Ease.circOut).call(self.kill);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -140,7 +140,7 @@ SLIDES.push({
|
||||||
self.add({
|
self.add({
|
||||||
id:"continueButton", type:"Button",
|
id:"continueButton", type:"Button",
|
||||||
x:x+215, y:y, size:"short",
|
x:x+215, y:y, size:"short",
|
||||||
text_id:"distrust_2_btn",
|
text_id:"label_continue",
|
||||||
message: "slideshow/next"
|
message: "slideshow/next"
|
||||||
});
|
});
|
||||||
_hide(o.continueLabel); _fadeIn(o.continueLabel, 100);
|
_hide(o.continueLabel); _fadeIn(o.continueLabel, 100);
|
||||||
|
@ -228,7 +228,7 @@ SLIDES.push({
|
||||||
self.add({
|
self.add({
|
||||||
id:"continueButton", type:"Button",
|
id:"continueButton", type:"Button",
|
||||||
x:340, y:471, size:"short",
|
x:340, y:471, size:"short",
|
||||||
text_id:"distrust_2_btn",
|
text_id:"label_continue",
|
||||||
message: "slideshow/next"
|
message: "slideshow/next"
|
||||||
});
|
});
|
||||||
_hide(o.continueLabel); _fadeIn(o.continueLabel, 100);
|
_hide(o.continueLabel); _fadeIn(o.continueLabel, 100);
|
||||||
|
|
|
@ -1,16 +1,455 @@
|
||||||
// One-off
|
// One-off with noise
|
||||||
SLIDES.push({
|
SLIDES.push({
|
||||||
id: "noise",
|
id: "noise",
|
||||||
onstart: function(self){
|
onstart: function(self){
|
||||||
|
|
||||||
|
var o = self.objects;
|
||||||
|
|
||||||
|
// Iterated Simulation
|
||||||
|
self.add({id:"iterated", type:"Iterated", x:130, y:133});
|
||||||
|
self.objects.iterated.dehighlightPayoff();
|
||||||
|
|
||||||
|
// Words on top & bottom
|
||||||
|
self.add({
|
||||||
|
id:"topWords", type:"TextBox", text_id:"noise_1",
|
||||||
|
x:130, y:35, width:700, height:100, align:"center"
|
||||||
|
});
|
||||||
|
self.add({
|
||||||
|
id:"btmWords", type:"TextBox", text_id:"noise_1_end",
|
||||||
|
x:130, y:410, width:700, height:100, align:"center"
|
||||||
|
});
|
||||||
|
|
||||||
|
// STAGES
|
||||||
|
var STAGES = [
|
||||||
|
{button:"cooperate", message:"cooperate"},
|
||||||
|
{button:"cooperate", message:"cheat"},
|
||||||
|
{button:"cooperate", message:"cooperate"},
|
||||||
|
{button:"cheat", message:"cheat"}
|
||||||
|
];
|
||||||
|
var STAGE_INDEX = 0;
|
||||||
|
|
||||||
|
// ONE Button
|
||||||
|
self.add({
|
||||||
|
id:"button", type:"Button",
|
||||||
|
x:383, y:463, text_id:"label_cooperate", uppercase:true,
|
||||||
|
onclick: function(){
|
||||||
|
|
||||||
|
// Make sim go
|
||||||
|
var s = STAGES[STAGE_INDEX];
|
||||||
|
publish("iterated/"+s.message);
|
||||||
|
o.button.deactivate();
|
||||||
|
|
||||||
|
// Hide words
|
||||||
|
_hide(o.topWords);
|
||||||
|
_hide(o.btmWords);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Re-activate...
|
||||||
|
var _foreverWar = false;
|
||||||
|
var _foreverMove = "cheat";
|
||||||
|
listen(self, "iterated/round/end", function(){
|
||||||
|
|
||||||
|
if(_foreverWar){
|
||||||
|
publish("iterated/"+_foreverMove);
|
||||||
|
if(_foreverMove=="cheat") _foreverMove="cooperate";
|
||||||
|
else if(_foreverMove=="cooperate") _foreverMove="cheat";
|
||||||
|
}else{
|
||||||
|
|
||||||
|
STAGE_INDEX++;
|
||||||
|
|
||||||
|
// New words
|
||||||
|
o.topWords.setTextID("noise_"+(STAGE_INDEX+1));
|
||||||
|
o.btmWords.setTextID("noise_"+(STAGE_INDEX+1)+"_end");
|
||||||
|
_fadeIn(o.topWords, 100);
|
||||||
|
_fadeIn(o.btmWords, 300);
|
||||||
|
|
||||||
|
// Next stage
|
||||||
|
if(STAGE_INDEX>=STAGES.length){
|
||||||
|
|
||||||
|
publish("iterated/cooperate");
|
||||||
|
_foreverWar = true;
|
||||||
|
|
||||||
|
// The FINAL buttons... remove the button & put it back in.
|
||||||
|
self.remove("button");
|
||||||
|
self.add({
|
||||||
|
id:"button", type:"Button",
|
||||||
|
x:304, y:463, text_id:"noise_5_btn", size:"long",
|
||||||
|
message: "slideshow/scratch"
|
||||||
|
});
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
// Reactivate buttons
|
||||||
|
var s = STAGES[STAGE_INDEX];
|
||||||
|
o.button.setText("label_"+s.button);
|
||||||
|
o.button.activate();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
onend: function(self){
|
||||||
|
unlisten(self);
|
||||||
|
self.clear();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// New characters
|
// New characters
|
||||||
|
SLIDES.push({
|
||||||
|
|
||||||
// Tournament
|
onstart: function(self){
|
||||||
|
|
||||||
// Tournament #2
|
// WORDS
|
||||||
|
self.add({
|
||||||
|
id:"score1", type:"TextBox",
|
||||||
|
x:160, y:20, width:640,
|
||||||
|
text_id:"noise_characters"
|
||||||
|
});
|
||||||
|
|
||||||
// Tournament: adjust noise
|
// CHARS
|
||||||
|
self.add({
|
||||||
|
id:"char_tf2t", type:"CharacterTextBox",
|
||||||
|
x:160, y:70, width:640,
|
||||||
|
character: "tf2t"
|
||||||
|
});
|
||||||
|
self.add({
|
||||||
|
id:"char_pavlov", type:"CharacterTextBox",
|
||||||
|
x:160, y:190, width:640,
|
||||||
|
character: "pavlov"
|
||||||
|
});
|
||||||
|
self.add({
|
||||||
|
id:"char_random", type:"CharacterTextBox",
|
||||||
|
x:160, y:320, width:640,
|
||||||
|
character: "random"
|
||||||
|
});
|
||||||
|
|
||||||
// Teaser...
|
// Next...
|
||||||
|
self.add({
|
||||||
|
id:"next", type:"TextBox",
|
||||||
|
x:160, y:420, width:640, align:"right",
|
||||||
|
text_id: "noise_characters_end"
|
||||||
|
});
|
||||||
|
|
||||||
|
// Next Button!
|
||||||
|
self.add({
|
||||||
|
id:"next_button", type:"Button", x:460, y:460, size:"long",
|
||||||
|
text_id:"noise_characters_btn",
|
||||||
|
message:"slideshow/scratch"
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
onend: function(self){
|
||||||
|
self.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// Tournament: simpleton wins
|
||||||
|
SLIDES.push({
|
||||||
|
id: "noise",
|
||||||
|
onstart: function(self){
|
||||||
|
|
||||||
|
var o = self.objects;
|
||||||
|
|
||||||
|
// Tournament
|
||||||
|
Tournament.resetGlobalVariables();
|
||||||
|
Tournament.INITIAL_AGENTS = [
|
||||||
|
{strategy:"tf2t", count:3},
|
||||||
|
{strategy:"pavlov", count:3},
|
||||||
|
{strategy:"random", count:3},
|
||||||
|
{strategy:"tft", count:3},
|
||||||
|
{strategy:"all_c", count:13}
|
||||||
|
];
|
||||||
|
PD.NOISE = 0.05;
|
||||||
|
self.add({id:"tournament", type:"Tournament", x:-20, y:20});
|
||||||
|
|
||||||
|
// Words to the side
|
||||||
|
self.add({
|
||||||
|
id:"text", type:"TextBox",
|
||||||
|
x:510, y:30, width:450, height:500,
|
||||||
|
text_id:"noise_evo_1"
|
||||||
|
});
|
||||||
|
|
||||||
|
// BETS
|
||||||
|
var _addButton = function(character, x, y){
|
||||||
|
(function(character, x, y){
|
||||||
|
self.add({
|
||||||
|
id:"bet_"+character, type:"Button", x:x, y:y,
|
||||||
|
text_id: "icon_"+character,
|
||||||
|
onclick:function(){
|
||||||
|
_.answer = character;
|
||||||
|
publish("slideshow/next");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})(character, x, y);
|
||||||
|
};
|
||||||
|
var x = 510;
|
||||||
|
var y = 295;
|
||||||
|
var dx = 200;
|
||||||
|
var dy = 70;
|
||||||
|
_addButton("tf2t", x, y); _addButton("pavlov", x+dx, y);
|
||||||
|
_addButton("random", x, y+dy); _addButton("tft", x+dx, y+dy);
|
||||||
|
_addButton("all_c", x, y+dy*2);
|
||||||
|
|
||||||
|
},
|
||||||
|
onend: function(self){
|
||||||
|
self.remove("bet_all_c");
|
||||||
|
self.remove("bet_tft");
|
||||||
|
self.remove("bet_tf2t");
|
||||||
|
self.remove("bet_pavlov");
|
||||||
|
self.remove("bet_random");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
SLIDES.push({
|
||||||
|
onstart: function(self){
|
||||||
|
|
||||||
|
var o = self.objects;
|
||||||
|
|
||||||
|
// Words
|
||||||
|
o.text.setTextID("noise_evo_2");
|
||||||
|
_hide(o.text); _fadeIn(o.text, 100);
|
||||||
|
|
||||||
|
/////////////////////////////////////////
|
||||||
|
// BUTTONS for playing //////////////////
|
||||||
|
/////////////////////////////////////////
|
||||||
|
|
||||||
|
var x = 135;
|
||||||
|
var y = 175;
|
||||||
|
var dy = 70;
|
||||||
|
self.add({
|
||||||
|
id:"playButton", type:"Button",
|
||||||
|
x:x, y:y, text_id:"label_start",
|
||||||
|
onclick: function(){
|
||||||
|
if(o.tournament.isAutoPlaying){
|
||||||
|
publish("tournament/autoplay/stop");
|
||||||
|
}else{
|
||||||
|
publish("tournament/autoplay/start");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
listen(_, "tournament/autoplay/stop",function(){
|
||||||
|
o.playButton.setText("label_start");
|
||||||
|
});
|
||||||
|
listen(_, "tournament/autoplay/start",function(){
|
||||||
|
o.playButton.setText("label_stop");
|
||||||
|
});
|
||||||
|
self.add({
|
||||||
|
id:"stepButton", type:"Button",
|
||||||
|
x:x, y:y+dy, text_id:"label_step", message:"tournament/step"
|
||||||
|
});
|
||||||
|
self.add({
|
||||||
|
id:"resetButton", type:"Button",
|
||||||
|
x:x, y:y+dy*2, text_id:"label_reset", message:"tournament/reset"
|
||||||
|
});
|
||||||
|
|
||||||
|
/////////////////////////////////////////
|
||||||
|
// SHOW THE NEXT WORDS, and a NEXT
|
||||||
|
|
||||||
|
// NEXT
|
||||||
|
var reproduceSteps = 0;
|
||||||
|
_.misc = {};
|
||||||
|
listen(_.misc, "tournament/step/completed", function(step){
|
||||||
|
if(step=="reproduce"){
|
||||||
|
reproduceSteps++;
|
||||||
|
if(reproduceSteps==6){
|
||||||
|
publish("slideshow/next");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
onend: function(self){
|
||||||
|
unlisten(_.misc);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
SLIDES.push({
|
||||||
|
onstart: function(self){
|
||||||
|
|
||||||
|
var o = self.objects;
|
||||||
|
|
||||||
|
// Words
|
||||||
|
o.text.setTextID("noise_evo_3");
|
||||||
|
_hide(o.text); _fadeIn(o.text, 100);
|
||||||
|
|
||||||
|
// Tournament
|
||||||
|
Tournament.resetGlobalVariables();
|
||||||
|
Tournament.INITIAL_AGENTS = [
|
||||||
|
{strategy:"tf2t", count:3},
|
||||||
|
{strategy:"pavlov", count:3},
|
||||||
|
{strategy:"random", count:3},
|
||||||
|
{strategy:"tft", count:3},
|
||||||
|
{strategy:"all_d", count:13}
|
||||||
|
];
|
||||||
|
PD.NOISE = 0.05;
|
||||||
|
o.tournament.reset();
|
||||||
|
|
||||||
|
// HIDE PLAYER
|
||||||
|
_hide(o.playButton); o.playButton.deactivate();
|
||||||
|
_hide(o.stepButton); o.stepButton.deactivate();
|
||||||
|
_hide(o.resetButton); o.resetButton.deactivate();
|
||||||
|
|
||||||
|
// BETS
|
||||||
|
var _addButton = function(character, x, y){
|
||||||
|
(function(character, x, y){
|
||||||
|
self.add({
|
||||||
|
id:"bet_"+character, type:"Button", x:x, y:y,
|
||||||
|
text_id: "icon_"+character,
|
||||||
|
onclick:function(){
|
||||||
|
_.answer = character;
|
||||||
|
publish("slideshow/next");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})(character, x, y);
|
||||||
|
};
|
||||||
|
var x = 510;
|
||||||
|
var y = 295;
|
||||||
|
var dx = 200;
|
||||||
|
var dy = 70;
|
||||||
|
_addButton("tf2t", x, y); _addButton("pavlov", x+dx, y);
|
||||||
|
_addButton("random", x, y+dy); _addButton("tft", x+dx, y+dy);
|
||||||
|
_addButton("all_c", x, y+dy*2);
|
||||||
|
|
||||||
|
},
|
||||||
|
onend: function(self){
|
||||||
|
self.remove("bet_all_c");
|
||||||
|
self.remove("bet_tft");
|
||||||
|
self.remove("bet_tf2t");
|
||||||
|
self.remove("bet_pavlov");
|
||||||
|
self.remove("bet_random");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
SLIDES.push({
|
||||||
|
onstart: function(self){
|
||||||
|
|
||||||
|
var o = self.objects;
|
||||||
|
|
||||||
|
// SHOW PLAYER
|
||||||
|
_fadeIn(o.playButton,1); o.playButton.activate();
|
||||||
|
_fadeIn(o.stepButton,1); o.stepButton.activate();
|
||||||
|
_fadeIn(o.resetButton,1); o.resetButton.activate();
|
||||||
|
o.playButton.setText("label_start");
|
||||||
|
|
||||||
|
// Words
|
||||||
|
o.text.setTextID("noise_evo_4");
|
||||||
|
_hide(o.text); _fadeIn(o.text, 100);
|
||||||
|
|
||||||
|
/////////////////////////////////////////
|
||||||
|
// SHOW THE NEXT WORDS, and a NEXT
|
||||||
|
|
||||||
|
// NEXT
|
||||||
|
var reproduceSteps = 0;
|
||||||
|
_.misc = {};
|
||||||
|
listen(_.misc, "tournament/step/completed", function(step){
|
||||||
|
if(step=="reproduce"){
|
||||||
|
reproduceSteps++;
|
||||||
|
if(reproduceSteps==8){
|
||||||
|
publish("slideshow/next");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
onend: function(self){
|
||||||
|
unlisten(_.misc);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO: SMALLER SANDBOX-PLAY BUTTONS
|
||||||
|
|
||||||
|
SLIDES.push({
|
||||||
|
onstart: function(self){
|
||||||
|
|
||||||
|
var o = self.objects;
|
||||||
|
|
||||||
|
// Words
|
||||||
|
o.text.setTextID("noise_evo_5");
|
||||||
|
_hide(o.text); _fadeIn(o.text, 100);
|
||||||
|
|
||||||
|
// Tournament
|
||||||
|
o.tournament.reset();
|
||||||
|
|
||||||
|
// Slider!
|
||||||
|
var x = 510;
|
||||||
|
var y = 100;
|
||||||
|
self.add({
|
||||||
|
id:"noiseLabel", type:"TextBox",
|
||||||
|
x:x, y:y, width:450, noSelect:true
|
||||||
|
});
|
||||||
|
self.add({
|
||||||
|
id:"noiseSlider", type:"Slider",
|
||||||
|
x:x, y:y+55, width:450,
|
||||||
|
min:0.00, max:0.50, step:0.01,
|
||||||
|
message: "rules/noise"
|
||||||
|
});
|
||||||
|
_.misc = {};
|
||||||
|
var _updateLabel = function(value){
|
||||||
|
value = Math.round(value*100);
|
||||||
|
var words = Words.get("sandbox_rules_3");
|
||||||
|
words = words.replace(/\[N\]/g, value+""); // replace [N] with the number value
|
||||||
|
o.noiseLabel.setText(words);
|
||||||
|
};
|
||||||
|
listen(_.misc, "rules/noise", function(value){
|
||||||
|
_updateLabel(value);
|
||||||
|
o.tournament.reset();
|
||||||
|
});
|
||||||
|
o.noiseSlider.setValue(0.05);
|
||||||
|
_updateLabel(0.05);
|
||||||
|
|
||||||
|
// Continue whenever you want to...
|
||||||
|
var x = 510;
|
||||||
|
var y = 300;
|
||||||
|
self.add({
|
||||||
|
id:"continueLabel", type:"TextBox",
|
||||||
|
x:x, y:y+5, width:200, height:50,
|
||||||
|
align:"right", color:"#aaa", size:17,
|
||||||
|
text_id:"noise_evo_6_continue"
|
||||||
|
});
|
||||||
|
self.add({
|
||||||
|
id:"continueButton", type:"Button",
|
||||||
|
x:x+215, y:y, size:"short",
|
||||||
|
text_id:"label_continue",
|
||||||
|
message: "slideshow/next"
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
onend: function(self){
|
||||||
|
unlisten(_.misc);
|
||||||
|
self.remove("noiseLabel");
|
||||||
|
self.remove("noiseSlider");
|
||||||
|
self.remove("continueLabel");
|
||||||
|
self.remove("continueButton");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
SLIDES.push({
|
||||||
|
onstart: function(self){
|
||||||
|
|
||||||
|
var o = self.objects;
|
||||||
|
|
||||||
|
// Words
|
||||||
|
o.text.setTextID("noise_evo_6");
|
||||||
|
_hide(o.text); _fadeIn(o.text, 100);
|
||||||
|
|
||||||
|
// Next button
|
||||||
|
self.add({
|
||||||
|
id:"button", type:"Button", x:510, y:466,
|
||||||
|
text_id:"noise_evo_6_btn", size:"long",
|
||||||
|
message:"slideshow/scratch"
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
onend: function(self){
|
||||||
|
self.clear();
|
||||||
|
unlisten(self);
|
||||||
|
unlisten(_);
|
||||||
|
unlisten(_.misc);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
111
lang/en.html
111
lang/en.html
|
@ -522,9 +522,6 @@ Feel free to experiment as much as you'd like!
|
||||||
<p id="distrust_2_end">
|
<p id="distrust_2_end">
|
||||||
once you're done playing around, click:
|
once you're done playing around, click:
|
||||||
</p>
|
</p>
|
||||||
<p id="distrust_2_btn">
|
|
||||||
continue
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p id="distrust_3">
|
<p id="distrust_3">
|
||||||
As you saw, when people play below some number of rounds,
|
As you saw, when people play below some number of rounds,
|
||||||
|
@ -598,14 +595,14 @@ let's look at our final barrier to trust...
|
||||||
|
|
||||||
<p id="noise_1">
|
<p id="noise_1">
|
||||||
As cool as <span class="tft">Copycat</span> is, it has a huge, fatal weakness I haven't mentioned yet.
|
As cool as <span class="tft">Copycat</span> is, it has a huge, fatal weakness I haven't mentioned yet.
|
||||||
To understand it, let's imagine two <span class="tft">Copycats</span> are playing against each other:
|
To understand it, let's say two <span class="tft">Copycats</span> are playing against each other:
|
||||||
</p>
|
</p>
|
||||||
<p id="noise_1_end">
|
<p id="noise_1_end">
|
||||||
Being a nice player, both their first moves will be:
|
Being "nice" players, both their first moves will be:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p id="noise_2">
|
<p id="noise_2">
|
||||||
And normally, they'd just pay back each others' kindness and sing Kumbaya 'til the end of days.
|
And normally, they'd just pay back each others' kindness and sing Kumbaya until the end of time.
|
||||||
</p>
|
</p>
|
||||||
<p id="noise_2_end">
|
<p id="noise_2_end">
|
||||||
But what if, while trying to reciprocate...
|
But what if, while trying to reciprocate...
|
||||||
|
@ -621,25 +618,24 @@ But if the other person doesn't <i>think</i> it was an accident...
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p id="noise_4">
|
<p id="noise_4">
|
||||||
<b>OH NO x2</b>
|
<b>OH NO AGAIN</b>
|
||||||
<br>
|
<br>
|
||||||
The other player, being a <span class="tft">Copycat</span>, <i>had<i> to retaliate...
|
The other player, being a <span class="tft">Copycat</span>, <i>had</i> to retaliate...
|
||||||
</p>
|
</p>
|
||||||
<p id="noise_4_end">
|
<p id="noise_4_end">
|
||||||
...and you, being a <span class="tft">Copycat</span> as well, will <i>also</i> have to retaliate...
|
...and you, being a <span class="tft">Copycat</span> as well, will <i>also</i> have to retaliate...
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p id="noise_5">
|
<p id="noise_5">
|
||||||
And like the Hatfields and McCoys, or the Crips and Bloods,
|
Thus, like the Hatfields and McCoys,
|
||||||
these two <span class="tft">Copycats</span> will spiral into an endless feud of vengeance...
|
these two <span class="tft">Copycats</span> will spiral into an endless cycle of vengeance...
|
||||||
|
that started over a single mistake, long, long ago.
|
||||||
</p>
|
</p>
|
||||||
<p id="noise_5_end">
|
<p id="noise_5_end">
|
||||||
...that started over a <i>single</i> mistake, long forgotten.
|
Tragic. But now, are there <i>other</i> types of players who can...
|
||||||
<br><br>
|
|
||||||
How tragic. But now, are there other characters, types of players, who can...
|
|
||||||
</p>
|
</p>
|
||||||
<p id="noise_5_btn">
|
<p id="noise_5_btn">
|
||||||
...survive mistakes? →
|
...deal with mistakes? →
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p id="noise_characters">
|
<p id="noise_characters">
|
||||||
|
@ -647,22 +643,22 @@ Let's meet some new faces!
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p id="character_tf2t">
|
<p id="character_tf2t">
|
||||||
<b>COPYKITTEN:</b>
|
<b>COPYKITTEN:</b><br>
|
||||||
Hello! I'm like <span class="tft">Copycat</span>,
|
Hello! I'm like <span class="tft">Copycat</span>,
|
||||||
except I Cheat back only after you Cheat me twice in a row.
|
except I Cheat back only after you Cheat me twice in a row.
|
||||||
After all, the first one could be a mistake! Purrrrr
|
After all, the first one could be a mistake! Purrrrr
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p id="character_pavlov">
|
<p id="character_pavlov">
|
||||||
<b>SIMPLETON:</b>
|
<b>SIMPLETON:</b><br>
|
||||||
hi i try start cooperate. (unless i make mistake)
|
hi i try start cooperate.
|
||||||
if you cooperate back => good thing => i do same thing as last move. (even if it was mistake)
|
if you cooperate back, i do <i>same thing</i> as last move, even if it mistake.
|
||||||
if you cheat back => bad thing => i do opposite thing as last move. (even if it was mistake)
|
if you cheat back, i do <i>opposite thing</i> as last move, even if it mistake.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p id="character_random">
|
<p id="character_random">
|
||||||
<b>RANDOM:</b>
|
<b>RANDOM:</b><br>
|
||||||
<i>Monkey robot! Ninja pizza tacos! lol i'm so random</i>
|
<i>Monkey robot! Ninja pizza tacos! lol i'm so random</i><br>
|
||||||
(Just plays Cheat or Cooperate randomly with a 50/50 chance)
|
(Just plays Cheat or Cooperate randomly with a 50/50 chance)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -670,17 +666,42 @@ if you cheat back => bad thing => i do opposite thing as last move. (even if it
|
||||||
Alright, let's see how well these peeps do when they...
|
Alright, let's see how well these peeps do when they...
|
||||||
</p>
|
</p>
|
||||||
<p id="noise_characters_btn">
|
<p id="noise_characters_btn">
|
||||||
...play against each other →
|
...play in a tournament →
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<!-- fixed 5% chance: winner simpleton, then copykitten -->
|
<!-- fixed 5% chance: winner simpleton, then copykitten -->
|
||||||
<!-- Need to simulate first to write words, i dunno -->
|
<!-- Need to simulate first to write words, i dunno -->
|
||||||
|
<p id="noise_evo_1">
|
||||||
<!-- (Recap distrust) nonlinear barrier: from 0% to 5% to etc etc... -->
|
Noise Evolution, place your bets.
|
||||||
|
At <b>5% noise</b>
|
||||||
<!-- MIS-COMMUNICATION & OVER-PUNISHMENT in real life -->
|
</p>
|
||||||
|
<p id="noise_evo_2">
|
||||||
<!-- How's this all interact? Finally, the SANDBOX. -->
|
Try it, controls to the left
|
||||||
|
</p>
|
||||||
|
<p id="noise_evo_2_2">
|
||||||
|
Simpleton wins, but let's try...
|
||||||
|
</p>
|
||||||
|
<p id="noise_evo_3">
|
||||||
|
...different scenario, place your bets again.
|
||||||
|
</p>
|
||||||
|
<p id="noise_evo_4">
|
||||||
|
Try it, controls to the left, again
|
||||||
|
</p>
|
||||||
|
<p id="noise_evo_4_2">
|
||||||
|
Ooh, surprising... but is that true if there's a LOT of noise?
|
||||||
|
</p>
|
||||||
|
<p id="noise_evo_5">
|
||||||
|
GIVE A SLIDER FOR NOISE.
|
||||||
|
</p>
|
||||||
|
<p id="noise_evo_6">
|
||||||
|
Explain nonlinear barrier, and real life. Also sandbox.
|
||||||
|
</p>
|
||||||
|
<p id="noise_evo_6_continue">
|
||||||
|
Explain nonlinear barrier, and real life. Also sandbox.
|
||||||
|
</p>
|
||||||
|
<p id="noise_evo_6_btn">
|
||||||
|
Teaser for sandbox
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<!-- - - - - - - - - - - - - - - - - -->
|
<!-- - - - - - - - - - - - - - - - - -->
|
||||||
|
@ -847,26 +868,38 @@ detective
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p id="label_tf2t">
|
<p id="label_tf2t">Copykitten</p>
|
||||||
Copykitten
|
|
||||||
</p>
|
|
||||||
<p id="label_short_tf2t">
|
<p id="label_short_tf2t">
|
||||||
copykitten
|
copykitten
|
||||||
</p>
|
</p>
|
||||||
|
<p id="icon_tf2t">
|
||||||
<p id="label_pavlov">
|
<span class="tf2t">
|
||||||
Simpleton
|
<span class="icon"></span>
|
||||||
|
<span class="icon_label">Copykitten</span>
|
||||||
|
</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p id="label_pavlov">Simpleton</p>
|
||||||
<p id="label_short_pavlov">
|
<p id="label_short_pavlov">
|
||||||
simpleton
|
simpleton
|
||||||
</p>
|
</p>
|
||||||
|
<p id="icon_pavlov">
|
||||||
<p id="label_random">
|
<span class="pavlov">
|
||||||
Lol So Random
|
<span class="icon"></span>
|
||||||
|
<span class="icon_label">Simpleton</span>
|
||||||
|
</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p id="label_random">Random</p>
|
||||||
<p id="label_short_random">
|
<p id="label_short_random">
|
||||||
random
|
random
|
||||||
</p>
|
</p>
|
||||||
|
<p id="icon_random">
|
||||||
|
<span class="random">
|
||||||
|
<span class="icon"></span>
|
||||||
|
<span class="icon_label">Random</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<!-- - - - - - - - - - - - - - - - - -->
|
<!-- - - - - - - - - - - - - - - - - -->
|
||||||
|
@ -917,6 +950,10 @@ rules
|
||||||
next →
|
next →
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p id="label_continue">
|
||||||
|
continue
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<!-- - - - - - - - - - - - - - - - - -->
|
<!-- - - - - - - - - - - - - - - - - -->
|
||||||
<!-- - - - NAVIGATING CHAPTERS - - - -->
|
<!-- - - - NAVIGATING CHAPTERS - - - -->
|
||||||
|
|
Loading…
Reference in a new issue