Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Larry Hama’s 10 rules for drawing a comic book page

edited August 2013 in The Toolbox
Stolen from The Beat, which took it from Larry Hama's Facebook page:
These are my ten rules for drawing a comic book page, that sums up what I have learned in forty odd years in the biz. They are not universal, they are my own personal guidelines, so there is nothing to disagree about.

1. Don’t have people just standing there.
2. ANY expression is better than a blank stare.
3. Avoid tangents, and any straight line that divides the panel.
4. If you use an odd angle in the shot, there has to be a reason for it.
5. If you don’t have at least one panel on each page with a full figure, your “camera” is too close.
6. Plan out your shots in “Lawrence of Arabia” mode rather than in “General Hospital” mode.
7. Don’t think of backgrounds as “things to fill up the space after the figures are drawn.”
8. If you know what something is called, and you have an Internet connection, there is no reason to draw it inaccurately.
9. If the colorist has to ask if a scene takes place at night, you haven’t done your job.
10. If you can’t extend the drawing beyond the panel borders and still have it make visual sense, you’ve cheated on the perspective.

Comments

  • A lot of those seem like guidelines for writers too. Thanks Jason!
  • I agree with everything except #1. many times there are reasons for people to just stand and talk. BUT if that is all that is happening in the panel, it's boring, there should be an interesting environment, or composition, which he basically states later on.
  • Even when people are standing and talking, they (usually) still do something.  They look somewhere, they fidget, they scratch, etc.  Use the talking-heads panels to do some acting.
  • Body language is huge in what might otherwise be just-standing-around/talking heads panels: Crossed arms to imply reservation, hands in pockets imply submission, etc. 
  • People rarely just stand around and they should do so less in an action comic.  It's either lazy or deadlines that drive the manikins standing around approach.  I try to make hands as much a part of any talking heads sequence as possible, if only to add different shapes to the panels.

    ~R
  • Actors often look for busy work to do as they speak. If their activity contributes to the meaning of the words, so much the better, but even if it doesn't they become more persuasive for the activity.
  • Richard's body language is usually really excellent. And even something as minor as "differences in the shapes" in the panels adds a great deal of visual richness and interest.
  • You want to avoid talking heads? Watch the diner scene in Chasing Amy. It's just three people talking, but the actions in that booth are amazing.
  • If I find myself doing talking heads scenes, I make sure that there is something else going on, either in the background or with the characters.

    People could take cues from sit-coms. They often have scenes of people talking. Contrast this with a news program with talking heads. One is fun to watch and relies on how the characters are delivering their lines, the other is merely informative and relies on what the people are saying, not on how they are saying it.
  • Make your characters Italians. That way, you'll never have just talking heads :)
  • But on a slightly more serious note: knowing the body language traits of specific ethnicities is an important task of an artist to know (Or it should be). 
  • edited September 2013
    That's why my stories are populated entirely by WASPs*: they keep their hard-to-draw hands off-panel. ;)

    *They aren't, actually.
  • I hate drawing hands.
  • I think I stopped hating drawing them about a year ago, now I'm merely put out by them.

    One of my favourite things to do when I hit a wall drawing hands is look at how gestural Moebius's hands were in the Silver Surfer 2-parter he did.  Sometimes we fight the unnecessary battles. 
  • I have largely reduced hands to a few cryptic but, I hope, expressive marks.
  • http://stevenegordon.com/tutorial.html - Steven E. Gordon's tutorial was a huge, huge help to me in learning how to construct hands, to the point where they're one of the things I draw well (it also helps that I have...I dunno how to put this...dynamic hands? Like, I can bend my fingertip joins individually, I have hitchhiker's thumbs, etc. Ditko hands, y'know? I have straight-up IRL Ditko hands.)

    Anyway: gesture/acting is probably the only thing that beats out onomatopoeia for "things I am endlessly obsessed with and delight in nailing the nuance of in comics".  It is so, so vital, and an artist who can pull off or improve on any weird little expression or gesture you throw at them (hi, Marv) is worth their weight in gold.

    Another way to break up talking heads is to focus on setting details; cigarettes in ashtrays, half-finished food, flies on the ceiling, passerby, weather. That kind of stuff can underline the dialogue, or reveal character, or both.
  • @joshhechinger Thanks for the link to the steve gordon tutorials.  Good info there.
  • Two suggestions for chatty pages with very little action: 

    Condense panels - why not have a dozen interlocked balloons flowing down the page, with a medium shot. You can also inset slim panels with reaction shots of eyes, or hands.

    Solely focus on the reactions - a cigarette, a glass being picked up. A hand, balling into a fist.
Sign In or Register to comment.

Debug Trace

Notice
The addon in /plugins/AboutMe has 1 issue(s).

