Monday, December 3, 2018

5 Reasons why Lisp Games Suffer and proposed solution

Lisp games, like the Lisp AI and Lisp Machine hype in the 1980's, has proven yet again to fail to deliver.

Let's say I'm a lisp noob, or even an average gamer. I think, hey, what's the state of Lisp in games? So I do some google searches:

"lisp games"
"lisp game engine"
"common lisp game engine"
"lisp game engine"

The following are some case studies from results that turn up:

Case studies 

  1. The Poverty of #Lispgames 
  2. Outnumbered by Blub
  3. Google Search Poor Examples
  4. The Sorry Tale of Those Who Tread the Great Lisp Path
  5. Difficult to install, difficult to run, difficult to edit, difficult to use
Conclusion:  What would a successful Common Lisp game engine IDE look like?

The Poverty of #Lispgames

TLDR: Lisp games has many channels, but not enough content

Lispgames accounts turn up a lot.
There's the lispgames twitter, wiki, group, irc, subreddit

Then there's lisp game jams 
https://news.ycombinator.com/item?id=16819226
https://github.com/lispgames/lispgames.github.io/wiki/Lisp-Game-Jams
https://itch.io/jam/lisp-game-jam-2018

But where are the games?

There are many lispgames accounts and lisp game jams but few games. There are 14 games on the lispgames wiki and 70 from all game jams = 84 games. Lispgames has existed since 2010, 8 years ago. That's about 10 games per year, or 1 small game every month.

Outnumbered by Blub

TLDR: For every lisp game, there are 10,000 blub language games. So much for being a "powerful" language.

How many C++ games are there? Java? Flash? Javascript? c? A search on github for "game" [dec 3 2018] results in 861,000 repositories. How many for "lisp game"? 379. There are 18.2 million programmers in the world, and 3.5 million github accounts, that is around 1/5 of programmers using github. So lets assume there are 5 * (379 github lisp games + 84 lispgame game jam + wiki) lisp games. That is 2315 in total.  2315 games in the world

How many games exist for other languages? (861,000 github repositories * 5 estimated programmers per github programmer) + 1,000,000 android apps that are likely games = around 5,305,000. If we add things like scratch, 36,273,545 scratch projects, its around 40,000,000. What about flash games? Java applets? HTML5 games? My guess is there are hundreds of millions of games made in the entire world. 

 Lets say there are 10,000 lisp games that have ever existed, but it seems like an over estimate. And there are 100,000,000 million games that have ever existed, which is probably an underestimate. (10^8)/(10^4) = 10,000.

Google Search Poor Examples

TDLR: Many of the lisp "game engines" which are on the front page of google do not demonstrate the power of lisp, they are toys or demos.
See: xelf, blackthorn, sketch.

The Sorry Tale of Those Who Tread the Great Lisp Path

TDLR: Ambition unrewarded

Rewarded for leaving CL for IOS:
There's this guy who paid for LispWorks, had to write his own OpenGL bindings, and eventually moved to ios to create mekorama, which has more than 3 million views on youtube and has been installed on millions of devices. So much for sticking to common lisp.

Gave up on extremely ambitious engine for Unreal:
There was Clinch, that had ambitious goals, and there were nice 3d demos, but the author moved to seems to have abandoned it and moved to Unreal. youtube before. youtube after . I also remember reading somewhere we he recommends CEPL instead.

Poor video editing:
Trial looks promising, as in trial's youtube demonstrations. But the only games that have been shared are here. Then there's shinmera's treehouse which is like a trial tutorial, but each video is an uncut 2 hours, and there are 39 of them. 2* 36 = 80 hours/ 13 hours watching a day = would take an entire week to watch

Is Baggers leaving?:
CEPL looks promising. However, it is starting to look like the author is moving away from CEPL towards TaleSpire.

Difficult to install, difficult to run, difficult to mod, difficult to use

TDLR: There must be an extremely simple installation process.
 
Most lisp games require a working knowledge of quicklisp, common lisp, common lisp implementations, and the command line. And in order to mod the game you most likely need SLIME + emacs. This basically equates to a tiny subset of Linux users. Where is the one-click install for Windows? Like having a single .exe that just runs? Downloading, running, and modding needs to be a dead simple process, as simple as possible. Complexity of installation drives users away and wastes loads of time. Think of how hard it is to set up a development environment on windows. Examples of projects trying to address this problem are portacle, quicklisp, and roswell.

Summary

