Mike Acton
Thoughts on performance, the video game industry, and development.
Mike's Junk Drawer Random stuff. You might not find anything interesting, but this is where I keep stuff I want handy.
Articles
Open Source and Console Games
The free and open source software which we gladly take advantage of can be thought of as the proverbial "shoulder of giants". When we forget what brought us the advantages to get where we are, we do a disservice to ourselves and the health of our industry, and thus ultimately a disservice to our shareholders and customers.

Understanding Strict Aliasing
Strict aliasing has been part of C programming for the better part of the last decade but a thorough understanding of the details of this feature is still clouded in mystery for many programmers. Examine detailed examples and some perculiarities of GCC's implementation.

Demystifying The Restrict Keyword
Optimizing data access is a critical part of good performance. Read on to find out how to use the restrict keyword to open up a whole class of optimizations that were previously impossible for a C compiler.

A Practical GCC Trick To Use During Optimization
Splitting a basic block (by force) Warning: This is a trick to use during optimization. It is not documented nor gauranteed to work across multiple platforms or different revisions of the compiler. Many programmers will say that this non-portable code...

Performance and Good Data Design
What follows are some simple rules of thumb that programmers can follow to create a solid pipeline from the content creators to the screen and speakers.

Links
Legal
Content Copyright © 2006 by Mike Acton. All Rights Reserved.

This site uses the Movable Type 3.2 content engine.

This site uses the phpBB bulletin board engine Copyright © 2001, 2005 phpBB Group.

Cell Broadband Engine is a trademark of Sony Computer Entertainment, Inc

PowerPC is a trademark of International Business Machines Corporation.

Linux is a registered trademark of Linus Torvalds in the U.S. and other countries.

Macintosh, and Mac are registered trademarks of Apple Computer, Inc

All other trademarks are the property of their respective owners.
More About Mike Acton...
Mike Acton
March 18, 2006
What Am I About?
I am a programmer who cares about performance.
I understand that all the software we write must eventually sit on top of a real hardware platform and push real content and real experiences out to real people.

I am a programmer who appreciates the needs of the content creators.
I understand that what I write is only a conduit between the artists, designers and the users.

I am a programmer who wants to give back to the community.
I understand that I could not have done my job well without relying on the work of others and I have a duty to try my best to return the favor.


Strengths
Low-level optimization
Very comfortable programming close to the hardware. Specialize in building technologies best suited for the hardware and software being used. Very familiar both with developing algorithmic optimizations, and assembly-level code. Experienced and familiar with a variety of processors and architectures (e.g. Processors/Assembly: RISC, ARM, x86, PS2 VU, SuperH, Z80 – Architectures: PS2, PSX, GameBoy, Palm, and custom embedded systems.)

Engine development
Have been the lead developer for graphics display/visibility engines (3D and 2D), animation engines (3D and 2D), collision engines, sound engines, front-end engines, AI engines, streaming engines, scripting engines, etc. for multiple console platforms.

