These days you're chiefly a programmer at Vanillaware. Can you explain the different challenges between programming 2D and 3D software?
With the words 2D and 3D it seems like it's just a difference in dimensions, but I believe the difference is greater than that. 3D games must be rendered using a camera and shaders. What is then displayed on the screen is simply the end result of that. The angle, zoom and even lighting changes are rendered based on the player's control inputs. The designer cannot tune the data that produces the rendering and the programmer can only work to improve the rendering quality. What finally determines the visuals is the game hardware itself. You can obtain the ability to express overwhelming freedom, space and photorealism, however artistically expressing solid shapes takes much time and effort and still ends up unnatural somehow.
With 2D graphics you can arrange the screen so that it appears just as the artist drew it. Naturally, there is an intense charm to this. As a matter of fact, this is 2D's primary advantage. So, when dealing with 2D, unless you directly use the charm of the image as it was drawn by the artist's hand, there's no point.
Beyond that, the programmer's job is...indirect, with few glamorous tasks. In our company the situation is that in order for planners to do more minute adjustments, programmers continually improve animation tools and separate a large amount of the animations though complex branching processes, foregoing the desire to make programs that have a simplified structure. However, in terms of expressive elements, for Dragon's Crown we worked really hard on a pixel shader that was something like a gamma corrector that created the sunlight patches and reflections on water (laughs).
For Odin Sphere Leifthrasir, we tried making something that created shadow on the floor and walls, but unlike in 3D, because there are no actual floors or walls (there are floors and walls that have been drawn, however) we didn't know how far to extend the shadows, so we ended up having to set parameters for the floors of each map. Also, unlike 3D where the camera is set to view great distances, the character's field of view is only as narrow as the width of the TV, so we always have problems with the camerawork. Basically, the area where the character is looking is displayed broadly, but if you're in the centre of the screen and an enemy attacks out of some invisible space, it isn't really fair, so this also affects how we program the AI of the enemies.