A student devlog from Colab at AUT. Check out my art at omnari.tumblr.com, or my full portfolio at omnariart.com!
Don't wanna be here? Send us removal request.
Text
City Set Sail: Statement References
Scott, R. (Director). (1982, June 25). Blade Runner
Erhardt, Stefan, et al. “OpenTopoMap - Topographische Karten aus OpenStreetMap.” OpenTopoMap - Topographische Karten aus OpenStreetMap, opentopomap.org/#map=12/-36.8528/174.8004. Accessed 31 July 2017.
Google. (2005, February 8). Google Maps. Retrieved October 28, 2017, from https://maps.google.co.nz/
Eidos Montreal, & Square Enix. (2011, August 23). Deus Ex: Human Revolution [Computer software]. Retrieved October 28, 2017, from http://store.steampowered.com/app/238010/Deus_Ex_Human_Revolution__Directors_Cut/
Imdb, & Cuaron, A. (2006, October 19). Theo Faron (Character). Retrieved October 28, 2017, from http://www.imdb.com/character/ch0004319/bio
Villeneuve, D., & Fmatallana95. (2017, October 6). K. Retrieved October 28, 2017, from http://bladerunner.wikia.com/wiki/K
Edwards, G. (Director). (2016, December 10). Rogue One: A Star Wars Story
Bungie. (2009). Field Operations Guide FM 90-10-140 [Brochure]. Author.
Bungie. (2004, November 9). Halo 2 Instruction Manual. Retrieved October 28, 2017, from https://www.halopedia.org/Halo_2_Manual
BenchmarkSims. (2016, April 5). TO-BMS1F-16CM-1 [PDF].
Ubisoft. (2014, May 27). Watch Dogs [Computer software]. Retrieved October 29, 2017, from https://www.ubisoft.com/en-us/game/watch-dogs/
Bungie, & MentisProductions. (2008, November 30). Halo 3 ODST Trailer. Retrieved August 08, 2017, from https://www.youtube.com/watch?v=8RajL6hdTxc
Villeneuve, D. (2017). Road to 2049 Official Site - Blade Runner 2049 – In Theaters 2017. Retrieved October 28, 2017, from http://roadto2049.bladerunnermovie.com/
CD Projekt Red. (2013, January 10). Cyberpunk 2077 Teaser Trailer. Retrieved October 29, 2017, from https://www.youtube.com/watch?v=P99qJGrPNLs
Microsoft. (2017, March 7). Microsoft Visual Studio (Version 2017) [Computer software]. Retrieved October 29, 2017, from https://www.visualstudio.com/
Firaxis. (2016, February 5). XCOM 2 [Computer software]. Retrieved October 29, 2017, from xcom.com
0 notes
Text
City Set Sail: Contextual Statement
City Set Sail takes inspiration from examples in video games, films, playscripts, and even real stories and my own past works. These inspirations were then integrated into every aspect of the experience, from story direction choices to aesthetic design and even user flow. How they influenced the project, and which ones remained relevant at all, also changed over time as the project evolved and new sources overshadowed old ones.
The story can be divided into two sections: the setting and the narrative, the former being the world that was created, and the latter being the specific linear story that takes place within the world and within City Set Sail. The setting was initially inspired by real life experience, and the fact that Auckland’s topographical layout in the city center ranges from high hills all the way down to almost sea level. This then generated the concept of the city’s lowlands being flooded and turning the highlands into overcrowded zones of safety. This was also followed by physical mapping and consideration of specific locations within the city, such as Albert Park, Queen street (especially upper Queen street), and the waterfront. Though elements of the altitude-based concept still exist in the final artefact, such as in the Albert slums, it ultimately became much less of a focus in the setting. Research of the layout of the city was also aided by use of OpenTopoMap (Erhardt, n.d.) and Google Maps (2005), in order to accurately place and scale ground-level roads in the final artefact, and to accurately place real-world locations such as britomart relative to the rest of the imagined city. The concept of the city featuring extremely-tall buildings highly-developed cities in real life such as New York and Dubai, but also from the city Hengsha in Deus Ex: Human Revolution (Eidos Montreal, 2011), wherein an entire second city has been built atop the tallest buildings of the first. Both this and the use of real Auckland maps was done in order to create an immediately-relatable city that is nonetheless very different and futuristic.
The narrative set within the setting, which consists of three interlinking perspectives. Samuel, a police officer who just wants to help people, is based largely on characters like Theo Faron from Children of Men (imdb, Cuaron, 2006) or K from Blade Runner 2049 (Villeneuve, 2017), who are both lawful to some degree, but eventually choose to break the rules in order to truly help someone in the name of a greater cause. Blair on the other hand, follows the same line of thinking, but to a far greater and more extremist degree, and he is (along with the rest of the terrorist cell he is a part of) inspired by classical rebels such as the members of Rogue One, of the titular film “Rogue One: A Star Wars Story (Edwards, 2016). Finally, Catherine serves as the neutral protagonist, and is notable in the fact that she is based on interviews I personally conducted with a survivor of domestic abuse and strife named “Artyom” (Real name anonymized, transcripts withheld). Artyom’s experiences of domestic abuse, a lack of people to trust, and a little sibling to protect all directly influenced the character that Catherine became, which was done to make Catherine’s character more believable, and to align City Set Sail with real issues that occur. All three characters take a departure from my previous works, which were often entirely too grim to take seriously. Although City Set Sail remains grim and tragic, my use of these characteristics from other works hopefully makes the characters more relatable to the reader.
The style that both the narratives and the actual setting is written in was inspired largely by the structuring of a traditional theatrical play’s script. In much the same way that Shakespeare’s scripts illicit a visualization of what they could look like, I wanted what I wrote to have strong imagery, but remain vague enough to not railroad what the reader imagines the scene to look like. The actual contents of the narrative, however, were written in a style inspired by the prologue sections of the manuals found in Halo games, particularly those of Halo 3 ODST (Bungie, 2009) and Halo 2 (Bungie, 2004), which were written in a broken transcript style with technical jargon embedded in and around the actual writing, to make it appear as if it was taken from a computer terminal. The jargon I specifically used in City Set Sail was also inspired by programming language shorthand, and shorthand codes used on military heads-up displays, as simulated in the flight simulator Falcon BMS (BenchmarkSims, 2016). My intention through all of these examples was to create a piece of writing that looked like it was very technical in nature, but in reality was still easy to follow as a layman.
Aesthetically, I initially took inspiration from the UI aesthetics of Watch Dogs (Ubisoft, 2014), which used stark minimalist designs to invoke a digital and utilitarian atmosphere that made the viewer feel as if they were using a high-tech piece of software. However, over time I began to shift more toward the autonomous city management aesthetics seen in Halo 3 ODST’s trailer (Bungie, 2008), which were even more utilitarian, but also clearly functional and not just for looks. Finally, my aesthetic and motion graphic design shifted drastically to one inspired by Blade Runner 2049 (Villneuve, 2017), which used slick, discordant designs and transitions that helped to develop a very cyberpunk and dysfunctional environment, seen through the eyes of a citizen, not an omniscient being. Additional aesthetic choices were also inspired by computer programming environments (Microsoft, 2017) and the same military heads-up displays used as inspiration for how to style the wording of the narrative. Finally, the colour palette was inspired by Cyberpunk 2077’s trailer (CD Projekt Red, 2013), which predominantly uses dark blue and muted colours to convey a run-down land of technology, which I wanted to convey to a lesser degree in City Set Sail.
Finally, the user experience was based largely on the concept of digital visual novels, where the user effectively clicks through dialogue in much the same pacing as one would read a novel. This was then augmented by a minor degree of non-linearity, allowing the user to explore the city at their own leisure, in order to make the experience feel less linear and more like it is happening in real-time. Inspiration was also taken from the video game XCOM 2 (Firaxis, 2016), where the player must monitor a map of the world for alien activity in real-time (with time compression), and is prompted very clearly when an event of interest occurs. This system of clearly halting the player and declaring events was chosen to be used in City Set Sail because it allowed absolutely no other options other than to check the event, which helps the user acknowledge that the event is serious, while also preventing sequence breaking.
0 notes
Text
City Set Sail: Conceptual Statement
City Set Sail is designed from the ground up to be an introspective narrative about a version of Auckland and New Zealand that is normally perceived as something that could not happen here, but is entirely normal in places not too far from here. As an experience, City Set Sail is designed to feel like reading a novel, and consequently is designed to target people who prefer experiences with minimal interaction, but are rich in worldbuilding and story.
City Set Sail initially started as a virtual reality experience that portrayed a small street corner on Queen street in several different possible futures, ranging from the most optimistic to least optimistic projections, and in the short and long term. However, this project would have required extensive visual modelling and texturing, and likely would not have been immersive enough be satisfactory and impactful, so the concept was scaled back and redesigned. The next concept involved telling a narrative (involving the same characters as in the final artefact) using augmented reality and markers strewn across various notable locations in the city, with each marker telling a small part of the story that takes place in a future version of the spot the marker is found. However, not only was this too large in scope to be completed in a reasonable timeframe, it also allowed players to read the story non-linearly, which would have caused confusion when the players finally attempted to make sense of the overall story and setting. Thus, this concept was then refined to use a traditional screen setup, which is the form it takes today. While I do feel that the final form is somewhat generic in nature, I also feel that it is the simplest method that the story could be delivered in a cohesive and understandable manner for the target audience, and it effectively constructs a world that a viewer could conceivably picture as the future of Auckland.
The aesthetic of the project was intended to create a cyberpunk dystopia that was reminiscent of well-known cyberpunk environments such as those found in Blade Runner (Scott, 1982), which featured a dishevelled version of a real-world city (Los Angeles in the case of Blade Runner) that was alien but also vaguely familiar. In City Set Sail, my intention from the outset was to use Auckland as the basis of the setting, in order to maximise the feeling that the future I create is the one that the viewer would actually see and be a part of, thus ensuring that the viewer is fully-immersed in the world. However, when researching Blade Runner, I also took note of the fact that the film is set in 2018, yet vastly-overestimated the level of technology we would have by this timeframe. To combat this, I made the conscious decision to place City Set Sail’s timeframe far into the unknowable future, in order to better justify the drastic changes that I predicted would occur. However, in order to avoid making the city completely unrecognizable, I decided against radically-changing the layout of the city’s streets, allowing me to attribute events to real-world locations and further cement the concept that this story occurs in the city that people know. The design of the UI was intended to make the user feel like they are operating a high-tech piece of equipment that, in universe, is not just a vector to tell the story, but is actually a program that performs a real role in the setting - specifically a city sensor monitoring system attached to the city’s surveillance and control network, called the Dynamic Computational Supervisor System, or DCSS.
The narratives themselves were created initially with the basic intent of sculpting a dark and depressing world, which was the idea that spawned Catherine as a displaced innocent thrown into harsh circumstances. As this character evolved, I realized that Catherine’s character and experiences were almost the complete opposite of what I knew (and thus could write), so I chose to gather real-world experience on the topics of domestic abuse and societal strife by interviewing a person living in that world abroad. This person, who wishes to remain anonymous and has been given the codename of “Artyom”, currently resides in a country where the authorities can’t be trusted, and where their family actively attacks them and their younger sibling. Seeing this as a very powerful and saddening situation, I then chose to rework Catherine’s character slightly to accommodate the concept of Catherine doing what she does to protect her little brother, an attribute Artyom also claims to do in their day to day life. Artyom’s interviews were also the basis of City Set Sail’s intent to raise awareness on the state of the world and how easy it could occur in Auckland, contrary to popular belief. The other two narratives, those of Blair and Samuel, were created to almost be the angel and devil to Catherine’s relative neutrality, and their storylines reverse their antagonist/deuteragonist roles through the story in order to introduce a feeling of unpredictability and peril.
Overall, I feel that the project, while outwardly very simplistic, carries a written story far different from the type that I normally write. It aimed to create an environment completely backwards to what we consider normal, but placed in a location that we feel all too familiar with. Though I feel that the method that this story was delivered through could have been less generic, I’m still proud of the dynamic and gripping feeling I managed to achieve through my writing. Moreover, I feel confident that City Set Sail will be a benchmark of writing concepts for me from now on.
0 notes
Photo
I updated the UI of City Set Sail to what you see above (minus the red text), which uses the same basic design cues of the old UI, but does it in a far sleeker and simpler way. In the previous design, the whole lower third of the screen was taken up by useless flair UI, which lowered the amount of screenspace I could actually use. With this design, however, I have far more space to work with, and the screen can feel less cramped, and I don’t have to sacrifice the artstyle.
Sure it’s not perfect, but I’m not trying to make a true hyper-optimized UI here, I’m trying to make something that looks like a piece of utilitarian software. In that sense, I feel that the new design truly shines in that subtle way that works so perfectly for what should be analogous to the 23rd century’s CCTV viewer.
0 notes
Text
City Set Sail: Meet Catherine
Finally, we have Catherine Rey, the real protagonist of the story. Catherine is a 16-year-old girl who lives a life of domestic abuse and misery in the Albert Park Slums alongside her brother, Connor, aged 9. She’s not aligned with anyone in the true sense, because she just wants to get herself and her brother to safety, away from their abusive father.
And then, of course, she meets Blair.
What follows is a series of events that lead to her surviving a police raid, getting kidnapped, getting saved by Samuel, and finally ending the story with an escape to lands unknown. In this sense, she’s aligned with everybody and nobody, and she serves as the “player character” or the freudian ego of the trio (Freud, 1923), deliberating between both sides in equal measure, and providing the viewer with ample views of every part of the story and the struggles of the other characters.
But of course, Catherine is unlike any other character I’ve ever written or known how to write. I personally have never experienced domestic abuse, nor do I have any younger siblings. So instead of trying to write from my own experiences, I wrote from someone else’s.
“Artyom”
“Artyom” (all real personal details and interview transcripts withheld by request) is a friend of mine who does live that life, and knows how it feels to be abused and unable to trust anyone at all. Their sole protective urge lies in their younger sibling, who suffers from debilitating autism and cannot fend for theirself. Through my interviews, Artyom told me stories of how their father would often hurt them in bouts of rage, and how they would have to hide in their room for days at a time, fearful of what would happen if they even stepped out into their own kitchen. That kind of life was the kind that I wanted to raise awareness for, and in this city where people think such a situation could never happen, I wanted Catherine to convey the idea that yes, it can happen here, as it can anywhere. Of course I’ve tried writing grim characters before, but I feel that with this added touch of reality, people will truly grasp the horror that Catherine and Artyom both wish to escape.
References
Freud, S. (1923). The ego and the id.
0 notes
Text
City Set Sail: Meet Blair
Next up on the character roster, we have Blair Scordato, age 28, and born in Bridgehome, the city that grew around the remains of the Harbour Bridge. He’s a leader within the Oppressed Refugee Combatants of Auckland, or ORCA, who are a terrorist cell that specialize in smuggling refugees out of the city.
Where those refugees end up is another question.
Blair’s got a real bombastic approach to things. He likes being hailed as a hero, and he always makes himself look majestic and “in the right” whenever he can. Naturally, this makes him a real hero and idol when he’s first introduced as this big savior for the protagonist, but ultimately when he reveals that he can’t save the protagonist so he’ll sell her off to save others, his attempts to retain the moral high ground become hollow and fabricated, serving to accentuate the fact that as Samuel becomes the good guy, Blair becomes the true bad guy.
Indeed through this dynamic, Blair serves as the devious devil that balances against Samuel. He genuinely believes in what he does, so much so that he’s willing to trade lives in the name of the cause. Where Samuel represents the humanity in the despotism, Blair instead represents the desperation in the supposed salvation. And on top of all that, while his actions may be irredeemable, some may just think that the core beliefs that drive him are just as agreeable as Samuel’s, which will hopefully make a quandary for the ages.
0 notes
Text
City Set Sail: Meet Samuel
It’s time to dissect the inner workings of City Set Sail’s characters!
Starting first, we have Samuel Carlisle, a 32-year-old Auckland Police Force Officer hailing from Upper Piha. He’s a real model officer: the classic kind that takes no nonsense and never fails. But of course, in a cyberpunk dystopia, the cops are the last thing you’d want to interact with, and true to the trope, Samuel serves as the face of the main antagonists of City Set Sail.
At least at first.
Being the no-nonsense type, Samuel also doesn’t put his full faith behind the corrupt law, because he signed up to protect and serve the people, not the state. This sets up the big bait-and-switch gambit later in his storyline, which is where he sheds his antagonistic vibe and instead becomes the true savior of the protagonist. He sees the protagonist as just an innocent soul caught up in the most cruel and unfortunate set of events, so he himself chooses to snub the law in favour of doing what’s right. It earns him and the men he leads a trial and arrest, but he remains stalwart in protecting the people, all the way to the end.
Why? Because Samuel serves as the hidden angel of City Set Sail. After all, the story’s set in Auckland, and cops around here pride themselves on doing what’s right. In order to inject that little bit of humanity into what seems like a corrupt husk of a regime to the outside viewer, Samuel has to be the one that sees the errors of the world and uses his position of power to create a happy ending. He contrasts Blair and Catherine - the other main characters - who represent the rot in the rebellion, and the common citizen caught in the middle of the fight, respectively.
0 notes
Text
Alleylight: Reflective Statement
Alleylight was, in many ways, a successful example of gameplay and design. Originally designed as a user-friendly way to light up or otherwise activate a dark alley, Alleylight as a final product has achieved this easily. Based on user testing and feedback, it is clear that the gameplay loop of the project resonates with people in such an intuitive way that the learning curve is essentially nil. On top of that, the active moving aspects of the app (i.e: the floating objects that the user hits) do provide enough movement that the screenspace is never completely still, and Alleylight is never not keeping the space active and moving.
Despite my initial billing as a project lead, my intention from the start was to minimize my role in the actual design of the final product, unless my input was strictly necessary to avoid a glaring design error. Nonetheless, my project lead status was due to the necessity of all other assets and pipelines conforming to the requirements of my technical limitations within Unity, for example the necessity of sprites to be a set perspective and consistent dpi (Unity Technologies, 2017).
Inspirations
Chief inspirations for my design processes came from lessons learned during the creation of previous projects, specifically the early stages of Matter and its Kinect and physics implementations. This previous project taught me to constrain physical objects on certain axes, and it also taught me to be wary of the Kinect’s tracking capabilities regarding microdexterity and accuracy (or lack thereof). Actual implementation of the Kinect was helped by tutorials from Andrea Sassetti (2015) and thenappingkat (2015). Some forum threads, such as one by techmage (2013) documented attempts to add collision to the Kinect’s depthmap visualization, which was my initial plan. However, their implementation was too complex for my timeframe, so instead I deferred to a simpler, more abstract implementation. This implementation used template code and assets from the Microsoft Kinect 2 SDK for Unity (n.d.), which was then reverse-engineered over time – a process made necessary due to a lack of proper documentation from Microsoft.
Personal Reflection
From my perspective as the programmer of the project, Alleylight is somewhat rushed and inefficient. Yes the end result works in every way that it initially stated it would, but I believe that certain components could’ve been constructed better, in order to make the end result more modular and simple for the end user. For example in the image below, each grey vertical pillar is a special object spawner that generates one specific type of floating object at a random interval (Unity Technologies, 2017) between two floating point numbers. However, because there are multiple types of floating objects, and they both need to be able to come from either direction, each side needs one spawner for each type of object, which generated a far larger logistical nightmare on my end whenever more items were added, and caused unintended behaviour because the object killzones behind the spawners were so far apart, resulting in a buildup of objects off-screen. Were I to improve on Alleylight in the future, I would consolidate these spawners into a single prefab per side, which picks a random object to spawn based on an array of available objects. This makes the entire project cleaner and more streamlined, but also creates a single script that I can easily genericize and re-use in a later project. The actual end-user experience that this issue creates, however, depends on whose perspective is considered. From the perspective of the person setting the experience up in the space, a more streamlined backend could potentially streamline their workflow somewhat through a simpler setup. But for the actual person playing, none of this backend work applies at all, until it generates a bug such as objects spawning inside each other.
Another feature I wanted to add as a secondary objective was a more modular interface for the end user’s use. This would’ve entailed a cursor-based system to position and/or scale the island based on the specific dimensions and obstacles present on the final projection space. Other potential additions include an interface to tweak the rate of objects spawning, the disabling and enabling of specific spawned objects, and more janitorial options such as clearing and reloading the scene, disabling the Kinect hardware, and any other specific functions that the operating end user may ask for. The decision to defer these additions until after the semester was due to their non-critical nature compared to core features such as item spawning.
Overall, I am rather happy with the state of the project at this time, as it not only clearly demonstrates the concept we created, but also has ample room to expand and evolve.
References
Unity Technologies. (2017, August 29). Sprite Render - Unity Manual. Retrieved October 11, 2017, from https://docs.unity3d.com/Manual/class-SpriteRenderer.html
Unity Technologies. (2017, October 06). Random.Range. Retrieved October 14, 2017, from https://docs.unity3d.com/ScriptReference/Random.Range.html
Sassetti, A. (2015, November 17). Develop a game using Unity3D with Microsoft Kinect v2. Retrieved October 15, 2017, from https://andreasassetti.wordpress.com/2015/11/02/develop-a-game-using-unity3d-with-microsoft-kinect-v2/
Thenappingkat. (2015, June 08). Unity Gaming: Integrating Kinect (part 3). Retrieved October 15, 2017, from https://thenappingkat.azurewebsites.net/unity-gaming-integrating-kinect-part-3/
Techmage. (2013, December 19). Using Kinect Depth map to generate collision mesh. Retrieved October 15, 2017, from https://forum.unity.com/threads/using-kinect-depth-map-to-generate-collision-mesh.218540/
Microsoft (n.d.). Kinect Tools and Resources. Retrieved October 16 2017, from https://developer.microsoft.com/en-us/windows/kinect/tools
0 notes
Photo
This is the current (and likely final) flowchart for the short stories. I’ve taken to calling each segment a “page” for lack of a better term, and it’s colour-coded based on who the focal characters are.
The flow of this story is designed to initially set Blair up as a good guy, and Samuel along with the rest of the authorities as the antagonist. However, as the story progresses beyond the vertical green line, Blair begins to reveal his true, malicious intentions, and Samuel steps in as a new guide to Catherine, who is effectively the sympathetic protagonist throughout.
The ending is largely-influenced by works like Blade Runner (1982) and its long-standing argument over the protagonist Deckard’s status as a real human or an android “replicant”, as partly-explained by Lukas Caldwell (n.d.). Such endings have many theories spawned from them, but never any definitive answers, which is exactly what I wanted to generate in City Set Sail. Consequently, each of the three stories have their own endings that clearly state how each of the character’s paths end. However, the ramifications of these endings are left entirely open. As an example, Catherine’s story ends with her achieving her goal of escaping the city. However, where she goes to, and what happens to her afterward, is entirely up to the viewer to decide for themselves.
Hopefully, this narrative can be seen in the final works I actually write. I’ve noticed I have a penchant for writing too dark, so I’m aiming slightly higher with this one. Even if the world and the story is grim, I’m hoping that it still retains enough hope to be coherent and relatable throughout.
References
Caldwell, L. M. (n.d.). Blade Runner FAQ: Is Deckard a Replicant? Retrieved October 12, 2017, from http://www.brmovie.com/FAQs/BR_FAQ_Deck-a-Rep.htm
0 notes
Text
City Set Sail: Keeping Attention
Earlier this week, I got some feedback on my storywriting format (which you can see for yourself here) from fellow classmate Steven Wong. Thankfully, he agrees that the script is understandable from a layman’s perspective. His main criticism, however, was that such long pieces of writing could end up turning people away when their attention-span is exhausted.
This becomes a very concerning issue when the entire project is a written story exercise.
Luckily, Steven also gave some pointers on what he believes would help engage people more. Firstly, he suggested using simple colour coding to help people easily-discern who is talking. This would be easy on a design perspective because I already colour-code each of the three short stories in my planning diagram (red for Catherine, Yellow for Blair, Blue for Samuel, and a few extras for when they’re together), however what complicates this is the technical level. To pull that off in a clean way, I’d have to write a script that parses through the text I want to display, checks for specific string instances, and colours them accordingly. It’s certainly possible to do, but I’m going to have to spend some time learning how; time I simply don’t have right now.
Secondly, Steven suggested adding pictures to each text entry. Things like building diagrams for location descriptors, landscapes for broader descriptions, or character profile pictures for the stories. Of course, on top of the technical layer of adding this one (again, possible, but time-consuming), there’s also the issue of drawing all the assets, which I simply wouldn’t have time for either way.
The last option suggested was making unique sounds play based on the atmosphere I want to set up for that specific bit of text. Things like gunshots or heavy (water) traffic. This is far more possible, as quite a bit of my remaining time will be spent working on the sound system anyway, the question is how to execute it with my limited sound experience. Up until now, I’ve been using sounds from freesound.org, but for such a task, I may have to delve into actual sound editing, which may eat into too much time.
All tempting choices, but almost all too risky a venture to do right now. My personal opinion is that if a viewer would be bored by long text, they’d still be bored by City Set Sail no matter what I do. And more pertinently, the actual completion of the base experience comes before the quality-of-life improvements on top of that experience.
0 notes
Text
Alleylight: Next Steps
Alleylight V1 is, for all intents and purposes, feature-complete. It features exactly what we said we’d do, and there aren’t any outstanding bugs that would annihilate the thing after an extended period of time. But not everything made it in, and there’s still more things I could add.
Firstly, during the class showoff, I was tipped off by fellow classmate Patrick Tuohy on a method to smooth out the Kinect’s intense jank tracking-wise. I’m still not well versed in the actual scripting inside that black box of an SDK, but Patrick mentioned using normalized vectors and effectively lerping joints between their current position and the position the tracking data is returning. This would help with the fact the skeleton’s tracking points tended to jump from one side of an object to another, so instead of the object being batted away as one would expect, it effectively phases through the tracking point, potentially not even interacting at all. Naturally if and when Alleylight is actually deployed to the public, the average joe on’t have the technical knowledge to forgive such an occurrence, so this seems like a good fix to investigate sooner rather than later.
Then there’s the matter of the seaweed. At present, all the seaweed in the scene is its own separate gameobject, but all it does is sit there with a random rotation and position that I set manually and will never change. While some wavy animations for them were made (though never given to me and thus never implemented), a secondary objective was to make them react to a fake water current, and also to react to objects floating over them. The first method - which would kill two birds with one stone - would be to change each weed into a three-dimensional cloth mesh, and applying a slight constant force to it. Given that the floating objects already all have three-dimensional colliders, all I’d need to do is make them touch the seaweed colliders and that’s both problems done, albeit rather expensively performance-wise. Option B, and the one I was planning on using before I suddenly remembered cloth physics while writing this, would be to add joints to the stems of each weed, and then adding a trigger collider to the other side of the leaf (does seaweed count as a leaf?). When an object enters the trigger, I apply a constant force along the floating object’s vector, which should make the weed flow with the object. While this method is way less performance-intensive, it might not look very convincing, considering that the weed is still a solid, non-wavy object.
The last thing that would require considerable effort on my end to implement (i.e: Not adding sound because that’s easy) is a dev mode to allow the end-user to set up or modify the space on the fly - something pretty important for a projection mapped thing that may or may not have the obstacles where we guess they are in development. In theory, because of the way the island was created, moving it around should be dead easy. The hard part is making it so the obstacle-shaped hole can have its shape changed for different obstacles. Other than allowing the user to spawn completely-black primitives and making them composite the obstacle together, I’ve got no solutions to the issue at this point in time. Someday though, someday.
1 note
·
View note
Text
Alleylight: Keeping it Clean
This is a shot of Alleylight inside the Unity Editor. On the right is what the player sees, minus the water texture. On the left is how the scene actually looks, outside the bounds of the screen and with added perspective. In the middle is the island, which is a two-dimensional with a three-dimensional black capsule embedded in it. On the same three-dimensional plane, you’ll see the many vertical bars, each one spawning a specific floating object in a specific direction at random intervals. Each of those objects are also two-dimensional. This was done so that the workflow was easier on the artists, but also because we wanted the artstyle to be simple and understandable, so we made everything two-dimensional. The reason there still is a three-dimensional aspect, however, is purely technical, and partly because I was too lazy to deal with two-dimensional layers when it was just as easy, and perhaps even more organized, to fake layering in three dimensions.
Surrounding the spawners is a large grey border. That border is the “killbox”, and it deletes anything that strays into it. Essentially, this makes sure that anything that floats out of the screen doesn’t continue to exist and slow the app down. Instead, it gets deleted and makes way for new objects to spawn.
Finally, the grey plane behind everything is the “screen” that the water texture is displayed on. It’s translucent, so that the seaweed objects behind it show as if they’re underwater. Again, this was the cheap way to make the water texture layer correctly, in such a way that the island and floating objects appeared above the waterline, and the seaweed appeared below. This also all made for some collision failsafes, as all the collisions between objects are still calculated as if they were three-dimensional (albeit with movement on the Z axis locked, ensuring that objects can’t float into or away from the screen).
Of course, none of that matters to the end user. Though these solutions are a little hacky compared to the “proper and efficient” methods, they do work, with few downsides at this scale.
8 notes
·
View notes
Text
Alleylight: Taming the Kinect
Alleylight called for Kinect integration in the brief. This didn’t surprise me.
The Kinect also has terrible tracking, being a rather dated piece of hardware and all. Having briefly worked with the Kinect in the past before (with Matter’s early stages), this also didn’t surprise me.
What did surprise me was how damn opaque the Kinect’s API is. especially its example code.
Using the Leap motion as a comparison, the Leap’s hands could be spawned inside the editor and modified; you could strap gameobjects to the wrists and add components to any part, and it’d automatically apply to the actual hand objects that appear in-game. OpenVR too, allows you to spawn the controller gameobjects and modify them at will, and those changes would be reflected in-game.
Not the Kinect. No that’s too easy for Microsoft.
The Kinect was designed to attach its tracking data not to a generic skeletal model, but to a user-defined player character. You were never meant to just use the raw data, or to gimp the example body from the example scene. Consequently, those example bodies are incredibly non-modular.
The skeleton I used, which is little more than cube primitives with lines drawn between them, has to first build a dictionary of every joint at runtime, then rather than just attach that joint information to an existing template, it builds the skeleton from the ground up, at runtime, via script, in a literal “head bone connects to the neck bone” fashion. If you want to change something about this skeleton, say, give it collision, you have to go into the script and add it there. With anything else, you’d be able to do that in the inspector.
But in the end that’s what I did. I needed the cubes representing the joints to be bigger, and also to collide with barrels and boxes in the scene. So I pulled the code apart, found where the cube dimensions were being set (which, I say again, weren’t the inspector like any sane API), then manually made it generate a box collider on each cube when the cube is created. And none of that is what I wanted to do in the first place, which was to use the Kinect’s camera and depth functions to actually generate a silhouette of the player and give that collision.
So yes, far too much effort for far too little gain. And that wasn’t even that much effort anyway, but it still got me ranting. Thank god for coders who don’t write spaghetti code.
0 notes
Text
City Set Sail - Building the City
City Set Sail is different from any other worldbuilding project I’ve done in that it takes place in a real, defined location in the real world. Where my other projects have been in fantasy worlds, distant planets colonized by man, or completely nondescript environments inside of but isolated from the real world, City Set Sail instead takes place in Auckland, New Zealand. And not just Auckland by name only, but a fictional Auckland driven by the real one’s topography, roads, infrastructure, and even its real societal structure. Obviously for a world set in 2250, I had some freedom regarding what buildings exist, but at the end of the day, people can recognize Auckland just by glancing it on a map, so I need to make sure people can see it here.
This is how I chose to solve that problem. I needed to create a three-dimensional view of Auckland in this universe, and I needed to do it in Unity. I could probably do a rough guess at the road layouts and approximate it by hand, but that would end in massive roads, tiny buildings, and a completely wrong sense of scale. So instead, I chose to use things I randomly knew about. I had considered using OpenTopoMap’s resources (Erhardt, n.d.) for The Commander, a project I created in 2015, and I knew that its maps were more precise and easier to read than those on Google Maps, so I decided to use a screenshot of it as a trace template of sorts, which I would then place buildings on top of. So that’s one problem down.
Now the second: How do I make the buildings?
I have some modelling experience in Sketchup and Autocad’s Fusion 360, but not enough to make proper buildings. On top of that, I have an entire city to make, so I’ve got to keep things simple and make the workflow clean and quick. To that end, I decided to use a Unity asset called ProBuilder (ProCore, n.d.) which I was tipped off to during Global Game Jam 2017. It allows basic mesh manipulation of primitives from within Unity, much like the brush mapping techniques of older game environment creators like Hammer Editor (Valve, n.d.), which allowed the map maker to very quickly make complicated geometry without having to mess with modelling programs or heightmaps. For me, since buildings generally aren’t stupid complicated shapes (except in Shanghai), I can quickly make tons of buildings very quickly, from the most generic of apartment blocks to the actual Sky Tower.
Naturally this is still going to take ages, even if I just limit myself to modelling the CBD. But luckily I’ve made a lot of Unity stuff over the years, and a lot of the core features can be cannibalized from past projects. All I really need to do now is slot them in, write the final written content, and put it all together.
References
Erhardt, Stefan, et al. “OpenTopoMap - Topographische Karten aus OpenStreetMap.” OpenTopoMap - Topographische Karten aus OpenStreetMap, opentopomap.org/#map=12/-36.8528/174.8004. Accessed 31 July 2017.
ProCore. “ProBuilding Basic.” ProCore 3D, www.procore3d.com/. Accessed 31 July 2017.
Valve. “Valve Hammer Editor.” Valve Hammer Editor - Valve Developer Community, developer.valvesoftware.com/wiki/Valve_Hammer_Editor. Accessed 25 Sept. 2017.
0 notes
Text
City Set Sail: New World Order
In 2253, the year City Set Sail is set, society as a whole has changed vastly from what we would consider normal today. In much the same way that the political climate of 1900 is completely different to that of 2000, the political landscape of the 23rd century is almost unthinkable to the layman of the 21st.
City Set Sail takes place in a post-climate change cyberpunk dystopia. Over the course of the 21st century, the People’s Republic of China begins to stabilize and make a claim for the title of world superpower. Concurrently, the fall of the west begins as corporations run rampant and governments grow complacent. Over time, this ends in a world that is increasingly unprepared against the rising threat of environmental destruction, and much of the world has its fate sealed as lowlands flood and violent storms become an annual occurrence. It takes the world decades to truly recover, but China finally rises to the top as the world’s powerhouse when the dust finally settles.
By the 2250s, The United States has stabilized, but with major population centers reduced to ruin and swathes of land rendered uninhabitable by environmental disaster and worldwide storms, it never returns to the fame it once saw. Europe, in much the same situation as the US, fractured and fell to war, having only recovered years later as a zone of dogmatic order. China attempted to lay claim to neighbouring nations in the chaos, but ended in the government becoming far more draconian and militaristic as a result. Smaller nations like New Zealand still exist independently, though they too have become undemocratic, and in many cases have been hit hard by the environment.
Living conditions in Auckland in 2253 can roughly be compared to Hong Kong in the late-20th and early-21st century. Despite the damage caused by the seawall disaster, Auckland has become stratified, with upper-class citizens distinguishing themselves heavily from the middle class, who in turn often completely isolate themselves from the slums of the poor. Organized crime has skyrocketed, and dogmatic police action is doing little in the face of Auckland’s developed underground.
All of this is intended to create a world that someone in the current time would find hard to imagine. Especially as someone living in Auckland, the idea of the city descending into a state often attributed with the dark past is all but unheard of. So I want to see just what it’d be like if it was our reality.
0 notes
Text
DCSSUI - By Polarstar Corp.
Or at least, the beginnings of the DCSSUI.
This will be the main UI of City Set Sail, not including the actual interactive bits. It represents a citywide maintenance log viewer terminal for Auckland’s Dynamic Computational Supervisor System, or DCSS, and it’ll be the in-universe justification for the player’s omniscient ability to follow the main characters.
In universe, the DCSSUI (short for DCSS User Interface) is a graphical layer that is used on top of an existing DCSS architecture, a bit like KDE Plasma (KDE, n.d), which is a graphical environment that goes on top of an existing Linux installation. The DCSS itself is exactly what it says: a Computer Supervisor System. Similar to a very dumb artificial intelligence, a DCSS can be used to improve monitor and maintain a smart house, and can be scaled to do the same to an office block, a train network, or even an entire city. The idea of a DCSS is over two-hundred years old by the time of City Set Sail, and Auckland received and installed its first city-scale DCSS iteration in 2059. Much like an operating system, a DCSS and its components are a form factor, not a specific product. The first DCSSes were experimental pieces of software, and UIs simply sis not exist for them. As the concept matured over the 21st century, companies from China, Europe, and the United States began creating their own DCSSes, similar to the Windows-Macintosh rivalry of today.
Eventually, companies also began to develop UI packages to add on to existing DCSSes. Little more than a quality-of-life improvement, such a DCSSUI system dramatically lowered the entry skill level required for a DCSS technician. Consequently, a DCSSUI became so ubiquitous that by the 23rd century, only power-users and exceedingly poor enterprises still used DCSSes without an extra DCSSUI package.
One such DCSSUI is the Polarstar DCSSUI. Polarstar is a Chinese technology corporation based in Xian, People’s Republic of China, and although they didn’t make Auckland’s DCSS, they did make the DCSSUI it uses. Polarstar DCSSUI version 8.10 Beta 2 is the latest version available, and despite its poor localization and polish, it is widely used for its reliability, flexibility, and affordability. It can remotely access cameras, microphones and other sensors, cleanly link and access databases from multiple emergency services, and automatically transcribe and store all visual and audio data it detects. There are plenty of more elegant or powerful DCSSUIs on the market, but on a city-scale, the Polarstar DCSSUI sets the benchmark.
(See I thought all of this out, I swear)
References
KDE. (n.d.). Plasma by KDE. Retrieved September 11, 2017, from https://www.kde.org/plasma-desktop
0 notes
Text
Back in Business: City Set Sail
It’s back into full swing on city set sail, and over the course of the break, I came to an interesting design point that tells a story of the world without exposition.
You may or may not be one of the many people who drive or have otherwise been in a car where all the electronics are in some other language. Normally, it’s Japanese or Korean. With some phones, you get a similar phenomenon except with Mandarin Chinese instead. In any and all of these cases however, you get the message that this car or device was built internationally and brought here, and maybe that the origin country is dominant in the industry, considering they’re not translating their systems (though in some cases that’s a stretch).
So after catching a bunch of uber rides across Auckland, each and every one being in a Prius of some sort with Japanese all over the central dash, I started wondering what life would be like if everything else in the city was a quickly-imported eastern product. What if - in my universe where I have established that a central computer system helps Auckland function - all the core components were designed by, built in, and localized for China? In much the same way that Prius drivers live with their japanese car UI, and British programmers live with code localized for America, what if the people helping to keep the city running all just lived with cheap systems made for China first and everyone else second? Would things still run just as smoothly? Would the audience of City Set Sail get the idea that in this world, China has overtaken Europe and the US as the world superpower?
I’m gonna try and test the waters on this in City Set Sail. I’ve decided that the final artifact will be a standard screen-based interactive story, much like Project Charon and Root Directory, so I’m going to test the limits by copying the style of Chinese airports: have the UI in mandarin, with English in smaller text beneath it. It’ll be counter-productive to creating a readable UI for anyone that isn’t chinese, but it’ll also stitch together a lot of the background narrative without the need for exposition. And when attempting to create a believably-inconvenient world, I think that’s a justifiable tradeoff.
0 notes