#+TITLE: Game plan veilid orgmode clim #+author: screwtape * Executing this buffer. Well, M-x org-babel-execute-buffer works for *me* but I have slime installed and the slime common-lisp repo and all the other McCLIM dependencies in my ~/common-lisp/. good luck. * Apropos veilid I was perusing [[https://veilid.com]]'s README.md #+name: veilid-brief #+BEGIN_QUOTE ## From Orbit The first matter to address is the question "What is Veilid?" The highest-level description is that Veilid is a peer-to-peer network for easily sharing various kinds of data. Veilid is designed with a social dimension in mind, so that each user can have their personal content stored on the network, but also can share that content with other people of their choosing, or with the entire world if they want. The primary purpose of the Veilid network is to provide the infrastructure for a specific kind of shared data: social media in various forms. That includes light-weight content such as Twitter's tweets or Mastodon's toots, medium-weight content like images and songs, and heavy-weight content like videos. Meta-content such as personal feeds, replies, private messages, and so forth are also intended to run atop Veilid. #+END_QUOTE which goes on to say go on to install a veilid note ** Installing a node extract INSTALL.md mainly directs the user to their deb and rpm sources to install from on I guess redhat-like or debian-like linuxen. I'm figuring upon my move for this. I guess there's that package for installing a working debian inside a chroot, or I could use LxC on a linux machine. I don't use systemd distributions normally except an occasionally Debian as my Often Expected experience. #+non-systemd #+BEGIN_QUOTE ### Without systemd `veilid-server` must be run as the `veilid` user. To start your headless Veilid node without systemd, run: ```shell sudo -u veilid veilid-server ``` #+END_QUOTE I saw someone tooting about Devuan recently, maybe I could do that. Or someone might have a gentoo overlay. * Do what I was fortunate to fall into conversation with two industry-first game authors on the mastodon recently: In particular, [[https://mastodon.sdf.org/@synlogic@toot.io]] and [[https://mastodon.sdf.org/@albatross]] ; being the first commercial rogue-like and the first MMO authors respectively. Since I wanted to write a command-loop speed game similar to an IRC bot implicitly with veilid and McCLIM, synlogic suggested I go for game mechanics comparable to the boardgame (often played online) diplomacy, suggesting something like a one day serverside clock at which point it executes whatever it accrued from the players. The remainder of this phost will be me noodling with McCLIM in lisp. * Noodling Remembering that we are going to use clim, so I'm duplicating this block from 015 here: ** Starting swank in eshell #+name: eshell-swank #+begin_src elisp :var my-slime-path="common-lisp/slime-v2.27/" :results none (eshell) (dolist (cmd `("cd" ,(format "cd %s" my-slime-path) "sbcl --load start-swank.lisp")) (insert cmd) (eshell-send-input)) (previous-buffer) #+end_src swank is a wire protocol. ** Connecting slime to that swank #+name: start-slime #+begin_src elisp :results none (slime-connect "localhost" "4005") #+end_src ** Doing some clim :PROPERTIES: :session: clim :END: *** Require McCLIM #+name: require-clim #+begin_src lisp :results none (Require :mcclim) #+end_src *** test application #+name: define-test-frame #+begin_src lisp (clim:define-application-frame myframe () () (:pane :application)) #+end_src #+RESULTS: define-test-frame : DEFINE-MYFRAME-COMMAND *** Make one of those #+name: test-make-frame #+begin_src lisp (defparameter *my-test-frame* (clim:make-application-frame 'myframe)) #+end_src #+RESULTS: test-make-frame : *MY-TEST-FRAME* *** Run that top level #+name: test-toplevel #+begin_src lisp :results none (clim:run-frame-top-level *my-test-frame*) #+end_src