Monday, December 31, 2012

BDA Progress 6 - The rest of it

Tada! Base colors in. I'm going to skip details (texture, belt buckles, etc) and go to Vertex Weighting. Not having a busy texture will help me see what's going on (admittedly, so will hiding the texture from viewports or removing the texture altogether) and I don't want to get too far into the texture and realize I have to do some major overhaul just to make deformations work.

The plan is to SkinWrap the Skyrim female_0 body and make various parts rigid. I may need to assign the tassets to skirt bones by hand though.

26,634 polygons now. I added some more details to the greaves

Sunday, December 30, 2012

BDA Progress 5 - Helmet


I spent about two hours on the torso today. I originally had the torso as a front and a back stitched together on one side. While it looked good, the relax tool wouldn't produce straight lines; everything was skewed towards the side stitch. So, I split the torso into 3 pieces: Front, Back Left, Back Right. From there, I pelted and relaxed them individually. Then I target welded them together, relaxed the entire piece, and fitted it back into the existing UV maps for the other pieces.

The only piece I have left to do on the torso is the thigh. I still need to find a whole Bioware dragon logo.

The helmet is done for this stage. It wasn't very complicated and only took about half an hour to get the pieces in. The hands are next.

I am definitely not looking forward to reshaping this to fit the _1 body. There's also the issue of Glow Maps disallowing Specular Maps. For the helmet, this isn't a problem. Not so for the chest. Those 6 rectangles are in texture, not geometry. So, I'll have to either a) cut the rectangles out as geometry but leave them flush or b) not have a specular map at all.

Oh right, I'll have to recreate some, if not all, of the armor for the male version as well...ugh. I could use the SoMuchMorpher tool to automate pretty much everything above (rigging and body shape changes), but the last time I did that, I wound up reweighting everything by hand. I'll probably use it to morph from 0 to 1 and then Skin Wrap from 0 to preserve weights (not sure about the weighting).


-------------------------

So many "Dragon Age" and "Skyrim" posts...

Saturday, December 29, 2012

Blood Dragon-ish Armor - Progress 4 - Solid Details


I have most of the basic details for the torso done. The Bioware Dragon will come later as I'll probably trace it as a vector so I can scale it up.

Note to self: Large angles + few polygons = obviously distorted texture. Small angles + too many polygons = obviously distorted texture. See the pauldrons (large angle) and lower hip plates (small angle) for examples.


I mentioned UV Unwrap problems in my last post and, well, they struck again. Look at the center angled rectangles and compare them to their neighbors. They are being rotated counter clockwise and translated until they meet or pass the UVs for adjacent polygons. As that line became progressively smaller, the amount of distortion grew (some UVs even twisted themselves). To correct it, I had to drag each UV vertex to its proper position and delete some stacked polygons (no idea how they were made).

Friday, December 28, 2012

Blood Dragon-ish Armor - Progress 3 - Unwrapping



I've finished unwrapping all the pieces of armor and merged all the torso pieces into one object. Right now, I'm applying base colors on the main body of armor to get a better idea of what the armor will look like.

The current torso texture resolution is 2048x4096, twice the size of the original (instead of 4-8x like with the weapons). The entire armor set is about 26,000 polygons; not bad.

There's a lot of UV stretching that I don't like for nearly all the pieces. My UV unwrap process goes like this:
  1. Add Unwrap UVW Modifier
  2. Manually create seams
  3. Select each section of polygons (Select one polygon, expand selection to seams)
  4. Pelt
  5. Relax by Face Angles
  6. Adjust if needed
This usually works and gives great layouts, but in some cases relaxing by either Edge or Face angles causes vertices to overlap or implode into nothingness. When that happens, I have to cut objects into more pieces than I'm comfortable with due to how much work it'll be to make them seamless later on. For the pauldrons, I had to add some seams and delete some unnecessary edges because they were throwing the algorithms for a loop.

Wednesday, December 26, 2012

Odds and Ends

Steam just tried to redownload all of Fallout: New Vegas for no reason. It didn't even check for integrity first. It just went "Well, gotta download all 9.2GB again". After stopping it and invoking an integrity check manually, it hit 100% completion and stayed incomplete for a bit, then came to the conclusion one file had to be downloaded (most likely the one it was trying to download), and downloaded that file in about 10 seconds.

--------------------------------------

I've trimmed 5k polygons off of the Blood Dragon Armor and added a belt. No new screenshots as you probably won't see where the polygons were cut (unless I used wireframe or edged faces, and even then, barely) and the belt is only visible from certain angles due to all the plates obscuring it.

It's about time to start unwrapping.

--------------------------------------

I found a fun group on Borderlands 2 (PT2.5) several days ago and we opted to take on all the raid bosses. We managed to kill Vermivorous, Terramorphous, and Pete without much trouble (Vermi was a pain to create) but Hyperius and Master Gee were ridiculous (everyone died within 15 seconds while spread out). So, we decided to make ourselves immortal (instant second winds) just complete the set.

Terra, Pete, and Vermi weren't too bad. Pete's annoying because of his near unavoidable novas, Vermi just has ludicrously high HP, and Terra, well, he's a bit better after the Bee nerf patch. They gave okay loot (a green or two, half a dozen blue and purple). Nothing to write home about and just enough to recoup ammo costs (except Terra, who drops tons of ammo anyways).

Hyperius and Master Gee are way too overpowered and take forever to kill. Even with immortals, it took 15 minutes of continuous fire from Infinity Pistols to kill them. Loot? A dozen Seraph crystals, a single blue, a single purple, a couple greens, and, if I remember correctly, a white. Barely enough loot to buy 12 rocket ammo.

Seraph gear is supposed to be the next step below Legendary, so you "farm" crystals and wait for something good to show up at the Market. Still not worth it. Why? The cost of the items is greater than a single run through the Guardians. At least Pete is available more than once a day (for now).

I don't even like the Seraph items anyways. Legendaries and some E-tech/purples hold more visual appeal and, in some cases, better stats/utility than them anyways. Anyways, by the time you get to the point where you can take on these bosses, your gear is already better than what you could buy after you kill them enough times; effectively making the whole process pointless (not to mention how comfortable you are with your gear now).

So, what's the point? You spend hours killing bosses that easily deplete your ammo, drop less than mediocre loot, and give you tokens to buy items that are even less stellar than some standard items. Maybe I merely hate the token system. "In addition to standard currency, you have the following [insert number here] other currencies which take [insert high number here] times as long to collect for items that are probably not better than what you had before. Oh, and you can't get more than [insert number] of them per day."

Conclusion: Raid bosses aren't worth it. For all that time and effort, you get next to nothing in return. "Oh, congrats, you just beat a really, really hard boss. Have a high fi...nevermind." On the plus side, Terra is still kind of fun.

Monday, December 24, 2012

Blood Dragon-ish Armor - Progress 2

Slight clipping on the right side due to local alignment on the Symmetry modifier

Well, there it is. Skyrim-fied Blood Dragon Armor. It is approximately 29,000 polygons. My next tasks are to correct MeshSmooth errors (2nd-3rd pass), harden edges, round out a couple components, and make sure the standalone pieces (gloves, boots, body, and helmet) have caps just in case players don't use the full set (no see-through joints). Once those are done, I'll start unwrapping.