#0 [internal function]: gdn_ErrorHandler(1024, 'The addon in /p...', '/home/steve55/p...', 795, Array)
#1 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/Addon.php(795): trigger_error('The addon in /p...', 1024)
#2 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/Addon.php(829): Vanilla\Addon->triggerIssues()
#3 /home/steve55/public_html/sequentialworkshop.com/forum/cache/addon.php(1582): Vanilla\Addon::__set_state(Array)
#4 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(319): require('/home/steve55/p...')
#5 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(740): Vanilla\AddonManager->ensureMultiCache()
#6 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(1094): Vanilla\AddonManager->lookupAddon('stubcontent')
#7 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(1074): Vanilla\AddonManager->lookupByType('stubcontent', 'addon')
#8 /home/steve55/public_html/sequentialworkshop.com/forum/bootstrap.php(247): Vanilla\AddonManager->startAddonsByKey(Array, 'addon')
#9 [internal function]: {closure}(Object(Garden\Container\Container), Object(Gdn_Configuration), Object(Vanilla\AddonManager), Object(Garden\EventManager), Object(Gdn_Request))
#10 /home/steve55/public_html/sequentialworkshop.com/forum/vendor/vanilla/garden-container/src/Container.php(723): call_user_func_array(Object(Closure), Array)
#11 /home/steve55/public_html/sequentialworkshop.com/forum/bootstrap.php(308): Garden\Container\Container->call(Object(Closure))
#12 /home/steve55/public_html/sequentialworkshop.com/forum/index.php(30): require_once('/home/steve55/p...')
#13 {main}
Notice
The addon key must match it's subdirectory name (about me vs. AboutMe).

#0 [internal function]: gdn_ErrorHandler(1024, 'The addon key m...', '/home/steve55/p...', 797, Array)
#1 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/Addon.php(797): trigger_error('The addon key m...', 1024)
#2 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/Addon.php(829): Vanilla\Addon->triggerIssues()
#3 /home/steve55/public_html/sequentialworkshop.com/forum/cache/addon.php(1582): Vanilla\Addon::__set_state(Array)
#4 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(319): require('/home/steve55/p...')
#5 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(740): Vanilla\AddonManager->ensureMultiCache()
#6 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(1094): Vanilla\AddonManager->lookupAddon('stubcontent')
#7 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(1074): Vanilla\AddonManager->lookupByType('stubcontent', 'addon')
#8 /home/steve55/public_html/sequentialworkshop.com/forum/bootstrap.php(247): Vanilla\AddonManager->startAddonsByKey(Array, 'addon')
#9 [internal function]: {closure}(Object(Garden\Container\Container), Object(Gdn_Configuration), Object(Vanilla\AddonManager), Object(Garden\EventManager), Object(Gdn_Request))
#10 /home/steve55/public_html/sequentialworkshop.com/forum/vendor/vanilla/garden-container/src/Container.php(723): call_user_func_array(Object(Closure), Array)
#11 /home/steve55/public_html/sequentialworkshop.com/forum/bootstrap.php(308): Garden\Container\Container->call(Object(Closure))
#12 /home/steve55/public_html/sequentialworkshop.com/forum/index.php(30): require_once('/home/steve55/p...')
#13 {main}
Notice
The addon in /plugins/Emotify has 1 issue(s).

#0 [internal function]: gdn_ErrorHandler(1024, 'The addon in /p...', '/home/steve55/p...', 795, Array)
#1 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/Addon.php(795): trigger_error('The addon in /p...', 1024)
#2 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/Addon.php(829): Vanilla\Addon->triggerIssues()
#3 /home/steve55/public_html/sequentialworkshop.com/forum/cache/addon.php(1806): Vanilla\Addon::__set_state(Array)
#4 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(319): require('/home/steve55/p...')
#5 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(740): Vanilla\AddonManager->ensureMultiCache()
#6 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(1094): Vanilla\AddonManager->lookupAddon('stubcontent')
#7 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(1074): Vanilla\AddonManager->lookupByType('stubcontent', 'addon')
#8 /home/steve55/public_html/sequentialworkshop.com/forum/bootstrap.php(247): Vanilla\AddonManager->startAddonsByKey(Array, 'addon')
#9 [internal function]: {closure}(Object(Garden\Container\Container), Object(Gdn_Configuration), Object(Vanilla\AddonManager), Object(Garden\EventManager), Object(Gdn_Request))
#10 /home/steve55/public_html/sequentialworkshop.com/forum/vendor/vanilla/garden-container/src/Container.php(723): call_user_func_array(Object(Closure), Array)
#11 /home/steve55/public_html/sequentialworkshop.com/forum/bootstrap.php(308): Garden\Container\Container->call(Object(Closure))
#12 /home/steve55/public_html/sequentialworkshop.com/forum/index.php(30): require_once('/home/steve55/p...')
#13 {main}
Notice
The addon should have at most one plugin class (EmotifyPlugin, EmotifyPlugin).

