amp-web-push-widget button.amp-subscribe { display: inline-flex; align-items: center; border-radius: 5px; border: 0; box-sizing: border-box; margin: 0; padding: 10px 15px; cursor: pointer; outline: none; font-size: 15px; font-weight: 500; background: #4A90E2; margin-top: 7px; color: white; box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.5); -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } /** * Jetpack related posts */ /** * The Gutenberg block */ .jp-related-posts-i2 { margin-top: 1.5rem; } .jp-related-posts-i2__list { --hgap: 1rem; display: flex; flex-wrap: wrap; column-gap: var(--hgap); row-gap: 2rem; margin: 0; padding: 0; list-style-type: none; } .jp-related-posts-i2__post { display: flex; flex-direction: column; /* Default: 2 items by row */ flex-basis: calc( ( 100% - var(--hgap) ) / 2 ); } /* Quantity qeuries: see https://alistapart.com/article/quantity-queries-for-css/ */ .jp-related-posts-i2__post:nth-last-child(n+3):first-child, .jp-related-posts-i2__post:nth-last-child(n+3):first-child ~ * { /* From 3 total items on, 3 items by row */ flex-basis: calc( ( 100% - var(--hgap) * 2 ) / 3 ); } .jp-related-posts-i2__post:nth-last-child(4):first-child, .jp-related-posts-i2__post:nth-last-child(4):first-child ~ * { /* Exception for 4 total items: 2 items by row */ flex-basis: calc( ( 100% - var(--hgap) ) / 2 ); } .jp-related-posts-i2__post-link { display: flex; flex-direction: column; row-gap: 0.5rem; width: 100%; margin-bottom: 1rem; line-height: 1.2; } .jp-related-posts-i2__post-link:focus-visible { outline-offset: 2px; } .jp-related-posts-i2__post-img { order: -1; max-width: 100%; } .jp-related-posts-i2__post-defs { margin: 0; list-style-type: unset; } /* Hide, except from screen readers */ .jp-related-posts-i2__post-defs dt { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; } .jp-related-posts-i2__post-defs dd { margin: 0; } /* List view */ .jp-relatedposts-i2[data-layout="list"] .jp-related-posts-i2__list { display: block; } .jp-relatedposts-i2[data-layout="list"] .jp-related-posts-i2__post { margin-bottom: 2rem; } /* Breakpoints */ @media only screen and (max-width: 640px) { .jp-related-posts-i2__list { display: block; } .jp-related-posts-i2__post { margin-bottom: 2rem; } } /* Container */ #jp-relatedposts { display: none; padding-top: 1em; margin: 1em 0; position: relative; clear: both; } .jp-relatedposts:after { content: ''; display: block; clear: both; } /* Headline above related posts section, labeled "Related" */ #jp-relatedposts h3.jp-relatedposts-headline { margin: 0 0 1em 0; display: inline-block; float: left; font-size: 9pt; font-weight: bold; font-family: inherit; } #jp-relatedposts h3.jp-relatedposts-headline em:before { content: ""; display: block; width: 100%; min-width: 30px; border-top: 1px solid #dcdcde; border-top: 1px solid rgba(0,0,0,.2); margin-bottom: 1em; } #jp-relatedposts h3.jp-relatedposts-headline em { font-style: normal; font-weight: bold; } /* Related posts items (wrapping items) */ #jp-relatedposts .jp-relatedposts-items { clear: left; } #jp-relatedposts .jp-relatedposts-items-visual { margin-right: -20px; } /* Related posts item */ #jp-relatedposts .jp-relatedposts-items .jp-relatedposts-post { float: left; width: 33%; margin: 0 0 1em; /* Needs to be same as the main outer wrapper for Related Posts */ box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; } #jp-relatedposts .jp-relatedposts-items-visual .jp-relatedposts-post { padding-right: 20px; filter: alpha(opacity=80); -moz-opacity: .8; opacity: .8; } #jp-relatedposts .jp-relatedposts-items .jp-relatedposts-post:nth-child(3n+4), #jp-relatedposts .jp-relatedposts-items-visual .jp-relatedposts-post:nth-child(3n+4) { clear: both; } #jp-relatedposts .jp-relatedposts-items .jp-relatedposts-post:hover .jp-relatedposts-post-title a { text-decoration: underline; } #jp-relatedposts .jp-relatedposts-items .jp-relatedposts-post:hover { filter: alpha(opacity=100); -moz-opacity: 1; opacity: 1; } /* Related posts item content */ #jp-relatedposts .jp-relatedposts-items-visual h4.jp-relatedposts-post-title, #jp-relatedposts .jp-relatedposts-items p, #jp-relatedposts .jp-relatedposts-items time { font-size: 14px; line-height: 20px; margin: 0; } #jp-relatedposts .jp-relatedposts-items-visual .jp-relatedposts-post-nothumbs { position:relative; } #jp-relatedposts .jp-relatedposts-items-visual .jp-relatedposts-post-nothumbs a.jp-relatedposts-post-aoverlay { position:absolute; top:0; bottom:0; left:0; right:0; display:block; border-bottom: 0; } #jp-relatedposts .jp-relatedposts-items p, #jp-relatedposts .jp-relatedposts-items time { margin-bottom: 0; } #jp-relatedposts .jp-relatedposts-items-visual h4.jp-relatedposts-post-title { text-transform: none; margin: 0; font-family: inherit; display: block; max-width: 100%; } #jp-relatedposts .jp-relatedposts-items .jp-relatedposts-post .jp-relatedposts-post-title a { font-size: inherit; font-weight: normal; text-decoration: none; filter: alpha(opacity=100); -moz-opacity: 1; opacity: 1; } #jp-relatedposts .jp-relatedposts-items .jp-relatedposts-post .jp-relatedposts-post-title a:hover { text-decoration: underline; } #jp-relatedposts .jp-relatedposts-items .jp-relatedposts-post img.jp-relatedposts-post-img, #jp-relatedposts .jp-relatedposts-items .jp-relatedposts-post span { display: block; max-width: 90%; overflow: hidden; text-overflow: ellipsis; } #jp-relatedposts .jp-relatedposts-items-visual .jp-relatedposts-post img.jp-relatedposts-post-img, #jp-relatedposts .jp-relatedposts-items-visual .jp-relatedposts-post span { height: auto; max-width: 100%; } #jp-relatedposts .jp-relatedposts-items .jp-relatedposts-post .jp-relatedposts-post-date, #jp-relatedposts .jp-relatedposts-items .jp-relatedposts-post .jp-relatedposts-post-context { opacity: .6; } /* Hide the date by default, but leave the element there if a theme wants to use css to make it visible. */ .jp-relatedposts-items .jp-relatedposts-post .jp-relatedposts-post-date { display: none; } /* Behavior when there are thumbnails in visual mode */ #jp-relatedposts .jp-relatedposts-items-visual div.jp-relatedposts-post-thumbs p.jp-relatedposts-post-excerpt { display: none; } /* Behavior when there are no thumbnails in visual mode */ #jp-relatedposts .jp-relatedposts-items-visual .jp-relatedposts-post-nothumbs p.jp-relatedposts-post-excerpt { overflow: hidden; } #jp-relatedposts .jp-relatedposts-items-visual .jp-relatedposts-post-nothumbs span { margin-bottom: 1em; } /* List Layout */ #jp-relatedposts .jp-relatedposts-list .jp-relatedposts-post { clear: both; width: 100%; } #jp-relatedposts .jp-relatedposts-list .jp-relatedposts-post img.jp-relatedposts-post-img { float: left; overflow: hidden; max-width: 33%; margin-right: 3%; } #jp-relatedposts .jp-relatedposts-list h4.jp-relatedposts-post-title { display: inline-block; max-width: 63%; } /* * Responsive */ @media only screen and (max-width: 640px) { #jp-relatedposts .jp-relatedposts-items .jp-relatedposts-post { width: 50%; } #jp-relatedposts .jp-relatedposts-items .jp-relatedposts-post:nth-child(3n) { clear: left; } #jp-relatedposts .jp-relatedposts-items-visual { margin-right: 20px; } } @media only screen and (max-width: 320px) { #jp-relatedposts .jp-relatedposts-items .jp-relatedposts-post { width: 100%; clear: both; margin: 0 0 1em; } #jp-relatedposts .jp-relatedposts-list .jp-relatedposts-post img.jp-relatedposts-post-img, #jp-relatedposts .jp-relatedposts-list h4.jp-relatedposts-post-title { float: none; max-width: 100%; margin-right: 0; } } /* * Hide the related post section in the print view of a post */ @media print { .jp-relatedposts { display:none ; } } .amp-logo amp-img{width:371px} .amp-menu input{display:none;}.amp-menu li.menu-item-has-children ul{display:none;}.amp-menu li{position:relative;display:block;}.amp-menu > li a{display:block;} /* Inline styles */ div.acss138d7{clear:both;}div.acss0dcba{--relposth-columns:3;--relposth-columns_m:3;--relposth-columns_t:3;}div.acss12a58{aspect-ratio:16/9;background:transparent url(https://i0.wp.com/jerz.setonhill.edu/wp-content/uploads/2025/02/Screenshot-2025-02-16-at-11.51.31%E2%80%AFAM-600x537-1.png?resize=150%2C150&ssl=1) no-repeat scroll 0% 0%;height:150px;max-width:150px;}div.acss020fa{color:#333333;font-family:Arial Narrow;font-size:11px;height:45px;}div.acss79008{aspect-ratio:16/9;background:transparent url(https://i0.wp.com/jerz.setonhill.edu/wp-content/uploads/2022/04/sisko-facepalm.jpeg?resize=150%2C150&ssl=1) no-repeat scroll 0% 0%;height:150px;max-width:150px;}div.acss4a63d{aspect-ratio:16/9;background:transparent url(https://i0.wp.com/jerz.setonhill.edu/wp-content/uploads/2025/02/Screenshot-2025-02-04-at-5.23.04%E2%80%AFPM.png?resize=150%2C150&ssl=1) no-repeat scroll 0% 0%;height:150px;max-width:150px;}div.acssdbd6b{aspect-ratio:16/9;background:transparent url(https://i0.wp.com/jerz.setonhill.edu/wp-content/uploads/2025/01/img_2072-1.jpg?resize=150%2C150&ssl=1) no-repeat scroll 0% 0%;height:150px;max-width:150px;}div.acss5f08e{aspect-ratio:16/9;background:transparent url(https://i0.wp.com/jerz.setonhill.edu/wp-content/uploads/2025/01/duolingo_sharing-1.png?resize=150%2C150&ssl=1) no-repeat scroll 0% 0%;height:150px;max-width:150px;}div.acss1c343{aspect-ratio:16/9;background:transparent url(https://i0.wp.com/jerz.setonhill.edu/wp-content/uploads/2025/01/1mcgfntL_QZnleRG_Tnv5Bw.png?resize=150%2C150&ssl=1) no-repeat scroll 0% 0%;height:150px;max-width:150px;} .icon-widgets:before {content: "\e1bd";}.icon-search:before {content: "\e8b6";}.icon-shopping-cart:after {content: "\e8cc";}

Hammer, 3D Design, and the Virtues of Minimalism

Hammer, 3D Design, and the Virtues of Minimalism (Jerz’s Literacy Weblog)

For the past month, as preparation for teaching a brief Hammer unit in my “New Media Projects” course, I got pretty good at Hammer basics — in part because I recorded a series of Flash tutorials, and doing so really solidified some basic design skills.

I hadn’t really realized just how comfortable I’m becoming with Hammer until yesterday, when I roughed out this interior while my daughter was napping. Today (during another nap) I added some special effects (including snow, not visible in this photo). I had already sketched out the floor plan on paper, so it was really quite easy to implement it.

I’d have gotten a lot farther today, but for some reason when I loaded it up Hammer couldn’t find where I had placed the custom textures that I had downloaded. I recall being so frustrated with the numerous steps I had to do in order to get a new texture into Hammer that I never even tried to teach that to my students. But at least now I think I understand the complex file system that Steam creates. (I’m also starting to max out my laptop’s hard drive. Time to do some file-shuffling.)

I’m starting to feel more comfortable with lighting (I have four lights in the fireplace — three of them flickering in different colors and a fourth that’s a steady yellow-orange). I had made an automatic door a few months ago, and it only took me a few tries to refresh my memory.

When my students began programming text adventures in Inform 7, it took a while for them to learn that every concrete object they mention in the description of a room (“The professor’s bookshelf is cluttered with a bewildering array of papers, notebooks, reference books, and letters.”) means that the player is going to want to take, read, examine, smell, eat, and burn every one of them. To implement each and every object in a cluttered study would take forever, but mentioning an object by name and then refusing to let the player interact is sort of cruel to the player. Rather than come up with a long list of things that the player will want to interact with, it’s better to write a general description that reveals the character of the person who uses the study. A player who reads “Everything is a bit tweedy and fussily organized, but just a bit sloppy around the edges, not unlike Prof. Sneedlewood himself. An ivory-handled letter opener catches your eye.” will immediately take the letter opener, but will probably not bother trying to rifle through the professor’s things.

In a similar way, while creating an environment with pixels rather than words, I’ve learned that instead of open (bare) shelves I should probably instead have more closed cupboards, with just a few decorative items to personalize the space.

Hammer (the Half-Life 2 map editor) is good for constructing anything that you could build out of wood in real life. While the world allows for subtle and complex motion and beautifully interactive physics (hinges, ropes, gravity, friction, etc.), the resolution of the world-builder is chunky and blocky.

I’ve got a kind of creative vision, too, but I’ve been frustrated by how restricted I feel when there isn’t a good ready-made texture (the 3D colors that go on the flat surfaces) or model (the map of points and planes that make up an object, such as a chair). So I’ve spent too much time online surfing for ready-made models and materials.

I have taught myself Blender3D and am working with the XSI Mod tool, so I know I’ve got everything I need to design complex objects and import them into a Hammer map.

View Comments

  • I have the hammer program but im not sure how to use it. Would you know where I could get hlep for useing it?

  • Yes, it is possible to port objects, but not directly from Blender3D into Hammer. You have to export from Blender into a standard format, and then use a different tool to import the model and convert it into the format Hammer uses. When I tried it over the summer using MilkShape, which is a nifty little program. I lost all my textures, so what ended up being imported was a gray blob. (I obviously missed a step, and my trial subscription to MilkShape expired before I had the time to figure out what the problem was.)

    The tool I'm getting ready to use now is the XSI mod tool, which is huge but free, is powerful enough that I could possibly drop Blender3D altogether and just have students do all their modeling with XSI, and which has a plug-in specifically for Hammer.

    I am planning to do a simple object like a framed picture, then a more complex object like a lamp-post, and see how it goes from there. (I'll be posting the results here... no promise on when I get it done, since I'm shifting my focus to getting ready for spring classes.)

  • I really loved working with Hammer this semester and I can see it being something I do in my spare time next semester. The room you worked on during the naps looks great. Is there a way that you can import objects from Blender 3D into Hammer? I was thinking that would be something neat to do.

  • Yes, Karissa, having a greater choice of textures would be useful. Thanks for your feedback.

    The way it works in Hammer, though, it's not a simple thing just to grab a picture off of the internet and slap it into the world. That's because all the textures come bundled with information such as what sound should be played when the player walks on a surface with a particular texture, how reflective or dull the surface is, and some other really cool but really complex 3D lighting effects. It's not that hard, in the sense that it's just a matter of following instructions and putting files in the places where they belong.

    There are a few free stand-alone tools that can make the job into something more like the point-and-click task that most EL students are likely to feel comfortable with. But it's one thing for me to be able to muddle through and figure it out, and another thing entirely for me to know the procedure well enough to be able to guide a class through it successfully. I had initially planned to have the Blender3D models brought into the Half-Life map, but since we really only got the Hammer toolkit working at the last minute, I didn't want to take up time during the Blender unit asking you to go through the steps necessary for exporting an object. When we do this again, I'll probably introduce Inform 7 just as I did before, then introduce Flash and 3D modeling on a basic level, and then return to do Flash programming and more complex 3D modeling, based on whatever the class is most interested in doing.

  • For some reason, I enjoy the brightly colored furniture in the room shown in the top left corner of your snapshot... I can't imagine why that is... Probably the same reason that when we were designing our room, Amanda and I chose trees and sky over the more industrial materials Hammer provides.

    I think that, if you do teach this in the future, if you get so far as customization, it'd be nice to have more choices with the textures. Amanda and I were searching for bear skin, for example :) Maybe there's a kit with more textures somewhere that could be loaded on each computer? I have no idea. I'm just a novice at this, but I think creativity can only be guided so far with such limitations in textures.

Share
Published by
Dennis G. Jerz

Recent Posts

January 6th … the board game?

About 20 of us are here in Brooklyn to play a large-scale war game —…

2 days ago

Rapture #StarTrek #DS9 Rewatch (Season 5, Episode 10) Sisko’s “visions” complicate politics, faith and family

Rewatching ST:DS9 Kira is moved by the interest Sisko shows in an artifact recently recovered…

4 days ago

Selling Point (Audio Drama)

I had fun recording this in the studio -- with live foley artists! https://youtube.com/watch?v=Xc-_o_qr2vE&si=ozF_Zxd4wAWR2W6w  

4 days ago

Letter to the editor: Setting record straight on Seton Hill newspaper

Here's my letter responding to an recent article about the future of the student newspaper…

2 weeks ago

Don’t Be a Sucker (antifascist film from 1945)

https://youtu.be/CXm3WxU--fM?si=E1BHac8JgF83G2FL   Full version

2 weeks ago