---------------
Just listened to the Hellgate: London theme after forgetting about it for, probably, a few months. Ah, fun times. I still have the game install directories, but I'm not sure if the game is functional after migrating from XP. However, it gives me the "insert CD" prompt for singleplayer (promising).

Saturday, December 22, 2012

Torso Progress 5

I've made the collar, but the circumference is a bit too hard. Same goes for the, uhm, sleeve holes. The overall shape has also been changed to remove the form fitting curves it had last time.

----------------------------

The Witcher 2's bonus content was updated on Steam and it had some problems. First, the soundtrack is now 23 tracks in WAV format instead of 46 tracks in MP3 format (fortunately, I found a post that mentioned this as the update was downloading and promptly made a backup). Second, it deleted all downloaded content and downloaded EVERYTHING again (not the game, just the bonus content), resulting in a 2.8GB download. Third, all the bonus content folders are no longer in the "Bonus Content" subfolder (in fact, Steam tried to delete it), they're placed in the main game folder.

On the plus side, there's a whole bunch of high res artwork to look at.

Wednesday, December 19, 2012

Torso Progress 4


I forgot to post progress for a couple days. I've made the couters (elbow pads), the tassets (the mail that hangs around the thighs), and just started on the upper body.

The placement of the plackard plates isn't set yet. As you can see in the above picture, they don't fit the Skyrim body. Once I fill out the upper body's armor, I'll start adjusting the plates. This is partially why I opted not to add all the detail at once, too much to change later.

Monday, December 17, 2012

Torso Progress 3

This is the front plate of the plackard, despite its similarity to a badge.
The original mesh's UVs were off when I imported them. However, once I blew it apart into elements, there was a "backside" to the plate that had the correct UVs. All I had to do was offset it so I could trace my cuts over it (splines refused to start and if they did, every other point was on the furthest or closest y-axis point). The blue piece is about 1k polygons; the pink piece, 10 polygons.

Saturday, December 15, 2012

Torso Progress 2



Since there are different names for each piece, I'm going to lump them all into "torso armor" or "hip armor".

The armor is taking shape now. I have to extend the belt a bit until it hits the side panels and modify the turquoise piece's shape to have a better curve at the sides. From there, UV mapping to pull out more details.

Friday, December 14, 2012

Culet Progress

The hip panels aren't looking quite right when compared to the rest of the armor parts. I think I'm going to unwrap them into a shared texture, rough out the details in Photoshop, and cut those details out now instead of waiting until I've finished all the other pieces.

"$.mat = null" is handy for removing textures from objects. I had to look it up because I couldn't find a way to remove applied textures from objects. Sure, you can hide them in viewports, but I wanted them completely unassigned just to clean things up. I had to use this for the hands and feet because the greaves and gauntlets were built out of their respective body parts instead of from scratch.

Thursday, December 13, 2012

Poleyn Progress



I took a day off from working on the armor because I was called in to fix a label printer and decided I'd spend the rest of the day searching job postings. I'm working on the back of the plackard and a job application right now.

Tuesday, December 11, 2012

BDA - Overall Progress

What I've completed so far

Remaining pieces: belt, torso, couters, poleyns, tassets and the plackart.

I'm holding off on some details until I unwrap the pieces. That way, I can cut details relative to the texture instead of eyeballing it.

Monday, December 10, 2012

Pauldron and Gardbrace Progress



I've started work on the main body of armor. It consists of the torso and multiple pieces that attach to the body in panels. Fortunately, the pieces are all separated into elements that I can blow apart and work on one at a time.

The pauldrons (above, purple) are currently only the geometry I derived from the original's texture. The splines you see around them represent the outline of the original model and are adjusted to fit what I have.

On the gardbrace, the spikes are extruded out and a part of their backing. The original has each one as a separate set of 4 polygons rotated and placed intersecting the backing. I might adopt the original's method as my method creates a lot of supporting polygons. Now that the spikes have been extruded, I could separate them into their own elements, fill in the gaps, and delete the supporting geometry. This would save about 100 polygons and only become an issue if I wanted to change the underlying geometry.

I have not unwrapped any piece of armor because I think I'm going to have to cut down on the number of polygons. The finished armor will probably be 40k-50k polygons, but a full set of Daedric armor is about 10k polygons. For weapons, I like to keep under 10k, but I don't have an ideal target for armor.

Given how much work this is for the light female body, I think I'm going to only make modifications to fit the light male body instead of starting from scratch (Except for the main body). Doing that will also allow me to share textures between the sexes, cutting down on space usage. I'm thinking about 1024x1024 textures for the gauntlets, helmet, and greaves and 2048x2048 for the main body.

Sunday, December 9, 2012

Gauntlet Progress 3


7,000 polygons...yeah...I'm going to be cutting that down. Meshsmooth is great, but it creates a lot of unnecessary polys.

Given how dense the polygons are for each armor piece, I am really happy I have PSDPathUnwrapper. Export to paths, open in Photoshop, add a 2px border, and I'm in business. Of course, unwrapping this doesn't look like it'll be pleasant. I think I should go dust off Mudbox...

Saturday, December 8, 2012

Gauntlet Progress 2


The part in blue is the result of the rings from my last post. The wrist cone (Woo! Made up terms!) has 12 dips instead of the original's 13 because the circle splines I created were made with 20 points. I don't know how I got 12 from 20/2, but the geometry is sound, so I'm not complaining.

It has had two MeshSmooth passes: One on the entire object and another on the dips. It is currently 3000 polygons, but I can cut several hundred out in another reduction pass.

The purple hand is from Skyrim. I superimposed the cover from the original gauntlet, cut its shape out, and used a Face Extrude to bring it out a bit. Now is the hard part: fingers. Each knuckle has a raised cover, but I want them to flex properly, so I need to consider how I make them in relation to the joints.

Ideally, I do not want to hide any body parts when equipping this armor ingame because I want to allow mixing and matching with other sets without having Rayman-like gaps between limbs.

Friday, December 7, 2012

Gauntlet Progress

As mentioned before, Dragon Age's proportions differ from Skyrim's. In particular, female hands.

Dragon Age's female hands are the hands of nobles. Small, dainty, and perfect for soaring through the air en route to a face at Mach 1. So, a tapered, wooden dowel. By contrast, Skyrim's female hands are big enough to grab said face and crush it into Oblivion. In other words, a 2x4.


I can't get away with using the world coordinate system without rotating the camera to really odd angles like I could with the greaves. So, I created splines from edge selections of key areas on the original gauntlets, made spline circles, adjusted radii to match (more or less), and will string them together to create a more manageable shape that I can then instantiate and fit over Skyrim's body models. From there, I'll duplicate the hand, un-subdivide it, and build out geometry as desired.



Thursday, December 6, 2012

Greaves Progress

I started on the boots yesterday, but adapting their original design to Skyrim bodies is rather awkward. Skyrim has feet turned slightly outward, the knees aren't clearly defined, and the edge loops around the knees are at an angle instead of straight on. Making the main body of armor is going to be interesting...

I think I'm relying too heavily on meshsmooth. The helmet worked out well with untouched meshsmooth, but the greaves aren't looking too hot. I'm using the chamfer trick to make harder edges I learned from making Yusaris' crossguard wings. So far, it looks like I'm using around 3k polygons for each piece of armor. The helmet is 3k and both the greaves are 3k total. Gloves might be a little more due to fingers, but the cuirass might be 3-4x as dense due to the coverage area and details I'll be pulling out.