Lisp games has the social media infrastructure but no content. Despite the proclaimed "power" of lisp, lisp games are less than 0.01 % of market share. Google search does lisp games no favor by providing toy examples. Those who have attempted to create an ambitious CL engine so fervently abandon it at the drop of a hat when they are tempted. Tutorials are lacking. And worst of all, lisp games all basically require time and effort to install and experience with linux, CL implementations, CLHS, quicklisp, and SLIME and emacs.

What could a successful Common Lisp game engine IDE look like? 

TDLR: One click install. Runs on Windows. Portable Common Lisp. Portable editor. Very few dependencies. State of the art OpenGL graphics. Dedicated quicklisp installation. Trivial game servers.


- One click install Common Lisp game + IDE on windows, in a similar vein to portacle, but only using SDL2, libffi, and a Common Lisp implementation
- Run on Windows with 96% steam market share. Instead of just Linux, which is around 1.5% desktop market share. 96 / 1.5 = 64, which means the Common Lisp games, instead of being confined to Linux, might run in an area 64 times larger.
- CEPL for graphics
- lem editor using CEPL as a frontend, replacing the arcane installation for emacs
- quicklisp as package manager

9 comments:

  1. Excellent post, thank you!

    However, what you are comparing big products with the efforts of one man.

    Any successful game or engine or IDE is a product, not just a bunch of lisp libraries.

    Lisp itself can't help to build a product. To build a product, you need a vision – just like you described yours at the end of the post. The vision and the team.

    ReplyDelete
    Replies
    1. A survey of lisp game engines and engine writers which determines their design principles and goals would be valuable to engine writers with similar goals as they could team up and save effort. There may not be a single team or vision, but it certainly seems that not all lisp game engines need to be the efforts of one man, and at least some engine writers might be willing to work with one another. Hopefully lisp game engine writers will be open to this idea. All the ingredients are there for a big product, someone just needs to convince the individual engine writers to work together.

      Delete
  2. TL;DR
    We are niche of an already small community. There's just not enough people to cover the needs.

    I understand your frustration with the state of affairs in lispgamedev land, but there's just not enough of us. We can't combine our powers because often we seek different goals. Some prefer performance over simplicity, some want smth bodged together quickly till it works, some would like to have pure lisp solution and proper abstractions and some really just like to make tools, rather then games. And when i say some, most of the time it's just really a single person doing the whole thing, because there's literally so little of us around, and lisp power can get single person only that far.

    To address specific topics you mentioned:

    Unfortunately, you've missed most active communication conduit at the heart of the community: #lispgames IRC channel at freenode.net. Everything started there and it is still the engine of the community.

    Bulb games outnumber lisp games, because we are outnumbered by bulb developers. It's just that simple.

    I'm not sure what's your definition of a toy engine. Xelf powers several quite popular games and is not abandoned (http://xelf.me/2x0ng.html and http://xelf.me/3x0ng.html). David (dto) is still an active member of a community. Sketch is, well, Processing inspired tool, it's not a game engine, it can be a toy depending on how you gonna use it, i guess :)

    Baggers isn't leaving: TaleSpire is a project he works on with a team that happens to know different tech better. CEPL is amazing! :D

    ReplyDelete
    Replies
    1. On the other note, thank you for digging into the problems! We, as a community, need proper shaking from time to time :D

      We would really appreciate contributions to any of the tools you stumble upon on your path of making games with Lisp!

      Personally, I'm not completely disagree with the points you have made, only with some of the arguments ;)

      Delete
  3. hey, while I admit Xelf is rather limited, i did use it to ship a bunch of working games for Win/Mac/Linux, including the critically acclaimed "2x0ng" http://xelf.me/2x0ng.html

    ReplyDelete
    Replies
    1. Dear Mr. O'Toole,
      Wow, 2x0ng has indeed shipped and recieved critical acclaim. That is no small feat, major respect. However, this blog post was meant as a note to myself and a few others lamenting the fact that there are no major engines like Unreal engine, despite the potential for there to be one. Maybe in another post i'll write about things that are done well and include you. If you want me to take down the reference to xelf please respond.
      Thanks,
      Terminal625

      Delete
    2. hi thanks for responding. no need to alter article, just gave a response i thought was worthwhile :)

      Delete
  4. BTFO by based baggers

    ReplyDelete
  5. Baggers is truly based, no doubt. Although he could have used a few less curse words, his insight into C++, game content, platforms, and missing features from common lisp has been inavaluable, there is much to learn from him. Thanks for sharing! Link:http://techsnuffle.com/2018/12/07/reasons-why-lisp-games-suffer-corrections
    Reddit: https://www.reddit.com/r/lisp/comments/a4ah8v/baggers_responds_to_reasons_why_lisp_games_suffer/

    ReplyDelete