#0 [internal function]: gdn_ErrorHandler(1024, 'The addon shoul...', '/home/steve55/p...', 797, Array)
#1 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/Addon.php(797): trigger_error('The addon shoul...', 1024)
#2 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/Addon.php(829): Vanilla\Addon->triggerIssues()
#3 /home/steve55/public_html/sequentialworkshop.com/forum/cache/addon.php(1806): Vanilla\Addon::__set_state(Array)
#4 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(319): require('/home/steve55/p...')
#5 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(740): Vanilla\AddonManager->ensureMultiCache()
#6 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(1094): Vanilla\AddonManager->lookupAddon('stubcontent')
#7 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(1074): Vanilla\AddonManager->lookupByType('stubcontent', 'addon')
#8 /home/steve55/public_html/sequentialworkshop.com/forum/bootstrap.php(247): Vanilla\AddonManager->startAddonsByKey(Array, 'addon')
#9 [internal function]: {closure}(Object(Garden\Container\Container), Object(Gdn_Configuration), Object(Vanilla\AddonManager), Object(Garden\EventManager), Object(Gdn_Request))
#10 /home/steve55/public_html/sequentialworkshop.com/forum/vendor/vanilla/garden-container/src/Container.php(723): call_user_func_array(Object(Closure), Array)
#11 /home/steve55/public_html/sequentialworkshop.com/forum/bootstrap.php(308): Garden\Container\Container->call(Object(Closure))
#12 /home/steve55/public_html/sequentialworkshop.com/forum/index.php(30): require_once('/home/steve55/p...')
#13 {main}
Notice
The addon with key GoogleSignIn could not be found and will not be started.

#0 [internal function]: gdn_ErrorHandler(1024, 'The addon with ...', '/home/steve55/p...', 1076, Array)
#1 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(1076): trigger_error('The addon with ...')
#2 /home/steve55/public_html/sequentialworkshop.com/forum/bootstrap.php(247): Vanilla\AddonManager->startAddonsByKey(Array, 'addon')
#3 [internal function]: {closure}(Object(Garden\Container\Container), Object(Gdn_Configuration), Object(Vanilla\AddonManager), Object(Garden\EventManager), Object(Gdn_Request))
#4 /home/steve55/public_html/sequentialworkshop.com/forum/vendor/vanilla/garden-container/src/Container.php(723): call_user_func_array(Object(Closure), Array)
#5 /home/steve55/public_html/sequentialworkshop.com/forum/bootstrap.php(308): Garden\Container\Container->call(Object(Closure))
#6 /home/steve55/public_html/sequentialworkshop.com/forum/index.php(30): require_once('/home/steve55/p...')
#7 {main}
Notice
The locale with key SequentialWorkshop could not be found and will not be started.

#0 [internal function]: gdn_ErrorHandler(1024, 'The locale with...', '/home/steve55/p...', 1076, Array)
#1 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(1076): trigger_error('The locale with...')
#2 /home/steve55/public_html/sequentialworkshop.com/forum/bootstrap.php(249): Vanilla\AddonManager->startAddonsByKey(Array, 'locale')
#3 [internal function]: {closure}(Object(Garden\Container\Container), Object(Gdn_Configuration), Object(Vanilla\AddonManager), Object(Garden\EventManager), Object(Gdn_Request))
#4 /home/steve55/public_html/sequentialworkshop.com/forum/vendor/vanilla/garden-container/src/Container.php(723): call_user_func_array(Object(Closure), Array)
#5 /home/steve55/public_html/sequentialworkshop.com/forum/bootstrap.php(308): Garden\Container\Container->call(Object(Closure))
#6 /home/steve55/public_html/sequentialworkshop.com/forum/index.php(30): require_once('/home/steve55/p...')
#7 {main}
Notice
The locale with key SQWSHP could not be found and will not be started.

#0 [internal function]: gdn_ErrorHandler(1024, 'The locale with...', '/home/steve55/p...', 1076, Array)
#1 /home/steve55/public_html/sequentialworkshop.com/forum/library/Vanilla/AddonManager.php(1076): trigger_error('The locale with...')
#2 /home/steve55/public_html/sequentialworkshop.com/forum/bootstrap.php(249): Vanilla\AddonManager->startAddonsByKey(Array, 'locale')
#3 [internal function]: {closure}(Object(Garden\Container\Container), Object(Gdn_Configuration), Object(Vanilla\AddonManager), Object(Garden\EventManager), Object(Gdn_Request))
#4 /home/steve55/public_html/sequentialworkshop.com/forum/vendor/vanilla/garden-container/src/Container.php(723): call_user_func_array(Object(Closure), Array)
#5 /home/steve55/public_html/sequentialworkshop.com/forum/bootstrap.php(308): Garden\Container\Container->call(Object(Closure))
#6 /home/steve55/public_html/sequentialworkshop.com/forum/index.php(30): require_once('/home/steve55/p...')
#7 {main}