Essentially, the greaves are the original Skyrim body calves and feet, merged, un-subdivided, and scaled up to a size that would better reflect a boot's size. A lot of the medieval armor I've been finding have been rounded with few, if any, hard edges. It makes sense to not have hard edges (nothing to catch on), but ultra-smooth armor just looks, well, wrong. I'm trying to bulk the greaves up a bit to counteract that.

Wednesday, December 5, 2012

Helmet Progress

Well, this didn't take too long to setup. There were a few issues that popped up when applying symmetry, but overall it's working out well.


That's one version down, 3 to go. One for light male, one for heavy male, and one for heavy female. Because of the way weightsliding works (at least in Skyrim), I cannot recreate the model for the heavy versions. Every single vertex must stay the same aside from position. If I so much as change the number of vertices, I'm going to wind up with a porcupine skull ingame (if anything shows up at all).

I think I'm going to make each piece of armor have its own texture instead of one huge texture. Why? 1) Photoshop won't get bogged down as much and 2) The game will only load the textures it needs, not a huge texture for all the pieces (although if the player uses all of the pieces, this is a good thing).

Making armor...I think.

I haven't really tried making armor before. The closest I got was the Leather Duster and that was mostly auto generated via cloth modifiers (not too happy with all the triangles it made). So, this time I am going for it.

As usual, I'm cloning an armor set from the Dragon Age series. Why? I'm not comfortable enough to build armor from scratch and having an existing model to look at shows me how to construct good edge loops.



Sunday, November 25, 2012

Asala Greatsword - Texturing

I've started texturing the model now and I've hit the all too familiar color matching problem. I don't have access to the source textures (not the textures that shipped) for the original model, so I have to guesstimate the base color of details, highlights, and shadows from the composite. Since I made most of the details actual geometry, I can skip a good portion of the texture and leave flat colors (touch up comes later), but that doesn't exempt me from matching the color scheme.


I'm off to a good start, but the crossguard's filigree is a pain because I have to simulate the shadows and highlights (yes, it can be done using the normal map) and trace the original patterns before distorting them to fit onto my UVs.

----------------------------------------------------

Quite a few of the weapons in Dragon Age 2 are straight copy/pastes from Dragon Age: Origins; no higher resolution meshes or textures. It makes sense to do that from a time standpoint, but don't the devs have the original masters that generated what they shipped? Surely it doesn't take that long to lower the optimization aggressiveness, hit export, and carry on, right?

This is assuming, of course, they didn't originally model the weapons with a 1000 polygon limit using only polygons (no splines, patches, etc), split the UVs awkwardly in half (for swords), and create the textures in 128x256 in sideview without vectors.

Saturday, November 17, 2012

Home IT crash courses

I've finally setup my own virtual PC lab in VirtualBox. I'm using 2008 R2 to create an Active Directory, have a WinXP client, and pipe them both through pfSense. It only took 2 days to install and update 2008 R2 with most of the second day spent fiddling with VirtualBox's quirks when trying to get the XP client working from an existing vdi.

Things that went wrong:
  • Didn't use a 2008R2 SP1 install cd/slipstream with SP1/Use 2012's eval
  • Skipped installing the DNS role because the router will take care of it (wrong)
  • Moved XP vdi into a virtualmachine folder before VirtualBox created the machine, thus resulting in it saying the machine already existed when it didn't (no configuration files whatsoever).
  • Renamed the XP vdi after selecting it, but before creating the machine, resulting in VirtualBox opening 4-5 "Select disk image" dialogs with all of them non-responsive. Had to force quit it and rename the machine's folder half a dozen times.
  • Set secondary DNS server on client and server. Forwarders were already setup on the server, so all I had to do was point the client's DNS settings to the server and the server's DNS settings to loopback with desired DNS servers (Google, OpenDNS, pfSense, my router) set as Forwarders in the DNS role.
    • Still having problems resolving. I have to ping or attempt to connect to sites twice before they'll work.
    • Having the wrong DNS settings on the client will result in it hanging at Retrieving/Applying personal settings. The machine will respond, but since it isn't logged in yet, you can't do much anything.
But, I now have a working domain that I can finally install Outlook and Exchange on. I could install Outlook before, but the interview is probably going to contain how to set it up and I'm not going to fork over my login credentials to a trial email client whose downloading process is needlessly long and, well, read my previous post.
--------------------------------------------------------------------------------

I woke my desktop from sleep half an hour ago and the following occurred:
  • Firefox was frozen, but not "not responding" or whiting out
  • I could not open new explorer windows.
  • Then I saw the network connection icon was displaying a yellow exclamation sign
    • Unplugging the Ethernet cable didn't change the icon to a red x.
  • I could move between and interact with windows, but not navigate into or out of currently open folders
  • Start Menu would open and highlight what the mouse hovered over
  • TaskManager opened as a blank window with menu items, but could not be closed or moved
  • I could open run dialogs, but shutdown -r -t 0 didn't even execute.
So, I hit the reset button and watched as it "resumed windows". It's done this before. It's like it does not completely load from hybrid sleep and enters the above quasi-functional state. This hasn't happened for a long time and I'm starting to think it isn't a coincidence it stopped when I moved the page file onto my other drives and only started again when I put a small page file back onto my OS drive.

*As for why I put one back. It turns out using one drive for documents, music, page files, AND Photoshop Temp files and using them all at once is a really bad idea, especially on a 5400 rpm drive. It's like Windows refused to acknowledge I had a second page file on a faster drive and my machine would occasionally lock up while the slower harddrive made heavy access sounds..*

Once I got to the login screen, it said I was still logged in, so, as previous experience dictated, I waited for all the harddrive grinding to stop before logging in. Once I tried, the screen went black before I could click my name, my monitor lost signal, then the bios showed up. A complete restart. Again.

Apparently, all the commands I issued before pressing the reset button were still queued up when it restored from the hibernation file...which doesn't make sense to me.

Friday, November 16, 2012

Asala Greatsword - No more polygons

Okay. Now it's official, I'm making the bands in the texture. The bands you see above add 8440 polygons and put me way above my comfort zone of 10k polygons.

I looked up, got the gist of, and tried patches, but they're even worse. I didn't even get to double symmetry to cover all sides. There were just too many polygons per band.

I could trim maybe 200-300 polygons from either method, but that still leaves me with an absurd amount of polygons. So, I'm going to try extruding a little tube to merge the crossguard with its rings and leave the rest in texture.

--------------------------------------------------------------

I have 3 days to learn, configure, break, fix, troubleshoot, and otherwise become an expert on Exchange and Outlook for an interview Monday, 100 miles from home, in the morning, through several heavy traffic areas. Wooo.

Currently, I'm waiting for the Windows Server 2008 R2 VM I just created to finish its first batch of updates (128 updates, 350MB). I have a Windows XP VM ready to go, but the Server VM is taxing my harddrive and I can't copy it over without slowing everything down significantly.

Downloading Exchange was easy. Find it on Microsoft's site, hit download, count to a hundred. Outlook, on the other hand, was annoying. I kept getting redirected to a text-only page saying "Server error!" in 4 frames surrounding a Windows Live login. This lead me to create a Windows Live ID (ugh), log in, verify email, read the "We won't give you the option to opt out of special email offers until you get them" and "We now own your personal information" license agreements, get to the download page, download the downloader for the download (Is Outlook really that big?), and spend 5 minutes trying to sign-out because the Sign-Out button kept redirecting me to a "You can't do that"/"Server Error" page. Once I managed to sign-out, the button did not change to "Sign-In". I don't recall a sign-in button anywhere, actually.

