1
0
Fork
You've already forked Tamias
0
forked from neonfrost/Tamias
A game engine implemented in Common Lisp and SDL2
  • Common Lisp 99%
  • C 0.9%
Find a file
2023年12月30日 19:40:31 -07:00
3d-branch Started a test suite for Tamias core functionality. ...ran into code I was working on prior to a major event. 2023年12月16日 23:18:31 -07:00
CORE Ensuring everything is up to date 2023年12月30日 19:40:31 -07:00
demos Added ui-lister functionality to GUI subsystem. ui-lister is like a table with 'executable' elements. Will be used as basis for displaying files in a file or asset explorer. 2023年04月24日 13:50:50 -06:00
Documentation Fixed a litle bit of document 2023年12月05日 03:56:52 -07:00
fonts Added ui-lister functionality to GUI subsystem. ui-lister is like a table with 'executable' elements. Will be used as basis for displaying files in a file or asset explorer. 2023年04月24日 13:50:50 -06:00
MING Minor bugfixes 2023年12月10日 04:14:04 -07:00
tests Started a test suite for Tamias core functionality. ...ran into code I was working on prior to a major event. 2023年12月16日 23:18:31 -07:00
AUTHORS started Quad Tree implementation - Incomplete 2018年05月21日 20:49:34 -06:00
changelog.md Worked on scripting system, see changelog for more details. 2023年05月25日 16:59:58 -06:00
demos.asd Sigh 2023年01月06日 01:54:43 -07:00
error-handling.txt Added timers back into tamias.asd, lots of work done on bringing MING to the new version of Tamias. 2023年06月10日 16:33:54 -06:00
GETTING STARTED Cleanup and minor modifications 2022年11月22日 21:14:54 -07:00
gui maker idea.jpg Text in ui labels does not go out of labels, even if label text exceeds the dimensions of label. Started work on gui elements being able to be interacted with the keyboard. some core code was fixed. Text chunker now allows newline 2023年04月10日 00:08:21 -06:00
init.cl Added (test-suite) and removed (print active-item-id) 2023年12月26日 02:47:48 -07:00
install-packages.sh GUI subsystem improved. Menu-bar items still need work (highlight on hover). README updated 2023年03月28日 18:41:50 -06:00
issues.txt Many small fixes that required parallel fixes 2023年01月18日 03:41:55 -07:00
LICENSE Initial commit 2018年04月09日 01:03:42 +00:00
ming.asd Trying to head towards as much of tamias being used by MING as possible. Started on overhauling the input system 2023年07月23日 23:36:01 -06:00
password.txt testing password 2023年01月06日 02:15:11 -07:00
README.md Updated Readme file 2023年12月10日 05:05:34 -07:00
run.sh Honestly, not entirely sure what I've changed. Added an easier way to document things (at least, for me it's easier). Reimplemented the text buffer system. Will need some work done on higher level stuff. However, it should use less a LOT less CPU to display 'static' text, like a tamias.console message (which needs to have the text buffer implemented on it lol). Working on trying to get the paint 'demo' to work correctly. Currently, crashes with random error messages. 2023年05月01日 23:32:41 -06:00
screenshot.png Quick check in to make sure things are working right 2023年08月21日 02:14:31 -06:00
sdl2-ql-reqs.cl Check changelog 2023年01月06日 01:24:19 -07:00
Splash-screen.png Added timers back into tamias.asd, lots of work done on bringing MING to the new version of Tamias. 2023年06月10日 16:33:54 -06:00
style-guide.txt Formally started work with the scene subsystem 2023年12月01日 20:21:40 -07:00
tamias-gui.asd Started a test suite for Tamias core functionality. ...ran into code I was working on prior to a major event. 2023年12月16日 23:18:31 -07:00
tamias-sdl2.asd Renamed 'sdl2/Graphics Code' to 'sdl2/render' 2023年12月10日 04:38:05 -07:00
tamias.asd Started work on defining scripting language. Separated some functionality into their own files. Added ability to pause animation globally. 2023年12月08日 03:34:37 -07:00
tests.asd Started a test suite for Tamias core functionality. ...ran into code I was working on prior to a major event. 2023年12月16日 23:18:31 -07:00
TODO.txt Menu-bar works correctly again, still needs improvement. 2023年12月26日 02:37:31 -07:00
tst.cl Worked on scripting system, see changelog for more details. 2023年05月25日 16:59:58 -06:00
tst.tsl Trying to head towards as much of tamias being used by MING as possible. Started on overhauling the input system 2023年07月23日 23:36:01 -06:00

