Read Reconfigure Online

Authors: Epredator,Ian Hughes

Tags: #Sci-Fi & Fantasy

Reconfigure (8 page)

BOOK: Reconfigure
7.21Mb size Format: txt, pdf, ePub
ads

Roisin felt the hint of a Flow session, a babbling brook racing to the ocean via a meandering but lovely route in her mind. In a flurry of typing, dragging and dropping she started to construct an interface for the World. She was not interested at this point in the shape of objects. She used cube and sphere graphic primitives, to try and construct helper functions. These could position and render real world objects on her screen, based on the text parameters, that she knew she could extract from the Examine command. She started off with the coin as she felt a little sorry for the journey it had been on. It would be the first object in her Zonaverse. The Zonaverse name just popped into her head whilst she was typing some rudimentary comments in her code. She couldn’t use Metaverse as that was already too heavily weighted to the concept of a virtual world. Her world wasn’t virtual it was very real. It seemed to work on zones so Zonaverse? Why not? No one else was there to argue about it. Roisin coded a breakdown of the response from an ‘ls’ command. She couldn’t just rely on the data coming back in the right sequence, she had to keep her own context records of what she actually asked in the first place. There was not enough in the returned messages to always indicate what had been asked, in particular with the Linux operating system commands. Roisin had to manage context and pair the request/responses. She wrote an overwatch function to match them. She coded some basic guesswork validation and error checking. Many of the higher level commands did mention what they were doing so she could double check Zone came back in a Zone request. Her ‘ls’ command pair gave a nice comma delimited list of objects. (She hoped RC never put a comma in the name of an object, that would be a right mess.) Having got the generic list of all objects she explicitly added a line of code to check if Coin was in the list and then added a call, ‘Examine Coin’. The result was parsed to find the coordinates. The code created a small cube with a floating label of Coin just offset from the centre of the screen. She was creating a hardcoded test flow using specific parameters first. She wired this ‘ls’, ‘Examine Coin’, multi function to a button imaginatively called Test, on the stage area. Once again she was delighted, it worked. When she pressed the button, after running and connecting again, a small cube appeared in 3D Space on screen. She stopped the code and added another explicit object check ‘Examine Cap’ after the ‘Examine Coin’. Now she had a multiple set of calls hardcoded to the Test button. She ran and clicked. On screen, two cubes appeared close to one another one labelled Cap and the other Coin. Roisin added a third hardcoded call in the code ‘Examine Human’. Roisin updated the creation code to have a specific test to create a different graphic primitive for the explicit string ‘Human’ in her display routine. Run, click. Dead centre of the screen a small sphere appeared labelled Human. Roisin mentally made the leap in perception that this sphere avatar actually was her. The cubes for the cup and coin happily resided to the right of her digital presence.

Roisin swapped out the static camera behaviour for a controllable camera that rotated around any given object. It used the usual control keys or mouse movements. It needed a focus. Roisin wrote a routine to send it the first object that rezzed or to the ‘Human’ sphere if it existed. She ran and clicked the overloaded Test button. The screen jumped around a bit at first as the camera locked onto the Coin and then the camera shifted to her sphere. She spun around herself on screen. Her small white naked little sphere, lit only by the ambient lighting in the development environment, dutifully sat and posed for its virtual walk around selfie. Cap and Coin, with a slightly more defined set of dark surfaces, looked like menacing thugs sneaking up on her. Roisin realised the super weirdness of being able to move her point of view of a digital representation of the actual World, as it is right now. She was operating a virtual drone and spying on her own desk from above, yet unseen in the real world. Her on screen view was real, it was a Zonaverse view. Roisin decided then and there that Zonaverse was a terrible name. Nothing better sprung to her mind though.

She stopped the running code and saw herself disappear from her screen. Now for some refactoring, she thought. The hardcoded process had worked, but this needed to be a generalised application. Roisin removed the explicit calls for Examine Coin, Examine Cap and Examine Human. Instead she created a function that iterated over the list that was returned from the ‘ls’ command, and then ran an Examine on each object in turn. It seemed a bit ‘brute force’ and not elegant, but needs must.

