Wednesday, April 14, 2010

IndieCade

First things first, that cool row loading thing that I talked up yesterday, well, it works now. Unfortunately for you dear reader (*scoff*) it went off without too much of a struggle, so I don't seem to have a colorfully worded story to go with that.
Actually check that, I'll make one up. Assume that none of the following things are true.

So I was sitting around my house watching The Life Aquatic when suddenly, the President of Mexico runs into my house. Frantic and sweating he pleads in surprisingly good English to help him. Apparently kidnappers are after him, like in Man On Fire, except these kidnappers (presidentnappers?) are also members of Al-Quaida. Big ones, since they have mug shots on those stupid novelty playing cards that were all the rage years ago when anybody gave a deuce.
Seeing that he's in trouble, I throw on my flippy floppies, turn in that slow way that both action heroes and strippers use to great effect, and say while tightening my bandanna, "Mr. President, come with me if you want to live. Afterwards, you can buy me taquitos."
I then flip up my couch revealing my giant hidden cache of heavy weapons and samurai swords. Naturally, I pick Daisy, my samurai sword with a machine gun in it. Oh, you see those all the time, so I won't bother you with the details of how it works or looks. Just know that it's not just the coolest weapon ever, but quite possibly the coolest object in the History of Stuff.
So out into the street I ran, flippy floppies making that great flip and the occasional flop noise. Of course, I didn't really hear to much since Daisy was busy turning terrorist kidnapper card Texas style Hold'em into a game of 52 card pickup. Except with blood, and awesome Wes Carpenter synth music, like what Snake Plisken kills to.
Soon, I find myself standing atop a heap of the misguided and the Lost, holding a smoking Daisy. Somehow a half naked woman appeared and kneels at my feet. It's very metal. All of the sudden, one of the terrorist kidnappers reaches up with his last breath and only working limb to shoot me, treacherously.
The President of Mexico looks on and I bleed out, and says, "Thank you for saving me! You are a national hero." Or something like that. I wasn't really paying attention, cause getting shot hurts like crap man.
When I awoke, I was in a dark place, surrounded by stone walls. Ramones flavoured Muzak was piped in from hidden speakers on the walls. Then, as if by some kind of magic, a Man in Black appeared.
"Am I in Space?" I ask.
"Nope," he replies. "I've just found that a black suit is more appropriate than a cloak. I could change."
"Nah," I reply casually, "It works. So, like do I get a challenge or something?"
"Shit. I hate The Seventh Seal. I hate it so hard. Do you have any idea how hard it is playing Twister in a robe?"
"That would explain the suit."
"Alright," he says, checking his watch. Oddly, it's digital; One of those cheap ones you can get at the fair. "I've got time. Well, more than you anyway. What'll it be?"
"Programming. I don't know if you read my blog, but I'm fuggin Li Mu Bai."
"First of all, nobody reads that self indulgent crap. Second, programming isn't a game."
"Deal with it. My choice, my mortality."
"Fine," he replies, and summons up a couple of computers. Death it seems, owns an iTablet. I always pegged him as a Linux man myself. In any event, he gets to coding on it and I get to coding on my laptop. When Death codes it looks like Matrix rain, except as done by emo kids, so it's all full of AFI logos and skelanimals. The ground shakes with his mighty coding prowess, probably like when John Carmack codes.
Soon he's done and holds up his design. He says, "I read your blog thing. Crap man, does everything need that much text? I mean, seriously you write twenty lines of code sometimes and then crank out 1000 words of soliloquy and self fellating nothingness. Anywho, I got your stupid text file reader thing to finally work. You're welcome. Now give me your soul."
I reply, "I but you haven't seen what I did."
"Fine," he sighs, "what dumbassed thing did you code?"
"I coded a way for Daisy to be remote controlled."
"Eh?" was the last thing he said before Daisy did that machine gun katana thing that it does so well. Again, we've all seen exactly what a remote controlled/AI katana machine gun does to a incarnation of mortality, so I'll spare the mundane details. Afterwards I stepped over the still warmish meats and copied Death's code to my flash drive.
I then left Death's domain and took the bus home.

