3

If I wanted to make a video game with emacs what are my options? Are there frameworks? What graphics capabilities does emacs have? Can I make 3D first person shooters with emacs?

3 Answers 3

10

First of all, Emacs is a text editor. Teaching it other tricks is a neat pastime (I engage in it all the time), but I've learned to lower my expectations. I know of a single framework attempt (which the author scrapped for standalone implementation in CL) or maybe even two if the built-in grid.el counts (it's the basis behind M-x tetris, M-x snake, M-x pong, etc.). 3D games rely on graphical acceleration, typically solved with OpenGL, DirectX or whatever the favored low-level solution to leverage your GPU is. Emacs doesn't have FFI and even with the upcoming module support this kind of thing is possible, but far from on the same level of convenience as SDL or comparable solutions. You could alternatively write a software rasterizer, but I doubt this will have comparable speeds unless you restrict yourself to wireframe rendering maybe.

Regarding the graphical abilities, the display engine allows you to display images. Most games go for tiling by generating many square-sized images and moving them around, others generate a single one, place it in a suitable location and update. Puzzle games can get away with updating on user input, anything more advanced will need to build its own game loop hosted on top of Emacs editing loop. It's tricky to do this in a speedy manner, but I've succeeded in doing so for a XPM Tetris. SVG allows you more freedom ultimately, so that's where my future demos will go. For further details, check out my Quasiconf 2015 talk.

tl;dr: You can make games, it's not a walk in the park, a 3D FPS is currently out of the question.

4

Did you see Multiplayer 3D walk on Emacs?

It's just amazing !

The author kiwanami says, drawing graphics and numerical calculation in Emacs is so much slower compared to Java.

He is joking "about 1,000 times slower." ;)

2

Short: Is it text? Emacs can do it. Is it a 3D GUI that allows you to place objects in a scene? You are looking for a scene editor. Scene editors are not text editors or IDEs. They are a completely different application altogether. You can program any game imaginable in Emacs, but you will likely need other tools besides a code editor to perform the other tasks needed to complete a game.

Long: I professionally use Emacs to program games which utilize the Crytek, Unity, and Unreal game engines, among other engines. Game programming using a programming language is just text editing, which is something Emacs excels at. However, when it comes to placing objects in a scene, rotating them, animating them, etc., this is typically done in specialized applications. This separation of applications is not peculiar to Emacs, this is how game programming is done in general on all OS and development platforms. Visual Studio does not support scene management either. Indeed, I am not aware of any major IDE that supports scene management, though some scene managers have built-in code editors. However they are usually feature poor compared to a dedicated code editor or IDE.

I suggest you read about the applications and libraries professional game programmers use. I personally prefer:

  • Blender (3D modeling and animation)
  • Emacs (text and code editing)
  • engine-specific scene editor (example: Unity and Unreal editors)
  • lots of software libraries so I don't have to reinvent the wheel
  • a GPU debugger, such as apitrace

Not the answer you're looking for? Browse other questions tagged or ask your own question.