-
Notifications
You must be signed in to change notification settings - Fork 1
/
about.txt
612 lines (412 loc) · 41.7 KB
/
about.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
/*
This is a remaking and remastering of Crosser, a product of SWEAT from the year 2000
in the code we will focus on clarity of code over optimization available through abstractions
the earliest versions of this remake are being created within OpenProcessing.org,
using P5JS, a project initiated and led by Lauren McCarthy,
enabling the P5Play library by Paolo Pedercini,
on an iPad Pro (2018) in Safari for iOS, and a MacBookPro (early 2019)
tested in both Safari and Chrome
it is hoped that it will run on a Raspberry Pi in Chromium
work began in earnest on this effort mid May of 2019
ORIGINAL TEAM AND WORK
Crosser was made by
Rafael Fajardo
Francisco Ortega
Miguel Tarango
Marco Ortega
Ryan Molloy
Tomás Márquez
Carmen Escobar
in El Paso, Texas, USA and Ciudad Juarez, Chihuahua, MEX
using the Apple abandoned software Cocoa (Design Release 2 or later) for Mac OS 7.6 - 9
and was later ported in Stagecast Creator for Mac OS X
======
2000.10.20
[this entry was found in a text file on an archive of an old hard drive]
Crosser & La Migra should be released into the public domain. Programmers should donate their time as a charitable, tax-deductible, contribution, as should the artists. The equipment should be provided by the state. Let us put the SWEAT imprimatur on it.
The games should be cross-platform, created in an open-source programming environment.
[Should we trade in lithographs pulled from sketches and screen shots as a self-supporting activity? T-shirts?]
[Java?
Unix?
C++?
Cocoa?
Stagecast?
Flash?]
[All proceeds from the sale of merchandise go into self-supporting activities.]
[Which production costs can be downloaded?]
[Sketches treated as art used to prepare documents! Get Grid Paper]
======
2019 10 15
have been finally able to spin up a local server on my laptop and have a version of the game work in Chrome browser. So development will proceed on MacBookPro 15-inch 2018 running Mac OS 10.14.6 Mojave. Google Chrome Version 77.0.3865.120 (Official Build) (64-bit). I had to use CDN versions of P5JS and P5Play to overcome error messages in the browser developer console. I had to comment out inclusion of the P5Sound library. The local server was the Python2 SimpleHTTPServer that comes bundled with MacOS.
======
2019 10 16
I have moved folders around on my hard drive as I'm trying to rationalize workflow, version control, and version numbering. The code used to test the local server came from Crosser Remastered version 0.07.01. OpenProcessing Sketch728290.zip is the source of this version. It will be the canonical fork henceforward. OpenProcessing Sketch760043.zip includes some changes to the functions for gamepad controller and, possibly, for the win condition. These will have to be merged into the canonical branch.
I have created folders/directories called lib, img, history, dependencies.
lib will hold the P5js, P5Sound, P5DOM, and P5play libraries. I hope to have the local server use these instead of those on the CDN (Content Delivery Network).
img will hold the images that will be loaded into the sprites.
history holds the .zip archives of Sketch728290 (v.0.07.01) and Sketch760043 (v.0.07.02) for the sake of archives.
dependencies will hold the .zip archives of the versions of p5.js and p5.play.js as downloaded from source on GitHub.
=======
2019 10 17
========
2019 10 22
a couple of days ago I downloaded Node.js to my laptop and tried to spin up http-server. I couldn't get it running. I reread some reference material from the P5.JS wiki on github and was able to serve mySketch.js (Crosser) locally, still relying on the CDN for p5.js and p5.play.js. I have not yet attempted to use urls that point to localhost. that will come soon. The version of Node.js I downloaded is 10.16.3 LTS from nodejs.org
=======
2019 10 23
In index.html: I have commented out the CDN calls to to the libraries for P5.JS and P5.Play.JS. I have written script tags that use absolute paths as URLs http://localhost/... The attempt without reference to port failed, but the attempt with the port number (8080 in this case) worked. I continue to get an error message with respect to "Animation" and to "camera"
======
2019 10 30
I have had the Node.js server running in the background for a week on my development laptop. It has been running in the background. Since Javascript is a client-side language the last call to the server is from last week. The Chrome browser window continues to run the sketch whenever I bring it to the foreground. Like a lightbulb in a refrigerator I cannot tell if it is on when it is in the background. I will refresh the browser window and likely see fresh calls to the server. ... Yup. THe server log shows "GET" calls with today's date and time.
Now I have to remember how to set this dependency up and figure out version control. There is a downloadable version of GIT that promises local control and change log. I could use GitHub or GitLab, but I don't know if that creates too much overhead. The latter two, at least, would be shareable if I end up needing help.
In the last seven days I have also finalized artwork for the catalog and provided reference material for captions which included release dates for the prior versions of Crosser and La Migra. I was able to find the first mention of Cocoa on the TidBits.com website. They have kept an archive of all their entries. There is also mention of Stagecast Creator there as they followed the development of that software.
I looked it up on Wikipedia and this project would be considered rewriting Crosser and La Migra to re-implement existing functionality. Refactoring uses existing code. Rewriting does not use any of the existing code. Since I don't have access to the original source code then this is a rewrite.
It may be best to use GitHub as the version control for this project so that I can call on Paolo Pedercini if needed. I can also clone the p5.js and p5.play.js repositories to keep a version in history. (I'm not sure about that, though)
======
2019 11 07
Yesterday I gathered the visual art assets for La Migra into a folder/directory tentatively called img-lamigra. The number of images is far larger than for Crosser, and so I thought it might be beneficial to use sprite sheets, which would gather several images into a single image file that would be referenced by and loaded with the sprite elements of the P5.Play.JS library. Today I reviewed how the library handles sprite sheets. At first glance it seems that it wont' work to simplify the contents of the img-lamigra folder.
I grabbed the images from my hard drive called storage. File path: storage/Storage/_Arid/Visual Work/La Migra Archive. Some of the files are Apple PICT (or PCT?) files which I could open with Preview. GIMP would not open them. The old Photoshop files could be opened by GIMP, however. I resaved some of these as native GIMP files XCF.
Yesterday I also renamed the mySketch file to reflect the content. It is now crosser000800.js. This means that it is version 00.08.00 of the crosser rewrite. This harmonizes the version numbering that began with OpenProcessing.org. I also created a template file for lamigra000000.js
Today; I also added a line of code to the draw() function so that it would draw a white background every frame. I corrected the same instruction in the setup() function which had the color value as 256, which was wrong. In addition, I moved the snes sprite to the y-position of 448 so that its top edge aligns with the bottom edge of the map, and the mouse click commands realign with the artwork.
I still am reticent to start a GitHub repository for the project. Microsoft has done some objectionable things in the last week with GitHub accounts that may have some involvment in China, and Hong Kong in particular. Esteban thinks that GitHub will be the fastest way for me to solicit help if I need it. I remain uneasy. The Atom text editor in which I am writing this has GitHub integration. I also have used the GitHub desktop app in the past for projects written in Processing. GitKraken also has GitHub integration. I have a wealth of choices at my fingertips.
The Node.js http-server stopped live updating the Chrome browser tap that I have had open for the last month. This should only have a consequence for development and maintenance, and not for exhibition. I restarted the server and will see if it resumes live updates monday. (I have to be on campus for meetings tomorrow). I don't know if it's a Chrome issue or an Atom issue, or Node.js issue.
I found the la-migra-report.html which was generated by Stagecast Creator as an abstract text-based interpretation of the visual program. I copied it into the history folder of this project. I also moved the copy of the crosser-report.html into the history folder.
I placed a couple of versions a favicon into the root folder of the project.
It never feels like I'm actually getting anything done.
Denver Art Museum has arranged to come to the studio and interview me on December 5, 2019.
======
2019 11 14
from handwritten journal:
explored large scale states to envision using p5.SceneManager.JS with the games.
Overall State(s): not playing
choosing to play Crosser
choosing to play La Migra
Crosser state(s): not playing (startup screen with start button)
playing Crosser
win Crosser (with a start or play again button)
LaMigra state(s): not playing (startup screen with start or go to work button)
playing La Migra
lose La Migra
win La Migra
======
2019 11 23
this file replaces 'about.js' going forward.
It has been snowing for the last few days. I've been working from home. I have been keeping a handwritten journal in parallel to this file as devLog. I will back fill this file with entries from the handwritten one as time permits.
Today, I have created a local .git repository to track changes for the files. I am using the built-in Atom git functionality. I remain hesitant to use gitHub due to Microsoft's ties to ICE.
In setting up the local git repository I may have made some clumsy rookie mistakes. I created a folder called _git in my _code folder on my laptop. I then created a repository called borderdiptychReMaster within that folder. I then tried to copy the index.html file from crosserReMaster into borderdiptychReMaster. I experienced a bunch of unexpected behaviors that stem from my lack of familiarity with how git behaves with local directories. I may abandon the borderdiptychReMaster repository moving forward.
The git protocol seems to ignore the .txt, or at least it's not reading this new paragraph as a change to stage.
======
2019 11 25
I went to the studio with the intention of working out the logic for what may become 'main.js' first with if-then statements, and then -- maybe -- with P5.SceneManager.JS. I had to handle some paperwork for school and then got a migraine after lunch. I wrote in the handwritten journal during lunch. The rest of the day was cancelled.
======
2019 11 26
Today is a snow day for Denver, with much of the city closing down due to a weather system that came in from the NorthWest over night. I have brought my laptop to the apartment to see if I can make progress on the code. This .txt file is not being tracked by git which confuses me.
My head still aches when I look at the laptop screen.
I turned off the http-server yesterday. I want to see if I can get live-server working locally. Both are Node.JS packages that I have downloaded.
Yesterday and today there are discussions on [GAMESNETWORK] list serve from Tampere, Finland, about games preservation. I have opened tabs on Safari to see if there are places to archive this code.
I added code for the sprites and the pipes in lamigra000000.js
I renamed several of the files in img-lamigra folder, adding leading zeroes
======
2019 11 30
I took a few days off from coding to crochet and to give thanks with our close friends in Denver.
Today I added the remainder of the Cacahuates sprite images. I found some errors in the images themselves, issues (in programming speak) that will need to be addressed/fixed:
nita images are not all of uniform size and so she bounces around in two of her animations
x-rodar has images without transparent backgrounds
marcia (I think) also has one image that is not transparent -- or partially.
I haven't figured out why Atom's git has stopped tracking any changes. I wonder if I pressed a key-combination that turned off tracking.
In the last few days I have seen more projects that I admire continue to use gitHub without any mention of the relationship between Microsoft and ICE.
There are projects that may contribute to the discoverability of this code that make use of gitHub. Scott Howard asked if I could make a statement in this project about ICE and so still use gitHub to archive this code.
Lauren McCarthy included a sentence in her Medium.com post about the future of P5.JS to the effect that after the 1.0 release that the Processing Foundation will no longer support (ongoing development) of P5.JS. This effectively is the end of the project, I think. Eventually there will be changes to Javascript itself that will break P5.JS projects. It feels like I have -- once again -- chosen an end-of-life programming environment. I hope I am wrong.
I resolved the transparency issues with marcia, x-rodar, and nita.
I resolved the size issue with nita.
I used GIMP
======
2019 12 01
I will need to resize/resample/upsample each image using nearest neighbor interpolation, progressively, in 2x multiples.
I have added the sprites for the deportation center and the repatriation center.
This reveals that the background image(s) need editing in the upper-right and lower-right corners. There is a piece of artwork still on storage/Storage that would be 512 x 32 pixels and belongs along the bottom of the screen.
Also, there needs to be pixels that represent a shadow cast by the deportation and repatriation gates.
I resolved the transparency of avisocounter and avisocontador
======
2019 12 02
I retrieved some art from
storage/Storage/archive of older drives/visual work/la migra archive/
in it I found more complete images for the background and for the porton/gate.
The background vertical dimension increases to accomodate the pipes.
The porton/gate each have two frames or two states to signal "teleportation." The default state is passive, the active state adds a yellow glow. I don't know how to time this logic in P5.JS.
I converted these from .gif to .png for the sake of consistency in GIMP
======
2019 12 03
I just remembered why I had transparent shadow sprites along the right edge of the canvas. The logic in Cocoa for a Cacahuate who was captured was that they proceed to the right then down. This required a nested if-then such that if you cannot move right, then move down. The shadow provided a collider that would prevent a character from getting stuck on top of the deportacioncenter
There will be another complex logic to recreate the deportacioncenter queue that occured when there was a repatriated sprite standing in front of the repatriationcenter. This was an unplanned behaviour that resulted in interesting game situations.
======
2019 12 06
I added the animation frames for deportacioncenter and repatriationcenter and pipes. I will have to redo the transparency on the frames for the gates.
I looked at the possibility of using actual Nintendo SNES controllers. They were made hardy. Adafruit has instructions for converting a 3rd party clone of the SNES controller to USB with the addition of an ATMEGA Teensy programmed to read button pushes and send keystrokes through USB. This seems to be more trouble than using the USB controllers that are already on the market and either keymapping with the software I already have, or using the controller library built into Javascript.
======
2019 12 10
Yesterday I had a scare. The computer froze and became unresponsive. It also took a while for it to reboot, once I found out how to do so.
Once rebooted the git functionality in Atom was working again and so I staged and committed a week worth of changes.
Today I changed some art and the commit messages reflect those changes.
======
2019 12 18
In the time since last note I bought a backup hard drive, made a backup on a thumb drive, and uploaded project so far to gitHub as border diptych remaster.
I have received the backup hard drive and yesterday I made the first backup using time machine.
Today so far I have made some unit tests to see if I can figure out how to use keyCode for arrow keys. I cannot.
I looked at the PS3 controller example that I downloaded last month to see if I can understand it. I will need to add it to the dependencies. It uses the DOM library.
Atom was updated today. 1.42.0 x64
Mac OS updated some security updates.
https://html5gamepad.com/
my generic USB NES gamepad:
usb gamepad (Vendor: 0810 Product: e501)
Axis 0 (x axis) values -1 -0.00392 1 so digital
Axis 1 (y axis) values -1 up -0.00392 1 down
B0 is the B button values 0 1
B1 is the A button values 0 1
B8 is the SELECT button values 0 1
B9 is the START button values 0 1
Exlene USB SNES gamepad:
Axis 0 (x axis) unresponsive lists a value as -0.99216
Axis 1 (y axis) values -1 up -0.00392 1 down
B0 is the A button values 0 1
B1 is the B button values 0 1
B2 is the X button values 0 1
B3 is the Y button values 0 1
B4 is the left shoulder
B5 is the right shoulder
B8 is the SELECT
B9 is the START
======
2019 12 19
I spent some time studying the API for the html5gamepad.
I had found some sample code on the web that was repeated in editor.p5js.org
and in OpenProcessing.org.
I copied and pasted some of this sample code into Crosser.
I was able to get the sample code to move carlosmoreno around the screen.
I was not able to get the sample code to respond to A, B, Select, & Start buttons.
That may have go wait until after Xmas. My sons arrive tomorrow and the day after.
I'll upload this file and the modified Crosser file to gitHub and backup the project to the USB stick.
======
2020 01 08
I haven't been in the studio to work on games for ~three weeks. I made a very quick visit to San Antonio to visit my brother and parents. My children visited us in Denver and we shared Christmas celebrations. I then fell down and hit my head on the 27th of December and suffered a concussion. I have been taking it easy since. I think I will need help to finish.
Yesterday I began teaching again, and so my time is compromised going forward.
Today I puzzled through the buttons on the SNES and the NES controllers.
I managed to solve the issue with reading the buttons. In the entry above, and in the unchanged code for crosser000801.js, I test for 'values' of each button. This is incorrect but did not cause a syntax error, hence the mystery. The correct test is for 'value' of each button. I had to reread the webpage 'https://html5gamepad.com/for-developers' to notice this very small and powerful error.
I am now able to read all of the buttons on both the NES and the SNES.
I still cannot read the x-axis on the SNES. I have ordered two new controllers manufactured by Buffalo (or iBuffalo) that are reputed to be made with higher standards. I ordered these from CanaKit.com. Buffalo also makes a NES controller, but it is very expensive on Amazon.com -- ~100USD. Also it doesn't retain the traditional aesthetics.
I am fatiguing quickly during this period of brain/mind recovery and so I think I have to call today successful and move on.
I have the new, functioning code in main.js which has been committed locally and will be committed to gitHub.
======
2020 01 18
In the last 10 days:
I have had ups and downs with respect to my concussion. I have also had meetings that have called me onto campus daily. On Wednesday the 15th my dizziness was overwhelming and so I stayed home and wrote my doctor. Yesterday my doctor recommended that I come in to be checked out. I have an appointment this coming Wednesday.
I have received the Buffalo Classic USB Gamepad from CanaKit.
I have asked Chris GauthierDickey and Scott Leutenegger for help finishing the programming of the project.
Today so far:
I have used the https://html5gamepad.com/ website to test and map the buttons for the Buffalo Classic USB Gamepad. The mapping is:
USB,2-axis 8-button gamepad (STANDARD GAMEPAD Vendor: 0583 Product: 2060)
The axes are also mapped to buttons, it seems, and the "Turbo" and "Clear" buttons are not recognized by -- or mapped by -- the html5 library
The mapping of this device is considered STANDARD
d-pad
Axis-0: 0.00392 to -1.00000 (x-axis leftward)
also, mapped to button-14, 0 1
Axis-0: 0.00392 to 1.00000 (x-axis in rightward)
also, mapped to button-15, 0 1
Axis-1: 0.00392 to -1.00000 (y-axis downward)
also, mapped to button-13, 0 1
Axis-1: 0.00392 to 1.00000 (y-axis upward)
also, mapped to button-12, 0 1
B0: SNES B button 0 1
B1: SNES A button 0 1
B2: SNES Y button 0 1
B3: SNES X button 0 1
B4: SNES Left Shoulder button 0 1
B5: SNES Right Shoulder button 0 1
B6: SNES Left Shoulder button 0 1 (this is redundant circuit?)
B7: SNES Right Shoulder button 0 1 (redundant circuit?)
B8: SNES Select button 0 1
B9: SNES Start Button 0 1
B10: no mapping detected
B11: no mapping detected
B12: Axis-1, y-axis upward 0 1 (redundant? but useful)
B13: Axis-1, y-axis downward 0 1 (redundant? but useful)
B14: Axis-0, x-axis leftward 0 1 (redundant? but useful)
B15: Axis-0, x-axis rightward 0 1 (redundant? but useful)
The d-pad is digital, not analog, on this device .
The redundant mapping of the d-pad to buttons is useful Crosser and La Migra because the gamepad object value is simple 0 or 1 rather than a floating point.
There is logic available to isolate a single button push rather than return true for multiple frames because the cycles are so fast:
https://developer.mozilla.org/en-US/docs/Games/Techniques/Controls_Gamepad_API
It creates a "newPress" boolean variable to execute new presses instead of press-and-hold situations.
NOTE: I have updated Atom.app to 1.43
======
2020 01 22
On Saturday 2020 01 18 ChrisGD and I met to orient him to the state of the project.
Today: I uploaded the changes I made on Saturday to crosser000801.js to gitHub.
I have closed the existing project in Atom and opened it from gitHub using the gitHub Desktop App for Mac OS and linked it to Atom. This means that I cloned the repository from gitHub and created a new folder with that name locally on my hard drive "border-games-remaster" still in the "P5xJS" directory locally. If this works then I will abandon the other folder moving forward. I can continue to edit my code using Atom with both git and gitHub tabs working for me.
I have opened gitKraken and as a reflex allowed it to update. This seems to have changed the terms of use and so it now has a time-limited availability for free. This is why I looked to the gitHub Desktop App.
npm says there is new minor version. I will ignore it for now.
I have restarted the npm live-server on the new local directory.
I have to orient Scott Leutenegger to the project and try to organize the work.
======
2020 05 19
the changes have been recorded in the gitHub changelog. I want to know how to export these.
We have been working from home since 2020 03 18
Yesterday gitHub desktop had an update that I uploaded.
Today Atom has an update that I uploaded. It is now 1.47.0
2020 07 28
last month we were invited to add Crosser & La Migra to an online component of Ars Electronica 2020. Ars Electronica will only need browser-based and keyboard+mouse UI.
In the last couple of weeks I have had communication with DAM who have realized that we will need to provide a touchless interface for Crosser & La Migra when they are exhibited. The new target exhibition date is 2021 03. For this we are looking at the Leap Motion Controller. I wonder if the clumsiness of the interface can survive in a touchless environment.
I have renamed the repository on gitHub to Border-Games-rewrite
I have rebased the repository on gitHub to default to main branch
2020 08 11
just now updated my development environment to Atom version 1.50 x64
In the last few weeks I have added code to the La Migra shell such that the cacahuates, the group of non-player-characters, are added to the renderQueue[]; and, the player character has movement and can fling handcuffs.
I modified the renderQueue[] function updateSprite() to allow for idle cases. I have not back-propagated this modification to crosser.js
I have spent several days trying to figure out the best place to test the y position of the esposas/cuffs so that they disappear at the border.
I still have to add collision detection to La Migra.
I have worked to edit the HTML files that frame the games. I grabbed legacy art for buttons and dropped them into the appropriate DIVs in the html files. I changed all of the URLs referenced in html and js from absolute to relative paths so as to ease uploading to server. I confirmed that the relative paths work with our localhost on node.js server
Because Ars Electronica requires a web presentation for novices, it may be that I need to bring back the UI Form html elements that Chris had explored. That had been deprecated for DAM because it required a mouse click that couldn't be mapped to a SNES gamepad through JS and (AND) still work as a d-pad. It had to be one or the other.
The DAM installation will be March 2021 at the earliest, and will now have to be touchless. I proposed several solutions, but the most likely will be Leap Motion Controller. It has a JS library and several proof-of-concept examples with P5.js that I have forked in the editor.
I was asked once again about hardware specs for DAM. I had been told that they had particular hardware in their inventory and had been designing toward that specification. They have been instructed by their Exec Director to use all new hardware in the newly remodeled spaces in the Martin/Ponti building. I offered a set of possibilities with price-points. I mentioned the cool little windows machine I have from MinisForum. They were intrigues. I tried to load Node.JS and NPM and caused an infinite loop. I attempted a clean install of Windows 10. The links provided by MinisForum didn't work and so I downloaded a version from Microsoft. It did not load the WiFi drivers and so I'm in the middle of learning how to load only those drivers and ensure they are appropriate for the onboard hardware. It may not be the way to go. I aspire to serve the games via Raspberry Pi. However, the need for a contactless or touchless interface during pandemic times will likely demand a system with higher hardware specifications in the realm of a Mac Mini or a NUC, as a baseline.
It feels like I have to have contingency UIs for all possible cases.
I pruned all of my branches except for main, and created a new branch called ArsElectronica, where I have been pushing my experiments for the last week. I think I have to merge everything I have for the last two weeks to main now.
======
2020 08 12
just now I figured out how to fix carlosmoreno in crosser.js. I had broken him when I had added him to the renderQueue[]. He still isn't perfect, but he is better. Since he now honors is place on the renderQueue[] the player has to button mash to get him to respond. This more closely approximates the original.
I should take the copy of keyTyped() in controller.js and put it into the bottom of main.js. I had put it there thinking it would be a bit of shared code. This was a delusion. Each of the .js files responds to keystrokes differently. It's too much work and creates too tight and interdependence to share this code.
======
2020 09 17
Ars Electronica was from September 9-16 online this year. I had to leave the games as a work in progress in the Garden del Rio Grande. I will put language that reflects that in the html pages that are live there.
Today I returned to thinking about the recoding of the games. I spent the last month prepping the beginning of the fall quarter of teaching. It was a grind and I continue to be anxious about it.
======
2021 07 19
I spent the last ten months teaching and grieving the death of my father from COVID-19. Today reopened components of the project to reorient myself. We have an opening date late in October of 2021. I have not heard from the DAM since the anouncement of the opening date, and a request to update the terms of our loan of the work.
In the interim we have also moved the studio.
Today I opened the UltraLeap website to find they have updated the SDK to only work with Windows 10 and to work only in an idiom of C that they have defined. They do offer legacy SDKs that will still work with JS. I thought I had downloaded their JS dev kit available last year, but I can't find it in the project folders at first glance.
I have to ensure that this note is committed to Main.
======
2021 07 23
I spent a couple of hours in the last few days refamiliarizing myself with the project files and organization. I fixed some typos and committed them to a new branch called simply RAF.
I'm still puzzling the interface(s) needed for installation, for online with keyboard, and online with touch.
In December of 2020 I outlined the states that will be invoked by the interface.
For installation we need an Idle/Attract/Not Playing state (0), a Selecting state (1) with two possible sub-states - selecting Crosser or selecting La Migra - which each will launch the respective URL. Selecting can be invoked from Idle and from within the playing state of each game. I don't know if this means that there needs to be a Playing state (2) at the top level.
This state machine design is feeling opaque to me.
======
2021 07 27
The last couple of days I edited and added comments to lamigra.js to help me understand the render queue better with the hopes of figuring out where the collision detection should go.
I also realized that it would be simpler to invoke index.html any time a player wishes to select which game to play. I have modified the keyReleased() function in crosser.js and lamigra.js to that end.
======
2021 08 03
I have closed some issues on gitHub and opened many more. These have been focused on the collision detections that need to be added to lamigra.js. I've tried to be detailed, but see that I'm fatiguing and getting sloppy so I'm going to pursue another task for a while.
======
2021 08 19
Chris and I have been working on completing Crosser.
I have been asked if we still want to use the iBuffalo Classic SNES controller. The answer is "No, not anymore." We have solved how to invoke URLs from within the JavaScript and so don't need a mouse and mouse-click. This allows us to reduce the number of user control elements. We can now use an NES-style gamepad/controller.
We are using something similar to: https://www.amazon.com/Controller-suily-Joystick-RetroPie-Emulators/dp/B07M7SYX11/
Chris has been working on fixing and refining the animations in Crosser. This caused a hiccup in the placement of some of the sprites in the river.
I've been distracted by home maintenance and student needs.
======
2021 08 23
It looks as though we will be running a Dell micro pc: https://www.dell.com/en-us/work/shop/cty/pdp/spd/optiplex-3080-micro
I've been deleting cruft. Chris is trying to figure out why the NES controller always reloads as though it is caching an "h" key.
======
2021 08 26
gonna try to be finished by September 07, 2021 and install that week.
Chrome will depend on Kiosk browser extention by the Cook Company
https://chrome.google.com/webstore/detail/kiosk/afhcomalholahplbjhnmahkoekoijban/
https://kiosk.cook.company/
which I tested today and set to a specific URL
http://localhost:8080/
and which can be exited via an escape key press on the keyboard.
a mouse is needed at first to focus the kiosk.
The Denver Art Museum says it will use this ViewSonic LCD panel:
https://www.viewsonic.com/us/cde4320.html#specs
which states its resolution as
3840 px x 2160 px (nominally 4K)
the Dell PC has a list of resolutions on another monitor that include:
1280 px x 768 px
1280 px x 720 px
1280 px x 600 px
I believe that 1280 x 720 is the sweet spot for our purposes.
1280 x 3 = 3840
720 x 3 = 2160
======
2021 09 01
Chris finished the code for crosser.js on 2021 08 27, and for lamigra.js on 2021 08 31. We celebrated with tacos at Tacos El Metate on University Ave. before testing the install requirements on a windows 10 device in his office at DU. Along the way he also made sure that main.js had gamepad controller code that worked consistently with the other two files. I worked on the idle animation for main.js and tweaked instruction lines. I communicated with Eric and Cordelia that the games are open for beta testing online at http://sudor.org/betatest . I'm wondering what I might have missed in the CSS that could improve how everything looks. I'm also wondering how much time it would take to remaster or upsample the artwork so that it's nominally 4K resolution. There are some places in the code where we use explicit x and y values and so those would break.
I've continued to move cruft from the /public directory. Cruft is the term of art for the accreta of programming iteratively. Cruft is the sedimentary silt that settles in the code. I'm using it to talk about the lines of code that are commented out and superceded by other lines. They are artworks that we don't actually use sitting in the directories on the server.
Chris is going to try and figure out how to refine a couple of the animations in lamigra.js. The car doesn't show us all the frames. And neither do the cuffs. He got to a point last night where he broke something and so decided to step back and try again today. I'm going to see what I might be able to do that's useful.
======
2021 09 12
I have spun up my MinisForum cpu and have downloaded Node.js 14.17.6 LTS to its Windows 10 OS. I have installed Chrome. I'm going to leave it running as a testing device. As a reminder: "The version of Node.js I downloaded is 10.16.3 LTS from nodejs.org" for my develpment machine. I am installing it into C:\Program Files\nodejs\ It is also going to install Chocolatey which Chris had mentioned to me when we first tested on his windows machine a couple of weeks ago. Chocolatey is a Package Manager and may be a dependency for installation. Node.js depends on Python and Visual Studio Build Tools which require "about 3 Gb of free disk space". The MinisForum has extemely limited space available. Chocolatey created a log at C:\ProgramData\chocolatey\logs\chocolatey.log
I want to install the live-server package on the Windows10 machine:
"https://nodejs.dev/learn/where-does-npm-install-the-packages"
"https://www.npmjs.com/package/live-server"
"https://gist.github.com/donmccurdy/20fb112949324c92c5e8"
"https://github.com/tapio/live-server"
"https://docs.npmjs.com/downloading-and-installing-node-js-and-npm"
remembering how to load npm, instructions say to do it in Windows PowerShell rather than within the Node.js console.
this has been done and npm version 7.23.0 has been loaded onto the MinisForum
"https://docs.npmjs.com/downloading-and-installing-packages-locally"
"https://docs.npmjs.com/downloading-and-installing-packages-globally"
I've installed live-server package globally on MinisForum. A "moderate severity" warning message was returned suggesting I run 'npm audit' for details.
loaded gitHub desktop for Windows on MinisForum.
logged in and cloned repository into
"C:\Users\Rafael Fajardo\Documents\GitHub\border-games-rewrite"
it occupies ~550MB
loaded Atom v1.58.0 for Windows
my version of the MinisForum has nominally 32GB. It was filled up before Atom was loaded and so I have to free up some space for Atom. Or, I could not load Atom and not use this as a dev environment. I don't remember what else is loaded on this machine. There are a few 64GB MinisForum devices left in the market. There is also a setting, "Storage Sense" that claims it can free up space automatically in the background. I'm going to try it. Nothing changed, so there was no fat to trim. I'm going to see if I can delete some things manually without causing damage. I need a backup scheme for this device.
There isn't anything I can delete.
Tried running live-server and got an error.
Options: WAMP server package from SourceForge; or, SimpleHTTPServer by Python. Python is already onboard. Python3.9.7 is installed
The Suily branded controller is not working in Chrome on my remotely served games on the MinisForum device. Our OG NES controller does work.
Suily NES controller works in Edge browser with remote served games. So does our OG NES controller.
"https://docs.microsoft.com/en-us/deployedge/microsoft-edge-configure-kiosk-mode"
"https://docs.microsoft.com/en-us/deployedge/microsoft-edge-kiosk-mode-transition-plan"
"https://docs.microsoft.com/en-us/deployedge/microsoft-edge-configure-kiosk-mode#use-kiosk-mode-features"
MinisForum has Edge v 93.0.961.44 installed
in April of 2021 there is a scheduled deprecation of Edge legacy in favor of Edge on Chromium.
"https://techcommunity.microsoft.com/t5/microsoft-365-blog/new-microsoft-edge-to-replace-microsoft-edge-legacy-with-april-s/ba-p/2114224"
if the logos match up with the ones on this blog post, then I have already updated the version of Edge when I fired up the MinisForum this morning.
There is a post detailing changes to Edge Kiosk mode:
"https://blogs.windows.com/msedgedev/2021/02/05/what-you-need-to-know-about-kiosk-mode-when-support-for-microsoft-edge-legacy-ends/"
Edge Legacy version 41.16299.1004.0 remains on the MinisForum and can be run side by side. The legacy kiosk mode may be viable.
Updates to windows were downloaded upon startup yesterday and await a reboot to complete installation. This may hide/erase Edge Legacy.
"https://docs.microsoft.com/en-us/previous-versions/windows/edge-legacy/microsoft-edge-kiosk-mode-deploy"
I have the option to uninstall the updates to Windows10 20H2. I think the last time this device crashed was when I was going to allow updates.
I uninstalled the pending updates. Hopefully it will open some space. This is a very slow process and it may end up breaking the device.
======
2022 09 12
In response to a request from Anderson Ranch Art Center for my upcoming Visiting Artist gig, I explored spinning up the Minisforum computer. The Kiosk enabled Chrome browser is loaded on it and is set to look for localhost:8080.
I have spent the last two days updating the operating system to the latest Windows 10 specs. It required connecting an external hard drive so that there would be sufficient space to shuffle in the changes. I have also tested system running crosser and la migra from the remote server Sudor.org/betatest/. I have allowed the deletion of the older versions of the OS on this device to free up space.
I have revisited spinning up a local server and re-read the above entry from one year ago. I have come to understand that the Python error from last year is because the server module was renamed in version 3+ to "http.server" and so LiveHTTPServer returns an error on newer versions of Python.
I opened Windows PowerShell on the Minisforum and changed directories to the cloned GitHub repository C: RafaelFajardo\Documents\GitHub\...\public and invoked python to confirm version number and then invoked http.server. The default port is 8000. I have to either learn to invoke port 8080 or change the homepage port on the Kiosk enabled Chrome browser.
In the last year I also investigated the use of another, newer, Minisforum for a permanent installation of Migraciones. I relied on the wisdom and experience of Tom Sepe from his Show Machine Setup instructions on https://tomsepe.com/sepeblog/2020/11/08/show-machine-setup-for-permanent-and-temporary-art-installations-windows-10/. This will be helpful if I wish to turn this, older, Minisforum CPU into a dedicated locally served device for Crosser & La Migra.
ToDo if so: autoboot into powershell, create script to invoke python server at appropriate directory and port, autostartup Chrome in Kiosk mode with fullscreen and no browser UI, test to ensure SNES gamepad works.
======
2023 03 27
Last week I was informed that ReVisión: Art In The Americas will travel too Minneapolis Institute for/of Art (MIA). I have to author the technical specifications for exhibition there. It should, also, travel to two other locations and so getting it right is important.
Crosser and La Migra will also be shown at SUMA from June to September of this year. I will install this version personally. They will both, likely, need the same specifications.
I have fired up both the MinisForum device and a Raspberry Pi to test the technical specifications.
I have left a note on the MinisForum with the command line directions for launching the built-in python3 localhost server:
$ directory/public/ python -m http.server
need to remember how to set the port and the directory for local host.
need to remember the version(s) of browser that support kiosk mode.
need to remember how to set autoboot or chron jobs from Migraciones
need to set new CSS standards for correct display resolutions
I have Chrome browser running in Kiosk mode on the MinisForum. It no longer finds the localhost server. I may have set the port differently last year than I did today. I need to see if I can disable the Kiosk mode and edit the parameters for localhost. Also, as mentioned above, I need to set the correct, matching, port.
as a reminder:
How do I put Chrome in kiosk mode?
Chrome Kiosk Mode (from TechShift.net)
Open up Chrome’s settings.
Under “Users” click “Add new user.”
Give the new profile a name and picture.
Right-click the newly-created shortcut and select “Properties.”
In the “Target” field, add “–kiosk” (no quotes) to the end.
Click “Apply.”
Chrome Kiosk Mode (from SuiteBriar.com blog)
On Chrome For Windows
Most Chrome users should have a Chrome shortcut on their desktop, but if you do not have one already then you will need to create one.
Next right-click on your Chrome shortcut and select "Properties".
After doing so you will need to click the "Shortcut" tab as well as the kiosk command at the end of the Target field.
You will have the option to add a specific URL to be launched in Kiosk Mode and will become the only app or site available while in Kiosk Mode.
=======
*/