-In something completely different. I've discovered IndieCade, another Independent game show. It has a deadline of the first of June, which gives me like 2 months to get a project done. I'd like to say I can have Thief done, but without steady animators, that's going to be kind of a trick. So unless I can think of something, I'm going to try to get Paper Zeppelin into a playable state for the event. The really cute thing about IndieCade, is that if you are in the final group, then they show your game at E3. I'll repeat that for emphasis. They have your game in their booth at E fuckin 3.
I'm of the mind that borders on the incredibly cool. I'll see what I can do with it.

- This post, is just a little weird. You see, I started writing it about 5 days ago, and never got around to posting it up. I could go into the specific details, but I won't bother here, because nobody cares and I certainly won't in few months when I get back to reading it. What I did do was write a different post, that I titled Call Me Ishmael, but that one will probably never see the light of day. Just know that it was full to the brim with self loathing and defiance in almost equal measure.
What is of note is the IndieCade thing I wrote right above. Even though I wrote it, and I fully intend(ed) to do that, I'm no longer sure if I'm in a position where it would even be possible. My hours suddenly taken up by far more pressing matters, mostly involving starvation and/or homelessness.
So before I get back to doing any kind of hard core (or even soft core for that matter) coding, I need to get something else that's not even tangentially related covered and working. Sooner, rather than later.

This is my serious face.

=|

Patience is just another word for getting old.

Monday, April 5, 2010

Solution Set

Paper Zeppelin continues making progress. I spent some time over the weekend getting the rest of the level loading system to work and learning about how to both look and and update table information in C#. It's an interesting thing really. The idea is to have each "row" in the table represent a "row" of objects in the level. That way I'll be able to calculate out starting positions based on what row in the table the information is in. So, say there is a plane icon on the first row of the table. When the system gets to reading it, it'll see that there's a plane on the first row, so it'll spawn the little beastie right at the top of the screen. I think it's adorable, and will allow me to make very fast level changes when I need them.
I'll keep at it, since the next step after this is gameplay testing. Then I'll be able to see if my carefully crafted design holds up, or folds like an origami crane. Excitement abounds.