Why was a Live ID necessary? Simple: You have to get a trial key.
I can download a dozen flavors of Windows and install them in trial mode without a key, yet Office and its components require trial keys. I'm not seeing the logic there.

--------------------------------------------------------------

EULAs and licenses in general have gotten way out of hand. Everytime I install something, it's like I've signed my life away. I can understand the "don't steal our stuff" parts, but all those Marketing/R&D/CYA sections are ridiculous. Every "Agreement" I read just reaffirms it is in our nature to screw over the other guy. Loopholes, specific language, definitions in context, all that jazz.

Then you have all the legalese to sift through. Everything is intentionally written to be vague and hard to read. Additionally, THEY USE ALL CAPS TO MAKE "IMPORTANT" SECTIONS EVEN HARDER TO READ BECAUSE WE DON'T LIKE READING BLOCK LETTERS IN HUGE CLUMPS BECAUSE IT DOES NOT HAVE THE STANDARD FLOW OF LOWERCASE LETTERS, THUS MAKING IT MORE DIFFICULT TO TRACK YOUR POSITION IN A SENTENCE AND THAT EXTRA PROCESSING MAKES KEEPING TRACK OF THE SUBJECT MATTER EVEN MORE OF A STRAIN FOR THE "AVERAGE" PERSON. SO, IN ADDITION TO ASSUMING EVERY USER IS HELL-BENT ON DESTROYING THEIR COMPANY FROM THE SLIGHTEST PROVOCATION AND WRITING DOWN TERMS TO PROTECT THEM FROM SAID VENGEANCE, THEY DECIDE TO SCREW OVER THAT SAME PERSON FOR GP, GENERAL PURPOSE. BECAUSE, IF THEY'RE GOING TO DO IT TO YOU, YOU MIGHT AS WELL DO IT TO THEM FIRST, RIGHT?
*Now: How many of you read that as yelling?

I'm pulling from Graphic Arts lessons for the above section. Also, the afterimage of the whitespace between lines is uniform when in ALL CAPS, thus making it harder to track your position using landmark letters/words. Try it. Stare at a full page, all-caps section of any "Agreement", shift your eyes until you see the afterimage, and look back. Now, try it for a lowercase section. Or, try reading any book in all caps. Not fun. Although, I was probably the only person to say caps were easier to read on that graphic arts test...oops.

...I'm tired.

Thursday, November 15, 2012

Asala Greatsword Progress #2 and Job Hunt Update

The polycount is quickly rising. I'm almost at 6k (original is included in the screenshot's polycount). I'm making the topmost details in the texture physical geometry with the rest staying in texture. This method is giving me some bad vibes about the end result, but I don't want to sit here twiddling my thumbs because it may not look right.

If I made the rest of the metal...uhm...bands on the crossguard geometry, I'd probably add another 1200 polygons. It is quite tempting.

----------------------------------------------------------

I got a rejection email, ahem, personal response saying the following:

  • I had "a lot of technical skills" (good) "to acquire" (ouch) before being able to work in their Junior IT position.
  • "It would take a lot of training" (You said you were willing to train...) "to provide you with all the business, sales, and technical knowledge" (Sales? That wasn't in the description and I'm not going to sell product when I'm trying to fix machines). 
  • "We have no problem providing training" (Uh huh) "But $15/hr is too much to pay a Junior IT position" (So, the bottom end of the average salary for a Junior IT position according to Glassdoor is too much.)
For the technical skills, I knew I wasn't going to get the job as soon as I read them. Here they are:
  1. Ethernet, TCP/IP protocols (down to the packet capture level)
  2. Telephony (PRI/ISDN/POTS/PBXs)
  3. Linux
  4. Planning, installation, troubleshooting and administration of Exchange 2003 and 2007/2010.
  5. Planning, installing, troubleshooting and administration of Microsoft Windows 2003/2008/2008R2 Server and Windows XP/Vista/Windows 7 Desktop operating systems.
  6. Active Directory and Group Policy creation and deployment.
  7. SonicWALL firewall and security products
  8. Hyper V and/or VMware virtualization technology
  9. Microsoft SQL and mySQL
  10. Asterisk PBX compiled from source code and Polycom IP phones
  11. Programming: PHP, ColdFusion, .NET
Out of all those requirements, I had half of 1, maybe 2. Should probably add Windows 8/Server 2012 to the list if they haven't filled the spot yet.

From what I've seen of other "Junior IT" positions, the requirements for this position were absurd. For example, another Junior IT position ($12/hr, 3 days a week) I applied for required the following:
  1. Installation of Windows XP/Vista/7 and drivers for specific hardware
  2. Familiar with joining machines to a domain and setting up/using Active Directory
  3. Familiar with troubleshooting Windows machines
  4. Familiar with networking
For these requirements, I definitely had 3 out of  4.

I kind of wish there was some sort of standard on what is and isn't "Junior" level because the differences between these two are ridiculous. (I didn't get the bottom position either. Oh well.)

Thursday, November 8, 2012

Asala Greatsword Progress

Just a quick screenshot of where I'm at now.
I think I'll have to wait a little before I merge the rings into the crossguard like in the texture. I am considering adding additional geometry that wraps the ring to the crossguard instead of merging the two objects together and have been looking for swords with metal rings on them for references.

Wednesday, November 7, 2012

Starting on Asala

No, not the Armenian Secret Army for the Liberation of Armenia.

Now that Yusaris has been released, I've started work on it's sister sword, Asala.


Unlike Yusaris, Asala's original model's plainness is rather hard to break away from. It doesn't have a lot of detail I can turn into geometry without really cranking up the polygon count. For example, look at the bottom right viewport. There is so much filigree it isn't funny.

Right now, I'm getting all the big details done. I've worked on the handle, pommel, and blade. I'm currently working on the crossguard and it's a bit tricky. There are a lot of elements in the texture that flow on, into, or over other major pieces of geometry. So, I'll have to selectively raise and lower geometry to better represent the texture's details. Or, I could just draw it all out in splines like I did with both Vigilances and make a 20k polygon sword. Well, 40k because there are two sides to this weapon.

Wednesday, October 24, 2012

Yusaris Greatsword progress, Part 2

I finished the handle details. They added about 3000 polys to the model, but I believe it'll be worth it in the end.


The polycount includes the original model, so it's off by about 810 polygons. I am in an uncomfortable position of having more vertices than polygons. This probably means the model isn't very efficient with its vertex usage, but there isn't much I can do. Most parts can't be welded together and those that can would only create more polys/verts as I try to merge their shapes.

For how far I'm off, this might not be a problem ingame, but it still bugs me. The problem might go away after triangulation as that'll split whatever quads I have left into tris.

Monday, October 22, 2012

Yusaris Greatsword progress

Yusaris and Asala have been repeatedly requested for a while. With the Bassrath-Katas finished and some room left in the current Dragon Age weapon pack, I've started work on them (well, one at a time).

I am currently working on Yusaris and, well, the original mesh leaves a lot to be desired. Compared to its normal map and its title screen version, the weapon's mesh is horribly bland. So far, I've been rounding out sharp edges and adding geometry I think belongs based on what the normal map and DA:O title screen show.