Tools development
Have developed toolsets for all areas of development (Programming (e.g. Resource converters, Polygon stripping, Scripting languages, pre-processors, code-optimizers, Network communication etc.), Art (e.g. Editors, Viewers, etc.), Game Design (e.g. Scripting, In-game resource editors, etc.), Sound (e.g. Sequencers, In-game editors, etc.). For off-line tools, I am familiar with unix and unix-like development environments, as well as MS Windows development. For tool graphics I am most familiar with OpenGL. For tool languages, I am most familiar with C, C++, Perl, although I don't consider language a significant barrier.

High-level design
Have been the lead programmer on multiple game projects, as well as having consulted on System Architecture on several non-game projects. I am comfortable making the necessary trade-offs regarding available resources (e.g. Time) and quality development.

Contribute to the development community
Have a personal commitment to contribute as much as possible (within reasonable limitations) in code, documentation, etc. back to both the game development community and the programming industry as a whole.

Still love games
I still play games regularly and enjoy them! Although my favorite game of all time is still the 1981 Midway classic, Ms. PacMan.

Video Game Industry History
High Moon Studios / Vivendi Universal Games, Carlsbad, CA
Darkwatch PS2 (May '05 – Present)
Sr. Architect (PS3 Research)

In the process of discovering the secrets of the Cell BE processor and the Playstation 3.

Sammy Studios / High Moon Studios, Carlsbad, CA
Darkwatch PS2 (Apr '04 – Mar '05)
Lead FX Programmer

Worked closely with the FX art staff to create custom tools, realtime editing and previewing on the target platform and some very cool special effects.

FINE, Osaka, Japan
LIME PS2 (Jun '03 – Jan '04)
Lead Programmer

Was the sole programmer on this PS2 title. Although technically a PC port, due to contract restrictions, no source code was available from the original PC project. Developed all tools including art converters and a unique scripting language. Developed all console code including graphics engine, scripting engine, streaming engine and game code. Completed the title from start to gold master in approximately six (6) months.

Yukes co, ltd., Yokohama, Japan
PS2 Research and Development (Jan '02 – Jun '03)
Engine Programmer

Developed samples, libraries, tools and documentation for distribution to various internal and external PS2 developers. Conducted development, lectures and training on all aspects of PS2 code and data design.

VBlank, inc., San Diego, CA, USA
PS2 Engine Development (Mar '00 – Jan '02)
Technical Director / Engine Programmer

Successfully developed and licensed MG5, VBlank's PS2 graphics engine. Mostly engine programming, plus designed the toolset and formats and co-developed the tools. Accomplishments of note: Optimizations – in real game situations, complete with animations, lighting, etc., rendering was typically limited by the hardware pixel throughputand the artists' abilities in building very high resolution models in the allowed schedule. Windowing system – coupled with the texture manager, the windowing system allowed programmers to implement a variety of new features easily (e.g. Point-and-click user interface for debugging, off-screen rendering for special effects (e.g. Crowds), split-screen, full-screen redraw effects, etc.) Internationalization support – Built in support for a variety of font formats (e.g. TrueType) and text formats (e.g. UTF-8, Shift-JIS)

VBlank, inc., San Diego, CA, USA
PS2 Research and Development (Mar '00 – Jan '02)
Technical Director / Engine Programmer

Developed samples, libraries and documentation for distribution to various external PS2 developers as part of VBlank's and my commitment to returning value to the community. Lectured on multiple occasions at SCEA PS2 Developers' Conferences on various subjects, such optimizing and utilizing the multimedia instruction set (in assembly) on the EE-Core, optimizing the data pipeline, and general low-level tips specific to the PS2.

BlueSky / Titus, San Diego, CA, USA
PS2 Research and Development (Sep '99 – Mar '00)
Senior Programmer

At this time, I had released the only samples on the SCEA developer website which were not developed by SCE (the only 3rd party samples). The various samples served as an introduction to programming the GS, optimizing using the EE-Core multimedia instructions, and transferring and optimizing data on the DMA channels available on the Sky simulator (VIF,GIF), as well as other graphics pipeline issues. Various other samples, including an introduction to VIF and VU programming, were released by SCEA, however much of this was superseded after the release of the hardware.

BlueSky / Titus, San Diego, CA, USA
PSX Engine Development (Jan '99 - Jun '99)
Continued support, additions, etc. (Jun 99 – Mar '00)
Lead Programmer / Engine Programmer

I wrote and completed the PSX engine (arbitrary portals, no convexity design restrictions, using arbitrary geometry and all the pipeline tools (lightwave for geometry, image converters, etc.). feature of engine: completely GPU bound - on average GPU is twice CPU (i.e., geometry throughput exceeded GPU drawing abilities, excluding heavy use of translucent polys) and polygon overdraw was probably less than 10% on average. This engine was used in the completed, but not released (due to contract issues), Superman PSX.

Sony Interactive Studios America (SISA), San Diego, CA, USA
PSX Development (Nov '97 – Jun '98)
Lead Programmer / Engine Programmer

Contributed to various projects at various levels of completion. Produced PSX technology demos, contributed to game designs, and evaluated feasibility of projects.

Sony Interactive Studios America (SISA), San Diego, CA, USA
PSX Research and Development (Jul '97 - Aug '97)
Lead Programmer

Developed technology used in several PSX titles. Including -- Reverse engineering the PSX hardware interface to the memory card and replacing the Sony memcard libraries with fully asynchronous system which didn't use the file API. Results were much more reliable and approximately ten times faster than libraries available at that time. Also allowed for flat access to the memory card for debugging, etc. -- Wrote tutorials for GTE/GPU optimization for the PSX which were distributed on the SCEA PSX Programmers' Tools disk. -- Replaced the SN libraries with PC file i/o libraries which used the 3050 cable between a non-development pc and a standard playstation for development (This was unusual at the time). -- Wrote various PC tools (art converters, etc.)

Sony Interactive Studios America (SISA), San Diego, CA, USA
Spawn PSX (Jan 96 - Jul 97)
Lead programmer / Programmer

Involved in every aspect of the development. Including character animation engine, camera logic, AI and virtual control systems, tools, etc.

ABOUT THE AUTHOR
Mike Acton is the director and adminstrator of CellPerformance, is dedicated to helping the Cell community as much as possible and plies his trade developing technology for PS3 games.

Mike has made regular appearances as a speaker at SCEA develpment conferences and other events. Mike Acton is not a framework-happy C++ programmer. He actually likes C. And assembly. In his spare time he develops hardware on FPGAs in VHDL.

He prefers vi.

Also check out the CellPerformance main site, which has additional articles written by Mike Acton.