- In other random crap, I've figured out a solution to the problem from the last post. The issue was, given that both the levels will modify themselves on the fly (given clever use of the characters) based on the number of players and I want to branch levels based on performance, how do I allow drop in and out gameplay without somehow screwing the progress that the players had made? I mean, if 1 player played a level and did well and another player jumped in at the end, the 2 players would have success equal to 1 player's worth of skill - which would be a failure.
The solution, has to do with the total number of spawned versus destroyed enemies. So when an enemy is spawned the game will add up a counter for the Total Number enemies. When an enemy leaves the screen the system will euthanise it (so it doesn't take up memory while being lost in space). When it gives the off screen enemy the final mercy, it'll add to a different counter for Escaped enemies. At the end of the level it will calculate the ratio of spawned enemies to escaped enemies, which will indirectly tell me how many enemies were destroyed by the player/s. I could even stick this ratio in the corner to let players know in real time that they're doing well.
The clever bit (I think) is that if players join the game, the level will dynamically update the number of enemies spawned. If they leave, it'll also dynamically adjust. Further, if 1 player is to the end of the level and another player joins, it has zero affect on the progress made. So the players would then be able to continue to the more difficult branch of levels.

- Speaking of dynamic levels, the design document mentions it, but doesn't go into how it works. I'll fix that for those of you at home. Basically, different characters in my level data will load the same enemies. Take this example:

"......11....22...33...44"

The periods are there to represent empty air. I could use spaces, but that's a lot harder to read and line up than you would think. In any event, if only 1 player is active, the game will only spawn the enemies for the 1 characters. If there are 2 players, then the 2's will activate too. So if 4 players are playing, then it'll activate all of them. The enemies that come up will all be the same, but I'll have fine control over them. The best thing I like about it is that it allows me to do stuff with the single player. So in the doc it says that having the Bomb affects your shooting and speed. So if I have fast dive bombers come in, that's kind of cheap. So I can set the single player to not have those right after the bomb is picked up.
In multiplayer, I very likely would want those enemies to require the players to work together to protect the bomb carrier.
In either case, I could probably use the same thing to create difficulty settings, but I think that's missing the point. I plan the use the extra settings not to make the game harder, but to make it different on a fundamental level.

Thursday, April 1, 2010

The Word

Boy was I up late last night. I was chasing the ability to read letters in a word, and I was so close for so long that I kept on hounding it. Now, I have it. It's not all the way built yet, but enough parts are dancing that I can get the code to summon up an enemy based on what the letter (or character) is.
Still haven't figured out how to load the thrice damned things from a separate text file, but I've got it handled well enough to move on and start prototyping. Basically, each level will be made up of several lines of text, great big words that'll summon up everything in the game. A short sample may look like this :

"......<..<..<....@"

See, that doesn't look like anything. But the computer knows better. So after a set period of time I'll ask the computer, "What's the next character in the Word?"
"It's a '.'" it'll reply.
"So what do we do with periods?"
"Nothing, cause they are empty sky."
Then I'll congratulate the computer and give it a cookie.

Eventually I'll ask and it'll say, "There's a '<' thingy. So we should make a plane enemy right?"

So over the course of the level the system will do this a couple of hundred times if not more. Always move to the right and propagate the levels will all kinds of Class Based wonderment. If I add a little thing that makes all the "stationary" stuff go to the left slowly, I've created a scrolling environment. It's a very good thing.


- I'm discovering that knowing enough about C# to be dangerous is only half the story, if not less. For some time the system kept telling me that files aren't where I said they were, and I told the system that it was a liar. Other software that I look at for guidance (and the occasional reverse engineering) referenced the files the same way I was. The system, was simply wrong.
Turns out, I wasn't being polite. Or rather, I was making some kind of formal / informal faux pas. There's some little command that I could add to a file set, that would allow me to reference stuff relatively. So instead of C:/ProgramFiles/CSharp/Loot/stuff.text I could just say Loot/stuff.text. If I went through the right hoops. It also gave me rage when it demanded that I do something special so it wouldn't get confused by the '/'s.
The thing is, this comedy of manners only exists because the things are too basic to ever talk about. It's assumed that if you are a programmer, you should just know these things. It creates a certain kind of unease. I mean I add things, small things, and compile the code just so I know I didn't make a mistake. It makes for slow going.
Eventually, I'll be fluent if not at least conversational.

Wednesday, March 31, 2010

Super String Theory

Right off the proverbial bat, I still can't get the C# compiler to notice that I have a text file that lives among the code. It won't do it. I spent the better half of an hour researching importers and loaders to no real avail (although now I know the theory behind adding 3D models and meshes to a game). In an odd kind of seething fury, I hacked the loading functions right out of the code and assigned a string of letters to be looked at. Then, it almost worked.
So basically, I skipped a step. Before I tried loading a text file, taking the contents of that file and making them a string of letters/numbers and then I tried reading that string. No, I just told it what the letters are supposed to be and had the computer read that.
That breakthrough however came just as the promised drowsiness of Tylenol PM kicked my brain into lizard mode . So I have an idea of how, but now I still need to apply. Provided I can remember of course. Either way, it's part of the larger goal of reading from text. So if that works, I could add a bit later to fetch the data from someplace else. If it doesn't, I could always just assign the variables in the code itself, which is also text. That's a win regardless.


Usually I don't post half finished theories on the diary, and today is really no different. The real reasons are:

1) Look at the site! It's so clean now, and uses pages even.

2) If you look at the little box that I've called "Re-Sources" you'll see a lot of the stuff from before. (although by the time anybody reads this, I may have changed my mind and called it something else)

3) You'll notice that the design document for Paper Zeppelin is up, or at least the parts I have done.


Couple things to notice if I could direct your eyes yonder. There is no Break Point listed. It seems odd that I would wax philisophically about it and then not include it. I got hung up on an issue before I could add it. Issues, I will add comments for in purple. Right now I'm having a design issue regarding player progress and how I can combine a drop in and out style of multiplayer gameplay with a merit based system of level advancement. That will make no sense unless you read the thing.
Next you'll notice that it's really quite short. The Thief enemy defense AI was longer than this. That's because PZ uses very few mechanics, but they're integrated in a way to cascade the mechanics together. The pieces all link together somehow, so my short design and limited ingredients is set up to create an assortment of emergent gameplay. At least, I hope that it will.
Finally, there's no numbers in it. Everything is described (at this point) in relative terms. Numbers are the most variable of variables, so there's no point in trying to make them concrete, especially at this early stage.