At this point, I could start the UV layout and texturing process, but I have this nagging thought to make the lace around the handle actual geometry, like the Bassrath-Kata longsword a few posts back. The sword just doesn't look right without it. I've put a lot of time in with the rest of the sword, why not the handle?

I'm reluctant to do so because the lace for Yusaris will most likely take a while and add 1.5k polys. But I know I have quite a bit of wiggle room when it comes to the polycount. I'm at about 1980 polys versus 810 for the original; Vigilance had well over 6k for both versions. I think I'm just dreading the whole ribbon process (But it looks so good when finished....).

Thursday, October 4, 2012

The little things

Well, games work on that laptop from my previous post. A fresh install from a Windows 7 SP1 disk did the trick.

--------------------------------------------------

I had a small crash course in OSX this morning. I was trying to disable Bonjour, Apple's zeroconf implementation. Past experience has only been on Windows machines and each time resulted in flooding my network with enough traffic to cripple it. Now, OSX wasn't doing that, but I wanted to make the OS a little quieter on the network and I don't really need Bonjour trying to discover devices that I don't want to connect to (it really fills up the sidebar in Finder).

So, I followed this tutorial on how to disable Bonjour's function on mDNSResponder. Well, mostly. I wound up using Xcode to edit the plist and had to change permissions in order to have write access. After making the changes, I rebooted the machine and found that it couldn't resolve any hostnames.

In short, taking ownership of the plist completely erased the system permissions instead of preserving them like "Get Info" displayed. Without that permission, the OS failed to load mDNSResponder resulting in the inability to resolve hostnames. Now, I did make a backup, but that backup, because it was made by me using the GUI instead of Terminal, also removed the system permissions. I fixed the permissions by running Disk Utility and repairing permissions. One reboot later and the system was resolving hostnames again. Awesome.

--------------------------------------------------

A local store was having issues with its email yesterday. One account to their mail server was working perfectly fine, but another wasn't. No matter what machine it was on, the email programs used (Outlook Express and Windows Live Mail, XP and 7, respectively) failed to send emails with a 0x800CCC0B error.

Every search result I had kept giving me the same "solution" which didn't work due to the settings I was supposed to change already being what the solution said they should be. I compared both email accounts and, surprise, they were the same except for account name, password, and whether or not to leave a copy of messages on the server. So, after 45minutes of fiddling with settings, I decided to use Wireshark to look at what happened when the error occurred.

Fortunately, some of the packets were plaintext. From those I could read, authentication worked, but verification failed. Why did verification fail? The mailbox was full, quota exceeded. That was it. There was a checkbox for deleting emails on the server when deleted from the client, but, by default, it was not checked. I checked the option, emptied the Deleted Items folder and the email account started sending emails again.

Therefore, if you want to leave a copy of messages on an email server make sure you check "delete from server when deleted from client" or whatever equivalent setting your email client has. That, or make sure you have no quota on the server.

The annoying part about this was how the email clients did not say the mailbox was full. They just kept spouting "Unknown error!" They also sent deleted Outgoing emails...so some guy got duplicate messages.

Friday, September 28, 2012

Fresh Windows install

I decided to put Windows 7 on my laptop. I had an RTM key and iso left, so I thought I'd just install SP1 afterwards. The OS installation completed without a hiccup, installed Steam and Guild Wars 2, got the mess of updates prior to SP1 and did a quick test to see how well Guild Wars 2 would run (it ran alright on low/med). Curiosity satisfied, I installed Service Pack 1 and things went downhill.

After SP1 installed, Guild Wars 2 and every game I installed on the machine instantly crashed with either StackHash, d3d9.dll, or nvd3dum.dll (something like that) as the culprit. The first seemed to have to do with DEP, but everytime I selected a program to exclude I got a "You can't do that" message. The second led me to running Microsoft's DirectX web installer, no dice. The third resulted in trying 2 legacy video drivers, still crashed. I managed to get the Guild Wars 2 launcher running after deleting it's .dat file, but I reloaded a fully downloaded copy and that broke it all over again.

I poked around a bit and found that installing Service Pack 1 can cause this and that there was a hotfix for it. A couple links later, I found the hotfix only to be hit with a "You need to validate" message. Fine. No problem. I'm running legitimate copies of Windows 7, so this should only take a second. Uh...no.

Because I was using Firefox, Microsoft's site started a download for the Genuine Advantage Validation tool. Quick download, but upon executing it, it said it was no longer supported and I should check my system clock. After confirming my clock time across multiple devices, I decided to give Internet Explorer 64bit a run. This resulted in an ActiveX popup to install the validation tool that, after allowing the download, failed to download without any error messages. It just didn't work. Fine. IE 32bit then. That worked, but the website said I already had the update installed.

This left me with a couple options: Use a Windows SP1 disk and reformat or continue fiddling. I went with the former. So, now I've formatted the partition and fully updated the new installation. I've spammed restore points and I am now getting ready to install a game on it. Here goes nothing.

Thursday, September 20, 2012

A+ Certification Study Cards and Practice Tests

I've found a couple online practice tests and flash cards to help study for A+ Certification, but I'm not too confident with them. Why? Take a look at some of the questions and answers:

Apparently DVD-/+RW (1997/1999), DVD-RAM (1998), and BD-RE (2006) do not exist. This is for the 2009 test I believe. However, the dates were grabbed from the first 5 results of a Google search, so take them with a grain of salt.




According to this practice test, the correct answer is the second one. Is a printer with only a USB A or B connector not considered a USB device then? Some portable USB devices used mini-B. I haven't seen a mini-B connection on a PC, laptop maybe, but not a desktop. I also haven't seen a USB B on a PC.


Saturday, September 15, 2012

Seeing how I measure up to A+ Certification

I'm looking into A+ Certification. I'm already familiar with assembling/disassembling PCs, installing an OS, and troubleshooting, so I might as well put another bulletpoint on the resume. There's just one problem: The practice tests I've found have quite a wide range of topics, with a few that are oddly specific.

So far, I have failed every practice test I've taken. Why? I didn't know the following:
  • Minimum and Recommended System Requirements of Windows 2000, XP, Vista Basic, and Vista Home Premium/Business/Ultimate.
  • What "1x" speed is for CD, DVD, and BluRay.
  • How long SATA and PATA cables can be. (1mr and 45cm, respectively)
  • The history of ATA, revisions, and when features were added as well as what they do.
  • The most common form factors of usb flash drives (ex: 1.8in, 2.5in)
  • The form factors of CompactFlash devices ("Type I (3.3 mm) and Type II (5.0 mm)")
  • Region codes of BluRay (A, B, and C, not 0-8)
  • That CPUID is . Not the program of the same name I have used in the past that reads that information and has some system monitoring capabilities. *This question was an A, B, C, or D with both the definition of CPUID and the features of CPUID as possible answers.*
  • All cpu sockets, their names, functions, pin counts, and what CPUs used them. (Did you know Socket 7 could accept processors from multiple manufacturers?)
  • The default addresses used by the primary and secondary IDE controllers.
  • How a laser printer works.