Tamias

A game engine implemented in Common LISP, by someone with Executive Dysfunction.

Focusing currently on 2D support, but 3D is planned down the road

As of right now, there is only support for the ogg music format. Use of mp3, wav or mod for music is untested.

While I would like to implement my own audio server thing for Tamias, that will require a number of things. If I get around to properly developing Oreortyx, then it would be implemented in Rust or Zig, just because it would need to have as few things between it and the actual machine (and I don't want to do it in C)

Building

  • Install an implementation of common lisp, SBCL is the only one I can guarantee Tamias will work on.

  • Install quicklisp.

  • Install the developer and user libraries of sdl2, sdl2-image, sdl2-ttf and sdl2-mixer.

  • From an SBCL instance that is in the working directory of your tamias folder (use (uiop:getcwd) to make sure you're in the correct directory, which should end with "/tamias" or "/tamias/"), type (load "init.cl") and then hit enter.

  • After all of the various bits of information that pop up (style warnings and what not), type in (main) and hit enter. An sdl2 window should pop up with a black box that says "Console started" in it. [May 2023: (main) now starts a new thread for the sdl2 window. REPL can be used more easily for interactive development (especially with multi-monitor setups)]

  • The exit key is set to C-` [control-backquote].

The first 'official' release is TBD

Feedback

While I will appreciate feedback, please avoid being rude unless there is a piece of code that is completely braindead. I am trying to get rid of `,', in my codebase

Style

I do NOT always use the standard stylization practices by other lisp developers.

This is primarily due to the fact that Tamias is currently still in the development phase. I do not have a style guide. However, I do try to stick to some conventions, like +constant+. I will develop a style guide, not for further development of Tamias code, but to understand the various parts that don't make total sense.

An example of non-standard style: pseudo-package.fun-or-macro. Another example is the tamias.string package. This is to clarify that the "string" package isn't meant to override the default string functions, and that it more than likely relies on Tamias specific code (like tamias:state). The pseudo-package.fun-or-macro is used with the ui subsystem. I'm hoping that I can delineate the UI subsystem from tamias a bit, so that it can be used with other engines or toolkits

Recent development: I'll be using structure.function to differentiate from struct-fucntion to say "this is a user defined function." so ui-fs.get-file isn't part of the ui-fs defstruct, but it is integral to the use of ui-fs.

One thing to note about the pckg.fun-mac style is that it is never used with variables, ONLY functions or macros. I'll probably end up modifying the style to differentiate between functions and macros.

Another note: One liner macros (see CORE/engine/init/timers.cl) are next to each other because they aren't overly hard to read. At least, for me they aren't. If they are for other devs, then please, speak up.

Updates

11/11/2021: Delineating input from state/sub-state system, input is tiered: key check :: mode -> player -> object -> state/sub-state Further work done on 3d system. Still far from production ready. UI implemented, many more elements still need to be added. Colors in own package. tamias.colors:+COLOR+ to use color Text subsystem is up and running, including fake anti-aliasing, may change font image to be anti-aliased at the source

12/20/2018: Added some animation handling code. will need to be tested more thoroughly. Keyboard should have been fixed to use virtual keys (:1) instead of physical keys (:scancode-1) Audio updated to help facilitate better looping Hex color string parser implemented, needs fine tuning

Possibility of crashing: medium, I still need to work on the API documentation