Someone out there, assuming that they read this (which I doubt, seriously) may be asking, "Why would you put your work up for someone to steal it?" The answer is simple - it's worthless. That's not quite right, it should say - it's fuggin Worthless. Ideas are crap. Garbage. Even basic designs and documents aren't worth the digital paper they may or may not be written on.
"No," the people cry, "ideas are powerful and wonderful and rare!" I'm sorry to burst the bubble, but they're not. For some people, they may have a good idea once or twice and hoard it like the Gnomes of Zurich.
Others, get ideas all the time. I have lots of ideas. They float on through and sometimes they get caught by my brain. Others float right through and are discarded. But I'm not most people. I'm a designer of systems and a prolific writer of prose. I decide a dozen ideas are crap before I leave my house in the morning.
But it does lead to the point, the only thing worth anything is doing. If Founders just had an idea for a Declaration of Independence it doesn't mean anything. They have to do something with it. Further, it's the act of doing that will shape the outcome. A single idea can be taken and made into different things based on who does it. So like, The Thief's Tale is based on the idea of the original Prince of Persia (oddly, a game I had never played). Obviously Jordan Mechner based his game off the same idea. Our games are quite different because of the people making them.

To wit, here's a list of ideas for games I have cooking in my head at this very moment. Some I may have mentioned here, others have never been and probably never will again. They are, in no particular order.

The Thief's Tale - We know about this one. You can play it over there =>
Silver Knight - Side Scroller Action Hell with inside out storytelling
AeroKnight - Tactical RTS featuring fantasy airships.
Legend - A cycle of games featuring downloadable content. 3D action with destructible environments and physics.
SHADOW - A stealth spy game featuring characters with different skill sets, set in a Renaissance world.
The SHADOW TCG - A TCG based on the above property.
Thrae - 3D shooter focusing on Action Movie tropes and basing the mechanics off of them.
Sword of the Slayer - 3D weapons based fighting game (cancelled)
Paper Zeppelin - 2D sidecrolling multiplayer shooter.
The Star Frog EP - The first "Game Album" - mechanics based on Time, Loss and Failure
- Track 1 : Inevitability
- Track 2 : Time
- Track 3 : Entropy
- Track 4 : Fatalism
SF : Learning to Smile Again - The second "Game Album" - based on Love, Hope and Freedom
Psi-Kye - Metroidvania with psionics, physics and multiplayer.
The Adventures of FlyBoy - 3D flying game featuring a would be superhero.

These are just things that I happen to have written about. Some (like SHADOW) have extensive background that I've worked on. In the case of SHADOW, it's also a comic book script I've developed.
One of them hurts a little, but I'm happy for it. When I was young I played a lot of Street Fighter 2, and thought that the game would be better if I had weapons. Oh, and it should be 3D. Virtua Fighter was 3D, and it was so smooth and pretty. I called it Sword of the Slayer and I designed a dozen characters, wrote out move sets and drew a ton of pictures (I was like, 12 so I had lots of time). I even had the idea of making the female character the "heavy" - slow and powerful.
I set it aside and got thinking about other stuff. One day I was at the local arcade and they had Soul Calibur just sitting there. It was almost exactly the same idea that I had, and executed so perfectly that it brought joy. I then realized that my game, would never be this good. The idea executed too well. Namco had simplified and streamlined, balanced, perfected it. So instead, I played the hell out of SC.
My idea was good, but the doing was the important bit. I'll always remember that, and then get back to coding.
So yes, I share all of my ideas in one way or another. I mean, seriously, how many thousands of words have I thrown at internet describing my ideas? So here's an idea - take anything I've written above, and make it. I'll do the same. We'll see how different those seeds will grow.

- I had once regaled with the tale of chatting with the dudes from PAX. I think it's here. I came across something this morning, and had the weirdest feeling. At PAX East, they had an indie area. Not just the PAX 10, but an indie area with booths and stuff.
I'm not saying that I had really anything to do with that, but maybe just maybe, the meme got inserted and rattled around a bit. Maybe when planning the thing it rattled back to the fore.
Else maybe I was one of a legion of indie developers that have posited that same question. One more straw onto that particular camel.
This year, I'll tell them that their booth should have cookies...and blackjack.

Tuesday, March 30, 2010

Dead Letter Society