Other problems I've had:
  • Reading a question about optical drives speed ratings of  48x 32x 52x as having commas and thus getting the Write, Rewrite, and Read speeds question wrong.
  • Associating "Master/Slave" and "Standalone" modes for PATA as the same thing. Why? Because I did that all the time in my Computer Diagnostics class. I'd plug a drive in, set as CS or Master and that was "Standalone".
  • Vocabulary. I.e. What is a "Stepper motor" used in? "What is a stepper motor!?" (It is, in a sense, what I've been using consistently in my Portal 2 maps: MOMENTARY_ROT_BUTTON. Well, the SetPosition input at least.)
  • Forgetting Decimal to Hexadecimal conversion (25 is 19, not 1a)
  • Forgetting the pin counts of floppy and IDE ribbon cables. (34 and 40. However, you can also have 80pins for IDE. And the number 1 pin is not always denoted by a red stripe along the side like it says in the tests. Sometimes it is black or blue, depending on color scheme and aesthetics.)
  • Why am I being asked how to change the desktop background in Windows? Granted, I've met someone who didn't know how to do that. But given the multiple ways you can do it (MS Paint, PhotoViewer, Desktop properties) and only being able to select one way as being correct, there's something wrong here.
  • "How many devices can a SCSI controller support?" They don't ask which version (1, 2, or 3) and all their numbers are off by 1 which, I'm assuming, means they are zero-indexed.

I guess I'm still on the consumer side of things and reliant on web searches and, to a lesser extent (way less), books, to find relevant information. However, I don't believe memorizing every ISO standard and every connector pinout is a good measure of a PC Technician.

I need to overcome my mental roadblock of "I don't like the game, so I won't play. It shouldn't be this way. Should it?"

Thursday, September 13, 2012

The Leather Duster Returns

Well, Guild Wars 2 is fun. Sadly, I haven't been playing it for a couple days because 1) I was trying to get video capture cards working on Windows Server 2008 R2 and 2) I can't log in because of, well, I don't know. My friends are able to log in, but I'm practically locked out of my account because authentication emails never arrive. I'd make a post on the forums or a support ticket but, ding ding ding, no authentication email. Awesome.

Sure, I could disable it, but I'm still hanging onto the idea of being able to see when my account is accessed and allowing/denying it. And I still get this odd feeling I'd have to authenticate the opting out of authentication.

-------

While I was trying to log in to GW2 for the past 2..wait...3 days, I was also getting frustrated with capture cards.

I've had this Pinnacle Dazzle DVC100 in my closet for maybe a year and haven't done anything with it. So, I dusted it off and installed it only to get constant "No valid input signals" for a day. Sometimes VLC, VirtualDub, or Media Player Classic would pickup audio, but I wouldn't have video. The rest of the time, nothing.

I spent a day reading 2-4 year old forum threads all dealing with the same problem. The bigger issue was all of the "solutions" consisted of making sure I selected the right capture card, unplugging the card, downloading drivers, and restarting the computer. Something I'd already done half a dozen times before turning to the net. Most of those threads were left unsolved as well. Great.

Solution? Use an internal capture card I removed from a machine to make room for a graphics card. And...the opposite of the problem happened. Video, no audio. Followed by flip flopping between one or the other with the occasional neither. So, I put the DVC100 back in and thought I'd try using both cards at once...then decided I really wanted only one to work since, well, they SHOULD work without resorting to this.

Now, I was running a server OS so, after getting frustrated with "solutions" online, I decided to see if I could dual boot the machine. Bad idea. I only have a copy of Vista Business I never got around to using and I'd probably wind up in the same "You're missing APIs and stuff" problem. So, I finally took a look at http://www.win2008r2workstation.com/, the site I used to Workstation-ize the OS. Lo and behold, there was an installer that added the missing components. I was rather dubious given how old the thread was, but the installer worked. Now, instead of only having audio and no video, I had video and no audio.

Several bluescreens, restarts, and settings windows later, I managed to get Pinnacle's software and VirtualDub to detect both audio and video AND record it. However, only Pinnacle's software would play both video and audio in realtime, but the video was halfsize because it was only a "preview". Virtualdub would show the video fullsize, detect the audio and show the volume level, but refused to play the audio in its Preview window. Seeing as how I wanted to be able to watch tapes in real time as well as record them, I was a bit upset. Sure, I could have a realtime stream with audio and video, but that was only if I wanted to a) put my face against the screen or b) use the Magnifier at 500% zoom and watch pixels talking.

Apparently, the Dazzle system doesn't like to work with anything but the software that came with it, *surprise surprise*. And, despite following a dozens "how to fix" tutorials, nothing worked. A bit of a letdown, but I had my fullsize transfers and decided to call it a day.

What really irked me about the tutorials was that the makers in all but one video already had their setup working and went "if you do this, it should work". No proof, just "Well this worked for me, see?" The one that didn't was solving some "no color" problem that I wasn't having. All of them were recounting the same or similar steps that I had already come up with on my own or followed. Ugh.

-------

So, I got back to work on my leather dusters for Skyrim. There isn't much to say about this. I followed the same Garment Maker tutorial series to form the duster on a male_0 body, weighted it, remade the texture since the UV maps weren't exactly the same as the female duster's, and spent a day trying to make a male_1 version. The physique change (not the modifier) is quite drastic from male_0 to male_1. You pretty much go from a twig to a walking mountain of meat.

In the end, I resorted to using the SoMuchMorpher plugin to get the duster to fit. Then I used a Skin Wrap on the male_0 duster to get the weights right. After that, some testing of each duster to make sure they worked and another test with the weight slider enabled before uploading to Steam.

I don't have a 1st person model for the dusters, yet. I tried plugging in the 3rd person model and that didn't work at all. So, I think I need to look at an existing 1st person model's nif structure. I also have Nightasy's tutorials to go through.

-------

Verb tenses are everywhere!

Thursday, September 6, 2012

Bassrath-Kata Longsword

I took too long with the Bassrath-Kata Longsword. The basic geometry was simple and I shaped a new sword, UV mapped it, and joined the pieces in a few hours.




The big issue was creating the wrap for it. I couldn't get my UVs to allow me to do it all in a texture easily. By easily, I mean placing a series of lines, skew them, and have them align perfectly on the mesh. The way the handle is, the UVs are slightly distorted on every polygon and no amount of unwrapping or pelting would fix that.

I had no idea how to make one using polygons. The last time I made details using splines was the Vigilance Longsword and that was...arduous to say the least. I kept stacking modifiers, collapsing, deleting all but the outlines, restacking modifiers, tweaking, and manually optimizing the resulting 8k poly lines. This time around, I decided there had to be another, better, way. This lead me on a 3 day hunt for some way to make a proper ribbon/leather strip to wrap around it.

