|
| 1 | +# tally-ncsu-viz |
| 2 | + |
| 3 | + |
| 4 | + |
| 5 | +## Notes |
| 6 | + |
| 7 | +- Unity 2020.1.2f |
| 8 | +- Universal Render Pipeline (URP) |
| 9 | + |
| 10 | + |
| 11 | + |
| 12 | +## To do items |
| 13 | + |
| 14 | + |
| 15 | + |
| 16 | + |
| 17 | +### Setup |
| 18 | + |
| 19 | +- [x] Create repo |
| 20 | +- [x] Create Unity project (2020.1.2f1) |
| 21 | +- [x] [Git, Git LFS, SmartMerge](https://github.com/omundy/dig250-game-art-dev/blob/master/reference-sheets/Unity-Git.md) |
| 22 | +- [ ] Choose a name! @jdietrick what should it be? |
| 23 | + |
| 24 | + |
| 25 | + |
| 26 | + |
| 27 | + |
| 28 | +### Data & Timeline |
| 29 | + |
| 30 | +- [x] Data |
| 31 | + - [x] Update API with basic feed data |
| 32 | + - [x] Get Feed data in Unity |
| 33 | + - [x] Convert Feed data to JSON object |
| 34 | + - [x] Create EventManager |
| 35 | + - [x] Update API with detailed feed data |
| 36 | + - [x] Change format of feeds table to use `JSON_OBJECT()` |
| 37 | + - [x] Update feeds on website to use `eventData` object from each row |
| 38 | + - [x] Update API to use `eventData` object from each row |
| 39 | +- [x] Timeline |
| 40 | + - [x] Timeline class |
| 41 | + - [x] Create playback |
| 42 | + - [x] Coroutine to play event at specific time |
| 43 | +- [x] Export archive(s) |
| 44 | + |
| 45 | + |
| 46 | + |
| 47 | +### Playback History and Buffer automation |
| 48 | + |
| 49 | +- [ ] Create code that |
| 50 | + - [x] Automatically gets, or handles a lack of, new events |
| 51 | + - [x] Can consume data from the live API or local `JSON` files by changing dropdown option |
| 52 | + - [x] Potentially do it like: |
| 53 | + - [x] Use two C# collections (either a List or Dictionary) named `buffer` and a `history` that can be sorted by a date string. |
| 54 | + - [x] As the events are visualized, the event object is moved from the `buffer` to the `history`. |
| 55 | + - [x] If no (or not enough) new events are found on the next API call, then a "rewind" can happen where a chunk of events from history are placed back in the buffer and the "playhead" can restart at the end of the buffer (until the next check). |
| 56 | + - [ ] Prune players depending on max player allowed var |
| 57 | + - [ ] Merge new data / old data |
| 58 | + |
| 59 | + |
| 60 | + |
| 61 | +### Timeline visualization |
| 62 | + |
| 63 | +- [x] Build timeline Visualization that shows `history` and `buffer` |
| 64 | + - [x] "Playhead" that moves horizontally with the current event |
| 65 | + - [x] `History` and `buffer` are both visualized, with dots showing number in each collection, on either side |
| 66 | + - [x] Playhead moves right as new events happen, increasing the `history` and decreasing the size of the `buffer` |
| 67 | + - [x] As `buffer` is filled back up `history` is deleted and playhead resets to left. |
| 68 | + - [x] Use [Colors](https://github.com/sneakaway-studio/tally-api/blob/master/public/assets/css/sass/custom.scss) from the website palette in the interface |
| 69 | + |
| 70 | + |
| 71 | + |
| 72 | + |
| 73 | + |
| 74 | +### Interaction |
| 75 | + |
| 76 | +- [x] Add methods so viewer with a controller (keyboard, joystick, etc.) in the Visualization Studio **OR** someone using this with an iPad can: ✅ |
| 77 | + - [x] Select players |
| 78 | + - [x] Desktop - Use horiz/vert axis (controller) |
| 79 | + - [x] Mobile - Pinch/zoom |
| 80 | + - [x] Zoom camera into and follow player |
| 81 | + - [x] Desktop - Click |
| 82 | + - [x] Mobile - Touch |
| 83 | + - [x] While zoomed-in, display additional data on that player (from feed, username, etc.) |
| 84 | + - [x] Basic code |
| 85 | + - [x] Finish design @omundy |
| 86 | + - [x] Shift to different player |
| 87 | + - [x] Desktop - Arrow key (keyboard) and horiz/vert axis (controller) |
| 88 | + - [x] Mobile - Swipe |
| 89 | + |
| 90 | +### Exhibition mode |
| 91 | + |
| 92 | +- [x] After a period of no activity automatically |
| 93 | + - [x] Do nothing :-) |
| 94 | + |
| 95 | + |
| 96 | +### UI Controls / Testing / Debugging |
| 97 | + |
| 98 | +- [x] Build Feed data testing / monitor UI |
| 99 | + - [x] Dropdown to switch between live / local |
| 100 | + - [x] Dropdown to switch resolutions |
| 101 | + - [x] Button: playback restart |
| 102 | +- [ ] Add a screen with a key, statement, and link |
| 103 | + |
| 104 | + |
| 105 | + |
| 106 | +### Players |
| 107 | + |
| 108 | +- [ ] Data |
| 109 | + - [x] Use Feed data to build GameObjects and display in "Universe" |
| 110 | + - [x] Ensure players aren't added twice with new feed data |
| 111 | + - [x] Add player stats to API |
| 112 | + - [ ] Get player stats json data from server 👈 |
| 113 | + - [ ] Populate zoomed-in UI display 👈 |
| 114 | +- [x] Movement |
| 115 | + - [x] Create player (physics controlled) floating movement (Jellyfish?) |
| 116 | +- [ ] Actions (controlled from code) that visualize different event types on playback @jdietrick let's go through one last time and check these off |
| 117 | + - [x] 👆 Stream - Click |
| 118 | + - Player movement: `Pop_Shake_md.anim` |
| 119 | + - Sound: [Click.ogg](Assets/_Project/Sounds/Effects/Click.ogg) |
| 120 | + - Extra effects: expanding concentric rings similar to "[radar](https://www.provideocoalition.com/wp-content/uploads/Radar.gif)" effect but with better colors, maybe toned down color |
| 121 | + - [ ] 👍 Stream - Like |
| 122 | + - Player movement: Pulses bigger then glows, similar to "[light bulb](https://dribbble.com/shots/11115983-Creative-Block)" effect |
| 123 | + - Sound: [Like.ogg](Assets/_Project/Sounds/Effects/Like.ogg) |
| 124 | + - Extra effects: hearts particle system like trailer? |
| 125 | + - [ ] 🧨 Attack - awarded |
| 126 | + - Player movement: ? |
| 127 | + - Sound: [Attack.ogg](Assets/_Project/Sounds/Effects/Attack.ogg) |
| 128 | + - Extra effects: ? |
| 129 | + - [ ] 🏆 Badge - awarded (changes depending level) |
| 130 | + - Player movement: accelerates right along the x-axis or concentric circles emanating from player’s icon |
| 131 | + - Sound: [Badge.ogg](Assets/_Project/Sounds/Effects/Badge.ogg) |
| 132 | + - Extra effects: badge animation, drawn like "[this icon](https://dribbble.com/shots/5499453-Elevate)", use Miguel's icons in leaderboard's feed |
| 133 | + - [ ] 🍪 Consumable - found (changes depending type, stat) |
| 134 | + - Player movement: accelerates right along the x-axis or concentric circles emanating from player’s icon |
| 135 | + - Sound: [Consumable.ogg](Assets/_Project/Sounds/Effects/Consumable.ogg) |
| 136 | + - Extra effects: consumable animation, drawn like "[this icon](https://dribbble.com/shots/5499453-Elevate)", use Miguel's icons in leaderboard's feed |
| 137 | + - [ ] 😎 Disguise - awarded |
| 138 | + - Player movement: Opacity Shake, CSShake |
| 139 | + - Sound: [Disguise.ogg](Assets/_Project/Sounds/Effects/Disguise.ogg) **OR** Spell/magic sound like https://freesound.org/people/suntemple/sounds/241809/ |
| 140 | + - Extra effects: Concentric triangles like player passes through a prism OR disquise animation, drawn like "[this icon](https://dribbble.com/shots/5499453-Elevate)", use Miguel's icons in leaderboard's feed |
| 141 | + - [ ] 🕷️ Tracker - blocked |
| 142 | + - Player movement: ? |
| 143 | + - Sound: [Tracker.ogg](Assets/_Project/Sounds/Effects/Tracker.ogg) |
| 144 | + - Extra effects: tracker animation, drawn like "[this icon](https://dribbble.com/shots/5499453-Elevate)", use Miguel's icons in leaderboard's feed |
| 145 | + - [ ] 💥 Battle - In-progress |
| 146 | + - Player movement: "rumble" CSShake little shake |
| 147 | + - Sound: [Battle-In-Progress.ogg](Assets/_Project/Sounds/Effects/Battle-In-Progress.ogg) **OR** Light battle music (on zoomed in) |
| 148 | + - Extra effects: Rumble animation appears over player (dust clouds or too much?) |
| 149 | + - [ ] 💥 Battle - Win |
| 150 | + - Player movement: does a celebratory flip |
| 151 | + - Sound: [Battle-Win.ogg](Assets/_Project/Sounds/Effects/Battle-Win.ogg) |
| 152 | + - Extra effects: Show win screen from game OR tracker animation, drawn like "[this icon](https://dribbble.com/shots/5499453-Elevate)", use Miguel's icons in leaderboard's feed |
| 153 | + - [ ] 💥 Battle - Lost |
| 154 | + - Player movement: Y-value increases +50 px (down on screen) |
| 155 | + - Sound: [Battle-Lost.ogg](Assets/_Project/Sounds/Effects/Battle-Lost.ogg) |
| 156 | + - Extra effects: Goes grey or loses opacity |
| 157 | + - [ ] 🔢 Leaderboard position changes |
| 158 | + - Player movement: Higher in leaderboard —> longer tail |
| 159 | + - Sound: [Leaderboard.ogg](Assets/_Project/Sounds/Effects/Leaderboard.ogg) |
| 160 | + - Extra effects: Long tail inspiration: https://dribbble.com/shots/11776498-Dachshund-Skater |
| 161 | + |
| 162 | + |
| 163 | +Other ideas on movement: |
| 164 | +- CSShake hard shake |
| 165 | +- Rumble glitch GIF, see "[this pigeon](https://dribbble.com/shots/10793942-Pigeon-animation-logo)" |
| 166 | + |
| 167 | + |
| 168 | + |
| 169 | + |
| 170 | + |
| 171 | + |
| 172 | +### Effects |
| 173 | + |
| 174 | +- [ ] PlayerTrails |
| 175 | + - [x] Create "Nyan Cat" trails (particle system?) (some examples on [google](https://www.google.com/search?q=unity+trail+renderer&safe=off&rlz=1C5CHFA_enUS903US909&sxsrf=ALeKk038imz2qRqefBNgel1Fi7zgS7CyHw:1600720422081&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjo95GhjPvrAhUFqlkKHQFpAAQQ_AUoAnoECAwQBA&biw=1239&bih=766)) |
| 176 | + - [x] Monster Sprite animation slicing |
| 177 | + - [x] Add monster sprites to follow players ✅ |
| 178 | + - [x] Create animation for circular monsters @jdietrick |
| 179 | + - [x] Code new monster following ([circular](https://www.dropbox.com/s/6413o51d0aj057j/20201014-unity-new-particles.mp4?dl=0)) animation ✅ |
| 180 | + - [ ] Connect each trail to a product marketing category from streams using colors from the monster gradients 👈 |
| 181 | + - [ ] Add/remove trails based on streams updates 👈 |
| 182 | + - [ ] Add/remove monsters from data trail based on streams updates 👈 |
| 183 | +- [x] Anaglyph3D |
| 184 | + - [x] Add / test Anaglyph3D shader |
| 185 | +- [x] Marine Snow / Floating stars ✅ |
| 186 | + - [x] Use particle system to create small floating objects to give the visual display depth, for example: |
| 187 | + - [x] Snow similar to the [upside down](https://www.youtube.com/watch?v=LwmnNzY7gdo&ab_channel=AmbientWorlds) floaty bits |
| 188 | + - [x] Detritus in undersea life a.k.a "[marine snow](https://oceanservice.noaa.gov/facts/marinesnow.html)" |
| 189 | + - [x] [Stars in cosmos](https://penningdownheart.files.wordpress.com/2018/03/stars-3000x2000-purple-cosmos-hd-7172.jpg) |
| 190 | + |
| 191 | + |
| 192 | + |
| 193 | +### Lighting |
| 194 | + |
| 195 | +- [x] Change project to URP (Universal Render Pipeline) |
| 196 | +- [x] Setup [2D renderer and lights](https://www.youtube.com/watch?v=nkgGyO9VG54&t=53s&ab_channel=Brackeys) |
| 197 | +- [x] Point lights on GameObjects |
| 198 | +- [x] Light emitters on player trails |
| 199 | +- [x] Environmental lighting @jdietrick are we happy? |
| 200 | +- [x] Changes to lighting depending on time of day @jdietrick we need a visualization of this |
| 201 | +- [x] Add Fog @jdietrick should we do this? |
| 202 | + - [x] Examples [1](https://forum.unity.com/threads/how-can-i-control-fog-color-based-on-skybox-color.311706/), [2](https://carlburton.itch.io/islands), [3](https://magazine.renderosity.com/article/5204/taking-a-look-at-unity-fog) |
| 203 | +- [ ] Add texture to background @jdietrick ? |
| 204 | + |
| 205 | + |
| 206 | +## Delivery |
| 207 | + |
| 208 | +- [ ] Performance - [See this reference sheet which covers specifics on all of the below](https://github.com/omundy/dig250-game-art-dev/blob/master/reference-sheets/Unity-Performance.md) 👈 |
| 209 | + - [ ] CPU overhead? |
| 210 | + - [ ] Draw Calls? |
| 211 | + - [ ] Garbage Collection? |
| 212 | + - [ ] Bake lighting? |
| 213 | + - [ ] UI / Canvas |
| 214 | + - [ ] What else? |
| 215 | +- [ ] Test Logitech game controller |
| 216 | +- [ ] Create documentation |
| 217 | + - [x] Transform this README (using [past project](https://github.com/immersive-scholar/community-gardens) as a guide) into a page with |
| 218 | + - [x] Statement |
| 219 | + - [x] Details on the data |
| 220 | + - [x] Tech rider |
| 221 | + - [x] Credits (including "in the collection of" info and names of participants) |
| 222 | + - [ ] Add the above to our exhibitions spreadsheet |
| 223 | +- [ ] Testing: Platforms / Devices / Resolutions |
| 224 | + - [x] Do the security warnings go away if [we publish with Itch.io](https://sneakaway.studio/the-speed-of-thinking) – NO |
| 225 | + |
| 226 | +device | OS | resolution | aspect ratio | notes |
| 227 | +--- | --- | --- | --- | --- |
| 228 | +Desktop | Mac | 1920x1080 | 16:9 | --- |
| 229 | +Desktop | Windows | 1920x1080 | 16:9 | --- |
| 230 | +Immersion Theater | Windows? | 6816 x 2240 | 3.04:1 | --- |
| 231 | +Game Lab | Windows? | 4800 x 1080 | 4.44:1 | --- |
| 232 | +Visualization Studio | Windows? | 27053 x 2160 | 12.52:1 | * estimated |
| 233 | +iPad | iOS | 1536 x 2048 | 1.33 | iPad 3&4, Air 1&2, Mini 2&3 |
| 234 | + |
| 235 | + |
| 236 | + |
| 237 | + |
| 238 | + |
| 239 | + |
| 240 | + |
| 241 | + |
| 242 | + |
| 243 | + |
| 244 | +### Notes on the setup of this Unity project |
| 245 | + |
| 246 | +- [How to get Good Graphics in Unity](https://www.youtube.com/watch?v=owZneI02YOU&ab_channel=Brackeys) (8:13) |
| 247 | +- [REALTIME LIGHTING in Unity](https://www.youtube.com/watch?v=wwm98VdzD8s&ab_channel=Brackeys) (15:47) |
0 commit comments