Nope. The title doesn't make any sense today, and it probably never will. I'm pretty sure that nothing I'm about to write will get us there in the round-a-bout way that I frequently use either. It seemed like a good idea at the time (which was about 35 second ago). The less said about it, the better. Let's move on.
Music is all installed in Thief now. Well, not all installed, but everything I have is in. The music plays when you start, when you play a level and stuff. It gets quiet when you pause (which is pretty cute really). It also pauses and restarts when you die, with the adorable little, "Ah, I bet that hurt dinit?" doom music in the middle. Finally, the little dolls also trigger a similar, yet happy jingle to play to let you know that you've done something right. Now that it's finally working, I'm rather quite happy with it.
What I want to rip like a TPS Report is the other thing. I'll call it that for now because I have both Fear and Loathing for it. Like I mentioned before, the basic class structure of the thing that will one day be Paper Zeppelin is all finished. It works, and the parts of the design that should interact, do. At this point, it's quite easy to add things to that structure. I could use my time and make what would seem to be "good" progress by filling out the rest of that structure and then making the load engine work. I used quotation marks around "good" because I mean "stupid." The loading engine will be the thing that conjures up the different class things. They require it, and they'll rely on it for the game to work as anything that resembles fun.
So, I could go through and add the rest of the little dudes and add 4 player support and all of that, but unless I can get the game to read my levels, it amounts to about zero. So, I felt an experiment was in order.
I set up a quick new program (having learned from The Thief's Tale that doing experiments in the main code is a bad idea if you can avoid it). It this program, I created a text file with some numbers in it. I then researched (which is plagiarizing from lots of people instead of just one) the function that will read a text file and can assign bits to variables. Then I told the screen to change colors based on what that number was. The theory says that if it's working right, it should sparkle in many colors like Josephs coat. Ah, wait, I hate bible references. I mean to say, "Like Saruman of Many Colours' Robe." That's better.
Either way, it didn't work. The color changing thing works cause I tested it all by itself. The biggest problem that I'm struggling with is that it could not find the text file that I had added to the rest of the program files. It would simply say, "I don't know what you are talking about, because you are stupid." So I went to an example and set up my program exactly the same way and got the same answer, which is stupid because to my eye, the are exactly the fuggin same. Yet the other one works without issue.
Finally, I got a new error, which is a kind of progress really. It said that there wasn't anything that could interpret the text file. I'm not sure what the hells this means though. But if I'm ever going to get this working I'd better get started figuring it out.

- I had mentioned in a previous lamentation a somewhat lofty goal of producing a game in a matter of a month or so. The intent there was that if i could do such a thing and do it consistently, then I could conceivably do just that for a living, and make games full time. There's a odd mix of unease and glorious freedom there. However, since I don't have the requisite 10 hours a day to invest yet, a goal for this project was to see how many hours it would take for me to put Paper Zeppelin together.
Obviously, it's taking a long time. Although I kind of expected it, and I'm no longer sure that it'd ever be a good model anyway.
The first reason is the biggest - I didn't know anything about C# when I started working. I've made some staggering progress since I've started, but I not yet ready to call myself a programmer yet. I know that I'd be far quicker if I knew more about the ins and occasional outs of the language on a higher level. I'm even considering taking a formal class on the subject now.
The second, makes more sense the longer I do this. Classes, by their nature, are portable. This will make all of the later projects go much faster because I will already have the basic block to work with. For example, in the next project, the EP, out of 4 games 3 of them are shooters of some kind. Collision detection, bullets, enemy AI structures, all of that can start with what's already in Paper Zeppelin. I'll be able to get a working thing that I can iterate on very fast. I'm talking in a manner of days if not hours. I'll give you an example. Once I got the basic enemy in PZ working, I was able to copy most of it wholesale, make some small modifications and get bullets working. That was in the game in about 10 minutes, and I could do it faster now. Making them work correctly is a different matter entirely, but the theory holds.
So basically PZ is taking longer than I would thing most of these projects would take, but I'm still convinced this is both do-able and positive.

- Finally, for those of you chomping at the bit (Readers? HA!) to get your hands on some Design Document, it's still in the works. The biggest issue it that I could sit and write with my limited hours, or I could code. Right now, the coding seems like a better use of my time when I'm home. So the design document (and the development diary) get written when I have time at a machine that isn't in my Fortress of Solitude. I'll add it soon-ish. I'll probably also use that opportunity to spruce up the blog a little, and add some more pages. Less stuff running down the side that way.

Wednesday, March 24, 2010

Mix Master

If I could hate things to death I think I would, probably way too frequently. Could my evil eye increase in potency enough to cause harm to things? That would be good.
Actually, that would be bad. My laptop would have a 40 caliber glare hole through it by now. A smoking void that would probably increase the air flow through it. Yeah, it's probably best that I can't hate stare something to harm.
In any event, I figured out the stupidity of the program yesterday. The loop only wanted to work if I put graphics up. I don't know why really, but once it functioned I was able to make progress. I discovered that I can have Sounds and I can have Channels. Channels are made up of sounds, and exist in a 1-1 ratio, so I thought that they were interchangeable. It turns out that they aren't. I don't have finer control over channels, just different control over them. So I can pause a channel, I can only stop and restart a sound. I can alter the volume of both, but the volume knob on sounds seems to be broken. I can also pan both, and again, only channel panning works worth a damn.
So now, all the music is a channel. 2 channels actually. The normal music and the other is a different tune. So I set these up with some music and assigned a little switch, so if I make The Thief duck, it changes the channel playing. So I can switch back and forth between them on a whim (using something other than ducking obviously).
This new knowledge of something that works will also allow me to add working functionality for positional stereo sound. My new tricks will make the game that much more Pro. I'm happy with them, although I fear that the new ability to change music dynamically, or mix songs together may be giving The Composer some worry.

Tuesday, March 23, 2010

DJ Zero

Well I wasted an hour yesterday. I had but a simple goal, to install a crossfader into the sound code for Thief. Instead I got to bang my head bone on the wall for 60+ minutes and have nothing to show for it but a headache and the evaporation of a couple of brain cells.
The idea was basic enough. I was thinking about how to make the music work really well in The Cliff level (see the last post), and I remembered playing DJ Hero, a game I suck at by the way. In it, the player uses a little switch to set the volume of the right and left records into the speaker. So move the little knob to the left and you hear more of the left record and less of the right. So if the musics line up, you can combine them into a different thing altogether. A "Mix" if you would.
So I thought, "Hey, let's play 2 music tracks at the same time and let's make the volume of each a function (used in the mathematical term here) of some other variable. So let's have one be that, and the other be the inverse." The thinking was, if that number was between 1 and 0, then having the variable be set to 0 would be all of one track and none of the other, like pushing the little knob all the way to the left on a DJ Board. The 1, would be all the way to the right and anything in between would be a mix of the two.
Having done some tests on it, it worked out pretty well. At least in theory. I don't have musics that match, but I could get 2 things to play at once.

Then the whole thing was shit.

You see, I then tried to make the twice damned thing controllable. So I installed a little bit into my control code that would allow me to modify that Crossfader variable, and...nothing. It didn't work. So I told the computer to tell me when it was running the code I had just installed. The conversation went like this:

"Hey, computer, are you running that code?"
"What code?"
"The code I just wrote. It's right next to that other code you just ran."
"No it's not."
"No, really, it is. Could you look again?"
"Why?"
"Because I asked?"
"Wait, what are we talking about?"
"The code. Remember?"
"I like kittys."

That's exactly how I remember it anyway. So, like a good little code monkey I copied the whole thing over to a new program. Thief has like, 12000 lines of code, so maybe, just maybe, something else was screwing the pooch. I hit the "Go" button and:

"Hey, no problem now right? I'll push the key for you."
"..."
"Computer, did you see that key?"
"No?"
"Are you asking me?"
"Nooo?"
"So you don't think a key is being pressed?"
"No."
"Really? You're doing this to me? Now?"
"MMmmm...panda cookies."

So I cut the sound code out of the code I was writing. Now we were reduced to just loops - the basic building blocks of almost everything in a computer system. The Bread and Butter that keeps a coder coding, although less oily. So with that done, I mashed the keys, hoping for any sign of intelligence or life. Instead the loop just ran, oblivious to the outside world until I gave opened my razor and gave it the Sweeny.
I'm not sure yet exactly what happened, but I managed to swear a whole lot before I went to bed in a hazy anger, a kind of half hearted digital blood lust.
I'll try again later. Although now I have a crazy jones for those chocolate panda cookies, you know, the ones with the little pandas (or koalas, if you're into that) doing different jobs. I wonder if there is a Code Panda, they'd be the ones with the laptop and the furious eyes.