At first, I looked for ways to make geometry/splines shrinkwrap around an object but all I found were guides for projecting in a single dimension and only if the objects boundaries didn't intersect (ball and a box instead of a coil around a pole). So, I made a spline with its points centered on the original model's texture handle wrap and moved each point close or into my handle. Then I found this forum post (http://forums.tutorialized.com/showpost.php?p=71033&postcount=3) saying how to make a decent looking wrap. Following that, I applied a loft to my helix-ish spline and now I had a handle wrap...that wasn't following the object I wrapped my spline around.



That's when I came across a nice property: Loft's Deformations rollout. This allowed me to rotate the resultant geometry around until I had a good angle, but it was too cumbersome to use on such a small scale. I was constantly placing points on the graph really close together and it didn't let me move segments of the wrap around so some were on top of others like on the texture.


So, I kept what I had done in place and went straight to the spline driving the loft. By changing all the vertices to either Bezier or Bezier Curve, I was able to both move the depth order of the segments around and change the curvature by hand. It was a bit tedious as sometimes rotating in X would instead rotate Z and each vertex had a different...twist, shall we say. This might have been alleviated by using Local mode instead of World, but I was so happy with my progress I didn't care and kept chugging along.


After that, it was a quick job with the texture, a little optimization, and off to NifSkope and the Creation Kit to put it all together.



Tuesday, August 28, 2012

Portal 2 - Thaumaturgy Post Mortem Part 2

I forgot some things.

Hiding player-facing walls:


Okay, my original idea had the cube sliding back and forth in its room. When a weighted cube was lifted off the button, the circuits would move away and when placed, the circuits would move back. I had a little physbox on the back of each circuit that, when passing through a trigger, would hide and disable their respective circuits. However, the trigger wouldn't constantly fire it's outputs like it did in Here a Second ago. Instead, it'd fire once and not work until I disabled it, moved the circuits away, and re-enabled it. I still haven't figured out why that's the case.

I considered making the physboxes cover the entire surface of the circuit backings, but decided against it for some...reason... *shrugs*

Anyways, in the current build, if the weighted cube is not properly placed into its button, the wall hiding trigger will be enabled prematurely and some walls will not disappear making it hard to either a) complete the circuit or b) get into the interior. The trigger has a half-second delay so if you unpress the button too soon, it won't enable, but that's the best I've come up with so far.

Sliding:


As mentioned above, the cube initially moved back and forth. But as my control model moved more toward a realtime control, it became harder to make sure the cube would be flush against the wall. Since I could have arbitrary angles, the cube would clip into the walls, not something I wanted.

With my main method of getting into the cube gone, I thought about using linked_portal_doors, portalable surfaces, and light bridges as alternatives. As usual, the linked_portal_doors had a bug. In this case, once I stepped through into the cube, everything on the other side would disappear except world geometry and shadows. Portalable surfaces weren't very appealing as I'd have to cut more holes into the walls, thus making the solution either impossible or too easy. So, I settled on a light bridge.

Portal 2 - Thaumaturgy Post Mortem



So many things just didn't work in this map...oh where to begin.

Cube Rotation:

First, I wanted the circuit cube to move to the same position as the cube only when placed in the button. This led to a set of 20 triggers, a func_tank, 6 info_targets, and several momentary_rot_buttons. It was promising until I couldn't get it to match exactly due to how func_tanks don't have a continuous motion when going past -90 (Up). They spin in place and this threw the momentary_rot_button that controlled the face spin off.

The next iteration was a bunch of momentary_rot_buttons for each axis parented to each other. First run didn't work out. I needed a way to dynamically set the parents to prevent orientation distortion. I put a func_rotating in, but they aren't reliable for exact rotations. Even when set to 90deg/sec and spun for 1 second, they slowly become more and more inaccurate because the "stop" command doesn't happen exactly 1 second later.

So, I decided to try scripting it all. After spending 4 hours trying to get a basic "hello world" working (you would not believe how little there is for vscripting tutorials. It's all "here's the reference and what I've done, have at it!"), I managed to get a button to execute a function (Using the console is unreliable. It seems to work more often when you actually have parameters to pass. Not having parameters results in errors because Source doesn't want to search for your PerfectlyCapitalizedFunction() and searches instead for PerfectlycapitalizedFunction() thus throwing an "It doesn't exist!" error).

Anyways, I setup a basic "AddDegreesToX(x)" function for each axis and put the script on a single func_brush. Once the brush was flipped on any two axes (180), adding or subtracting past 90 on the third axis would result in jittering. This jittering made no sense either. Why? My debug output was telling me -90 - 1 = -89 AND -89 -1 = -90. Same went for 90 + 1 = 89 and 89 + 1 = 90. Source refused to do proper math.

This led me to believe I had to do 3d programming in Squirrel. Let's just say that didn't go well. All the code I found was immediately broken because my initial angles were zero and 0 * cos(angle) - 0 * sin(angle) =, you guessed it, zero. The tutorials I found were all for manipulating the actual vertices of a cube with each face represented in matrices, not rotating a 3d model in a game engine. I never took 3d programming and, frankly, my head was spinning at that point.

However, that got me thinking I should use multiple rotators and just parent the circuit cube to the one I needed at the time. Well...it kind of worked. It appears logic_measure_movement copies and pastes angles, so every time I changed parents, the circuit cube was given an entirely different set of angles instead of just adding to its own.

I took a break from all that programming to go with a more visceral method of manipulating the cube: Walking into a projector that shows arrows that, when pressed, rotate the cube in that direction. The code was already there, I just had to build the button framework and implement player view/collision separation. Piece of cake, right? Well, I ran into that little issue of "when you rotate enough on two axes, you flip the third". This effectively reversed the function of the buttons on that third axis, not good.

So, I tried again, but instead of keeping the buttons stationary, I made them move with the cube's angles through another logic_measure_movement. It worked to a point, but after enough rotations, the problem came up again. Solution? Use the "rotating axes" idea to parent the buttons only to the axes they didn't rotate. So, X would rotate along YZ, Y along XZ, and Z along XY. While it looked kind of cool, it only made the problem occur sooner instead of not at all. Also, I was getting motion sickness from being a ghost inside a rotating cube. I abandoned the button idea at this point.

Next, I tried using a logic_measure_movement on a weighted cube, but I couldn't separate the translational data from the desired angular data. So, I went back to scripting and made a small function that copied the angles of a SourceCube and applied them to a TargetCube; no translational data transferred. That worked perfectly, until I changed the TargetCube from the model to a brush. Model-to-model worked fine, but model-to-brush rotated the angles by 90 on the Z (or is it Y? Whichever is up in Source) axis.

There was also this annoying bug where instead of setting the degrees exactly, 359.1 degrees would become -.9. so everything was a little off. I resolved this by going back to a model-to-model...uh..model, using a logic_measure_movement on the TargetCube and having it influence the CircuitCube. And that worked perfectly, again. Each rotation of the SourceCube was piped through the entities and correctly applied to the CircuitCube. So, the pipeline was SourceCube - > script -> TargetCube -> logic_measure_movement -> CircuitCube. Awesome.

The circuits:

I had circuits from my first "Circuits" map. They were alright, but I didn't like the fact I had the triggers outside of the instance and didn't really have a way to track the "flow" without explicitly setting one up. For a 3D cube where you can set many paths, this wasn't going to cut it. So, I dove in and rearranged the internals of the instances and added triggers and movelinears to function as flow control. If a trigger is hit, its corresponding movelinear moves up to hit the next trigger in sequence. This was doubled up so the circuits could be bidirectional if desired.

The new circuits worked like a charm except when it came to arranging them into a cube.

First, there was an annoying bug back when I had the cube parented to a momentary_rot_button. Each circuit's backing was a func_brush that was then parented to the center of the cube, a momentary_rot_button. It turns out "using" a func_brush parented to a momentary_rot_button will cause the button to rotate partially with respect to the axis selection. I turned on Developer 3 and ent_messages_draw 1 just to see where the erroneous i/o was coming from and there was nothing. No links whatsoever. The bug even persisted when both the brush and the button were set to ignore +use! This was eventually solved when I settled on making the CircuitCube's center a func_brush driven by the scripted movement measure system.
*Note: Parenting the brush to a physbox parented to the button did not produce the error at all*