When she ran FMM again she got a much more detailed picture of her Zonaverse. The test button called a single function that then looped through what it had discovered on the ‘ls’. Cubes popped up all around Roisin’s sphere avatar. It was, her thoughts added, not just an avatar, it was her. She had cube markers for each Wall, each labelled with a numeric suffix, the floor and the ceiling also sat in their relative positions. The chair cube intersected with her sphere as did the desk. It was not surprising and did not worry her. She was only dealing with location, not the scale of anything. She knew Wall 1 was a long rectangular object but her game world had only been told to create a 1x1x1 white cube for each element. As she spun the camera around the point of focus the rendering of the cubes and labels smoothly altered to give the impression of moving around a real 3D space. The billboard facing text meant the labels were always flat to the camera, some overlapped, the z-order of rendering making overtyped indistinct letters. Roisin was happy with the scaling for now. The apparent 1 unit to 1 m of this ‘Fractal Level’ default fitted nicely with her virtual world. This was going rather well!

She had created a read only view of the current Zone that RC was operating on. There was a constant stream channel open to it, him, her, them. What was more, she had achieved ‘NO CLI!’ That sudden realisation snapped her out of Flow. The searing screech of jumping out of a cognitive hyperspace made her feel a little giddy. She experienced an other-world feeling, blinking as if she had come out of a cinema in the daylight having been immersed in a fantastic movie. She looked at her Unity3D application, the code she had created, and it almost felt as if it had been done by someone else. She realised too that the 'someone else’ had been so keen to get going they had not turned on any library management, version control or backup on this project! Roisin rectified that instantly. Backup, always backup! She didn’t risk a cloud backup. Cloud servers were great but she couldn’t be too careful with this stuff. It was hard enough worrying about it being a public Twitter account to talk to RC. She could rely on the fact that if she did get her account compromised it would be unlikely for anyone to accidentally Tweet ‘ls -l’ and then go through all she had been through the past few days. The clock had ticked onto another day, midnight had passed. She had spent the entire day powered by a coffee and a (stolen) Marmite bagel. Flow was no respecter of the Krebs cycle. Roisin needed food and water and should snap out of Flow at regular intervals. It was late, she was now feeling the exhaustion. Another Marmite bagel wouldn't hurt? Would it? She saved everything on her machine and made sure the backups had backed up locally to her network attached storage. She checked she was not running anything she didn’t need. Roisin creaked as she stood up, at least she felt like she did. She was young so no real damage done. She performed a shuffle of her shoulders and neck to release the tension. She made her way to the kitchen for a well earned, and now much needed, late night snack.

She washed the salty yeast bite of Marmite down with a glass of milk. It reminded her of simpler times as a kid. All she had to worry about was how to earn enough time on her Sega Saturn back then. As part of the early generation of tech enabled kids her parents had, despite being very enlightened, gone all medieval on their approach to ‘screen time’. At 8 years old she faced a barrage of homework and chores to earn time credits written on a whiteboard in the kitchen. As she got older the restrictions had to be lifted because she was nearly always on a keyboard and screen, but learning to code, amongst the odd gaming frenzy. She was way ahead of the curve in the learning to code revolution that hit education. Up until only a few years before an entire generation of kids were only being taught to type and use word processors. Education finally woke up to the fact that being able to build with the technology was way more important than just using it. It was probably because those like her, the all round tech and science geeks, who had not gone into industry, were now teachers. For them tech was second nature. Naturally they brought it to the classroom. Her mental wandering leapt back to the Sega Saturn. Those magical moments on an analogue pad flying Nights around collecting orbs. A hypnotic and beautifully designed game. She loved to collect the Nightopians, a quirky side line artificial life form. A paraloop on the controller and they were transported to their own little garden world. They may have just been a few lines of code and some pixel textures, but the delightful little things were transported from one world to another by Nights action swoop, under her control. It seemed, despite the late hour her brain was redirecting her back to the matter in hand. She had another layer of UI and API interaction to build and it wasn’t going to get done sitting here filling her face and daydreaming of Nights.

She returned to her desk, the warm glow of the Macbook Pro’s Retina screen lit her face and neck up in the dark. Her black t-shirt just absorbed the glow, and to anyone glancing through her window she looked like a disembodied head floating over a keyboard and screen. She barely glanced outside. The pubs had closed, the late night supermarkets were shuttered. Only the odd car sped past, so rarely and intermittently as to count as no traffic at all.