Next, it turns out moving triggers will trigger with no apparent provocation when moving and they'll stay triggered until they hit a nice 90 degree angle (and sometimes, not even then). Needless to say, this was a big problem as it meant if you spun the cube right, you could glitch your way through the map. Sadly, this wasn't fixed. Filters don't even combat this. Sure, I disable them before motion, but if you enable them and they aren't at an angle they like, they'll fire their outputs.

I still didn't change the method of circuit rotation. I have a nice script to handle it and, since they only rotate on a single axis, it *should* work. Since I haven't released the map, I may still try it so you get a better experience.

And then I forgot to turn off the Afterburner OSD and had to record the run-through video twice.

Saturday, August 25, 2012

Getting -hijack working

While working on my latest Portal 2 map, I noticed I chose the wrong compile settings (Expert -> default) versus what I normally choose (basic -> no vrad). Both have extra command line parameters, but have different resolutions and it was the resolution that tipped me off (I usually hit F9 immediately followed by Enter and don't see the compile window). This wasn't a big issue since the map is relatively small and vrad doesn't take that long (5 seconds or so). However, when I went for a recompile, I changed back to the basic compile window and found -hijack working again. Subsequent recompiles using either compile window worked fine as well.

The annoyance since DLC 1


For those who have been following this blog or my YouTube videos, you'll know that I've been having problems getting -hijack working after Valve released Portal 2 dlc. So, I was ecstatic for a bit...then I closed the game and in the next instance -hijack stopped working. This prompted me to look at the options I had to see if they matched up.








The expert window had "+sv_lan 1" in it, but that was really it. That change didn't have an effect on whether -hijack worked, so I decided to look at how the game started up by making the compile window wait for keypress before closing.

For the working -hijack (expert compile), this is what it showed:

"g:\valve\steam\steamapps\common\portal 2\portal2.exe" -hijack -game "g:\valve\steam\steamapps\common\portal 2\portal2" +map "temp" +sv_lan 1 -novid -sw -w 1152 -h 864


The broken -hijack compile showed this:

g:\valve\steam\steam.exe -applaunch 620 -game "g:\valve\steam\steamapps\common\portal 2\portal2" -hijack -novid -sw -w 1440 -h 900 +map "temp"


So, a basic compile runs the game through Steam instead of the Portal2 executable directly. After seeing this, I opened up Process Explorer to see what each runline turned into.

Working:

"g:\valve\steam\steamapps\common\portal 2\portal2.exe" -hijack -game "g:\valve\steam\steamapps\common\portal 2\portal2" +map "temp" +sv_lan 1 -novid -sw -w 1152 -h 864 


Not Working:

"G:\Valve\Steam\steamapps\common\Portal 2\portal2.exe" -game portal2 -steam  -game "g:\valve\steam\steamapps\common\portal 2\portal2" -hijack -novid -sw -w 1440 -h 900 +map temp  -novid
(I don't know why -novid has two spaces infront of it instead of one.)


Running the game with or without the -steam parameter didn't change anything. So I tried messing with the order, specifically where -hijack was placed. No change. Using either runline didn't make a difference. They both worked perfectly. This lead me to believe it was the initial start that made the difference. Maybe Steam wasn't passing -hijack through and was continually blocking it as part of some "is the game running" check that hasn't taken -hijack into account.

And...that was it (perhaps not the speculation bit). If Portal 2 is started via Steam, -hijack doesn't work. Starting portal2.exe directly eliminates this problem. Huh.

I don't know if this applies to other Source games as I currently only develop for Portal 2, so if you're having this same problem, try it. Stick your parameters into an expert compile and use it instead of the basic compile window...or batch it all.

I tried batch compiling Test Map Pack 3 or 4 a few times...vrad threw a fit and botched the lighting in all of the maps. I had to execute one after the other in separate commands by hand. Placing line after line in a batch file was not to vrad's liking.

Saturday, August 18, 2012

Restoring The Witcher 2 backup saves

I finished The Witcher 2 on Iorveth's path today. So, I decided to restore the Chapter 1 big decision save I made so I could go through Roche's. After backing up and clearing my Iorveth saves, I extracted the big decision save and started the game. And...the Steam Cloud restored my saves and The Witcher 2 completely ignored my save.

So, I deleted all the saves again, restored the one I wanted, and turned off the cloud. Still nothing. So, I tried restoring every single save I ever made. This resulted in the game botching their playdates and presenting them out of order with some missing their thumbnails. Quit out, delete, and restore the single save with cloud storage enabled. My save was ignored, but the cloud saves were present. This prompted me to delete each save through the game's interface to delete them from the cloud.

This made sense in theory, but only resulted in an undeletable thumbnail due to its corresponding savegame being deleted without it (I have no idea how Steam could miss deleting the thumbnail). This meant that I couldn't reduce the cloud storage for The Witcher 2 to 0 bytes for some forum post's magic condition that makes the game read from the My Documents savegame folder again.

This was followed by another 45 minutes of screwing around with changing CloudStorage=false in User.ini, enabling/disabling cloud storage both ingame and out, and trying to force the cloud to load my manual save by getting the file sizes and names, tweaking times, and generating Sha-1 hashes for my save and its thumbnail. I even cleared the gamedata registry value to see if that would help. No dice.

I came across a post about the patch that broke savegames due to compression and suggested that version mismatch between the game and the save was the problem. So, I verified The Witcher 2's game cache integrity. About 35% through, I decided it was taking too long and cancelled the operation. I tried to start The Witcher 2 again, but I guess the verification purged all the registry entries and Steam tried to do the first time setup again. This meant I had to manually set the registry values again since even after running the first time setup, steam will fail to set the "I'm done" registry entries for each step except DirectX. For reference, I've copied the posts I used to fix this here:

--------------------
Quote:
Originally Posted by Who Cares View Post
Another solution involves a registry hack.

open regedit and go to (on 32 bit XP that is):

HKEY_LOCAL_MACHINE\SOFTWARE\Valve\Steam\Apps\20920

Should show:
default REG_SZ (value not set)
DirectX Reg_DWORD 0x00000001 (1)

Need to add
dotNetFX40 Reg_DWORD 0x00000001 (1)
vcredist Reg_DWORD 0x00000001 (1)

Adding a value:
right click, select new, select DWORD
fill in the name of the value, double click and fill in 1
For 64-bit win7 it's:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Valve\Stea m\Apps\20920--------------------

Once those keys were set, I put copies of my save in both the My Documents savegame folder AND the steam 20920 userdata savegame folder, turned on cloud saving, and started the game. IT WORKED!

I think something about verifying the game cache purging registry keys fixed it. To make certain it wasn't a fluke, I loaded the game, make a quicksave, quit the game, restarted it, and both saves were there. I still have that annoying thumbnail sitting there, so I need to screw with its filesize and try to force the Steam Cloud "FILE MISMATCH!" prompt to appear.

----------------------

I'm debugging a Portal 2 map idea right now. I am starting to loathe linked_portal_door. It can't move, flickers, and crashes (The ent, not the game) if a func_brush passes through it. This is crippling my idea something fierce. The initial idea was great and I managed to reduce its implementation complexity by substituting existing entities in place of reinventing the wheel, but I'm hitting that "Source can't do that" wall again.