Roisin still had the architecture plan in her head. She was layering. Putting the basic building blocks in the code, the connection to RC, then a visualisation and compound read request functions. Now she needed to delve, carefully, into the write functions. Roisin was aiming to alter, not just look at the World. She added to the base graphic primitive classes, making them their own type of object with a few more properties. It was no good just having a cube on the screen, it needed to be something she could interact with. The code could use the concept of ray casting. Roisin again found herself raising a small smirk at the delightful serendipity of the situation. Here she was talking to her new found keeper of her super power @raykonfigure and she was going to have to use ray cast functions to determine if her onscreen cursor was making contact with the 3D objects, in order to select them in the running code. It worked by treating the camera a bit like a laser. Whilst the camera was rendering a 2D image to the screen it was representing a 3D model. To determine if an object could be selected it could ‘fire’ an invisible ray into the 3D model from the camera’s viewpoint in space, out into the distance. The internal physics model could determine if it collided with any of the collision meshes set up on the objects. This required the objects to not just be visual representations but have a sort of physical presence in the virtual environment. Simple, once you thought in 3D and also realised it was a completely mathematical environment. At college she had shared game development classes with some people that took it all too literally. They were unable to make the leap to consider some of these simple concepts. The objects she used to represent the World became rigid bodies. It would mean any object she moved the cursor over, her code would respond. She created a slight glow shader to put around objects as they were selected. Roisin could test her new code by waving her mouse pointer around the virtual environment squiggling with her finger on the trackpad.

It was a less than glorious start to this session. She ran the code and the objects duly appeared as before. Then all at once, like a cartoon character stepping off a cliff, they paused briefly, and dropped out of the bottom of the screen. The camera code trained to follow the sphere of Roisin dutiful spun and hurtled after them. It was only the fake horizon and the rapidly altering z coordinates in the inspector panel that indicated everything was in free fall. Otherwise after the initial camera whip things looked pretty much the same. Physics! She was relieved this was not a test of the Translate code otherwise the World, or at least her Zone would probably be pancaked all over the ground floor of the house. “You Mug!” She half joked to herself out loud.

She stopped the running rendition of the eternal drop and altered the new objects to tick their ignore gravity property, setting it to True. This meant, be physical but ignore some of the physical forces. You can still hit a kinematic object but you can’t shove it around. This would be good protection on her UI. The virtual representation would remain where it was unless code told it to move, or she deliberately unlocked an object.

Things ran much better this time. All the objects showed up as expected and she was able to swipe around on the trackpad, to give each a little halo glow, as she moved the cursor over them. Roisin had switched the trackpad out from any camera movement leaving the cursor keys as the way to whoosh around. She put on her mental stack of todo things wiring up an on screen joystick camera control widget. She wasn’t going to have to write that, it was a stock item, it just needed a bit of configuring.

Using copy and paste she built a set of buttons on screen, one for each of the major commands she now knew. “Test” became a “Refresh." She put them on a UI Canvas and just for fun added a little animation, so that the menu could swoosh in and out of view. Each button was going to need its own set of routines to match the DM text messages. Some of these could imply what they needed to do, for others it was just going to be easier to have a text dialogue pop up for some additional freeform text or numbers.

She considered the warning responses that she had seen, when she had Translated the cup onto the floor before the smash. She added message handling and some suitable confirmation boxes. The text in every box was longhand. She had been caught out by too many systems with ambiguous yes/no buttons and double negatives. “An error has occurred, OK? Cancel?” What on earth were the devs thinking? Was it OK? That an error had occurred and did cancel just mean get rid of the error window? Even though she was the only user of FMM she wanted to be clear. She wanted to be explicit in her wording to herself, so as not to end up fusing herself to a table with a slip of a cursor.

BOOK: Reconfigure
7.21Mb size Format: txt, pdf, ePub
ads

Other books

Passing Through Midnight by Mary Kay McComas
Rapsodia Gourmet by Muriel Barbery
Bad Influence by K. A. Mitchell
Plunder of Gor by Norman, John;
Destiny's Kingdom: Legend of the Chosen by Huber, Daniel, Selzer, Jennifer
Too Close to Home by Maureen Tan
The Gravity of Love by Thomas, Anne