Hi fediverse, I'm finally doing my much overdue #introduction post!

I'm a #GameDev with a decade of experience, having founded Kitsune Games in March 2013. I'm currently focused on #KitsuneTails, a queer platformer in the style of beloved classics where you play a kitsune on a journey through a land inspired by Japanese mythology. In the past I've released games such as Super Bernie World, MidBoss, and more.

I'm also working on a fantasy console called the #Mega68k, which runs on the Motorola 68000 CPU. Additionally, I create a series of videos called #CodingHistory, which explores how 3D techniques from the 90s worked. I also like programming language development and make a lot of toy languages that don't go anywhere, and am trying to liven up the #PLDev hashtag on mastodon.

You can find my games at https://kitsunegames.com/games, or find more information on Kitsune Tails at https://kitsunegames.com/kitsunetails. For Coding History videos subscribe to my YouTube to see them when they come out: https://youtube.com/@EnikoFox

Games

Check out Kitsune Games' games, like the possession based roguelike MidBoss or the hat based puzzle game Ultra Hat Dimension.

Kitsune Games
I'm just gonna tag and boost my intro post for #PortfolioDay
@eniko cool! I remember fondly the 6809 and the 68000 from the early days!
@eniko very cool that you're working on a fantasy console, I'm doing the same with my Radix project, which combines an emulated 6502 CPU with a simplified version of the NES PPU. I program it in assembly, which is a bit brain-melting. You can check out the emulated 6502 here: https://semioticblocks.com/apto6502/
@mattwells oh that sounds really cool! yeah one of the reasons im running an (overclocked) m68k is cause you can program for it using C >_>
@eniko nice! I'm planning (so many plans, lol) on layering a scripting language over the assembly, but then I'd have to build a parser, which sounds daunting (I've used parser generators before but have never been really happy with the results).
@mattwells like as an interpreter, or that compiles down to assembly? because i've found parsing is trivial compared to trying to make a good optimizing compiler x_x
@eniko down to assembly for this project - I have an assembler that translates asm into "machine code" (really a JSON object), but I really threw it together quickly. I used to use Jison in projects to translate from DSLs into JS but debugging would get really confusing.

@eniko nice to meet people sharing interest in programming languages and 90s 3D techniques 🙂

Great work with your games! Love your style 🥰

@eniko I'm very happy to see more and more coders here on Mastodon, you have mentioned a lot of cool projects! I'm a coder too but lately not much free time to work on them and this is bad because I need to be creative even if what I do is useless 😁
Welcome! 😸
@eniko greetings! Awesome to meet you!

@eniko

I found the tag I needed.

#PLDev

Thanks from a fedi noob. <3

I have been working on my own not-so-toy language, which I need to make games, but I don't have much experience with games... yeah, I know, I should make games first, but my brain doesn't cope well with most languages available around, so bear with me.

I would greatly appreciate any ideas (or, if you really feel generous, feedback on my project) from someone who is both a PL- and games-dev.

Thanks! =D

@xarvh I think if you're gonna make a language to use in production you probably wanna do something more like javascript, a dynamic language that's quick and easy to get up and running

Also my eternal tip is to read Crafting Interpreters https://craftinginterpreters.com/

Crafting Interpreters

@eniko @xarvh If you want to make languages because they're fun, then just admit it and do that!

Trying to justify that effort "because it will make X easier" has basically never worked. I have seen so many (very smart) people try to do that. Fooling yourself is not the path to happiness or succeeds.

@TomF @xarvh I would agree with that. I've been doing it for 8 years without really any practical application besides enjoying tinkering with pldev
@eniko @xarvh And I want to reiterate - that's totally fine!

@TomF @eniko

Let me explain.

I tried using Unity (C#), Godot (python-like), Bevy (Rust), Löve (Lua) and they are all great! But I *personally* was not enjoying making games with them.

I tried Elm and made the first two actually playable games I have ever made.
But Elm is limited.

I literally started Squarepants because I could not make games and I wanted a project.

I'm really really enjoying PLdev, but I also genuinely need it because I have lots of ideas for games and I want to make them!

@eniko @xarvh seconded! It's such a solid starting point!
@eniko @xarvh hmm, I once read a book about games in C++ and how writing your own compiled or interpreted la gauge for scripting was doable and such - and this is literally the same author. Neat.

@eniko

I code JS for a living, and it feels like it makes easy things so damn complicated. =(

I mean, you are right of course!
I understand the case for dyn langs for quick iterations and... I don't know how, but I want to make static type check able to do the same.

I don't have any better argument than "I feel it would be a better world and I want to make it work".

Sorry, I feel like I asked for your feedback and then dismiss it.
I can assure you, I'm still taking it to heart.
Thanks.

@xarvh well I understand the impulse to make a type checked languages, but deferring that stuff to runtime is wayyyy easier than trying to get everything right with a statically checked type system. If your goal is to make a language *and* make things with it, I can't recommend a static type system

@eniko

Re static typing, are we talking about "make things" in general of videogames specifically?

Also, since the term is ambiguous, are we talking about C-like static typing, or ML-like inference and check?

@xarvh in general trying to make a statically typed language is a good way to get nowhere with your language. I don't know enough about ML to understand your other question

@eniko

Hahah, then that's the best compliment ever. <3

Squarepants can already compile itself, type inference and check are already implemented and working, I even have safe dynamic code loading for mods/plugins, I'm beating the odds already. ^_^

Like, I don't know what I'm doing, but I know what I can do. 8-)

My impression is that most gamedevs don't know what they're missing, that a Better World Is Possible (TM), and I want to try and bridge the gap.

@eniko ML is a family of languages that include Haskell, Elm, OCaml.

They have a powerful type system (which Rust has adopted) and are fully type inferred, which means that while type annotations are nice to have, you don't have to add them anywhere if you don't want to.

If you are curious, #Elm is very accessible and can be learned in a couple of days.
I've been using it in production (for web apps) for several years and it's really another world.

@xarvh I'm also doing some #pldev and gamedev, yay!

What does your language do differently from the ones that you tried before deciding to make your own?

@springogeek

I could not find any lang/engine with all of these:

1. No classes, no exceptions, no nulls/NaN/undefined

2. Type-driven: you model your game mechanics with types, the compiler enforces them & everything flows from there.

3. Targets both host and shaders, so they can share code and values.

4. No global state

5. No side effects: all functions can do is taking arguments and returning stuff.

6. Readability over expressive power: the language is small, there isn't much to learn.

@xarvh Oh that's quite interesting! You could probably learn a lot from how Elm is designed. Although I've not used it myself, what I've heard aligns with some of your goals, although it doesn't do shader stuff. Fascinating idea though :)

@springogeek

Thanks. =D

I used #Elm in production for several years, it's another world and changed completely the way I approach programming; Squarepants is heavily inspired by it.

However Elm is not geared towards games, has little support for GPUs and is not very good with heavy IO or number crunching, so I'm trying to overcome these.

@xarvh A neat! I only came across it recently (I've been listening to many podcasts about functional programming, and other things, to keep myself engaged as I work on my own language) so I've heard bits and pieces. Not tried it myself for a project yet.

I'll have to give Squarepants a closer look. A functional language makes a lot of sense for a GPU context, I'm surprised there's not more work done there.

@springogeek SP is still... Very rough. I'm still working on the WebGPU emitter, I want to complete the core features before I start the polish, but your feedback is very welcome. =D

@springogeek

Also, some unrequested feedback: I could not see what set DOME apart from the page you link in your profile, I had to click in the corner to go and check the itch.io link, which has previews of the games written in DOME and a nice list of features, why don't you link that page instead? =D

I really like DOME's minimalism.

In the page there is a .gif that shows some sort of live editing, and another with a 3d rendering, is it stuff that's supported? =D

@xarvh Yeah, that's a fair assessment. The thing that originally set it apart was that it's using the Wren language. I could definitely do some more to explain its unique points.

DOME doesn't natively support 3D at the moment, that gif is demonstrating the native-plugin system, where you can implement a renderer.

Live-editing is just something you can make yourself. I often make level editors into my games :)

@springogeek

Is DOME a one-man project?

Can I ask you how do you find the networking/outreach/PR aspect?

This kind of projects benefit a lot from others working on them and providing feedback, and I feel like my inability to pitch/market/network is SP's greatest weakness.

@xarvh One-person. I accept contributions and PRs, but the "grand" vision rests with me.

Networking/outreach is tough, and I'm not great at it, so I can't offer much there. It's a niche tool, but usually if someone checks out Wren, they stumble on DOME sooner or later. It's positioned as an approachable environment for easily making stuff, so it's a good way to take the language further.

@springogeek Fair enough.

There's only very few geeks that know how to sell. XD

For the rest of us, the only answer to "why are you doing it" is (red-eyed, foaming at the mouth) "BECAUSE I CAN AND IT'S AWESOMEEEEEEEE BWAAARGH" XD

@xarvh Pretty much! I talk about it in a community when it might be relevant, but I don't like to push too hard. I participate in a lot of game jams, so if engine design comes up in a larger jam (7DRL's community, for example), it's easy enough to drop a mention.

I've tried spreading it to places like reddit (rip) and Hacker News, but it just doesn't appeal to people much.

@xarvh I mostly make it for myself, but I am very careful to provide documentation for everything, so anyone can use it. I try to make the onboard ramp as low as I can without having to teach people how to code. Plenty of example code, a small but open community and I've tried to run some events in past years to encourage more use.

@springogeek

Fair enough, and I think you are actually giving me very good advice.

SP can't yet fulfill its promises, but once it's more complete, game jams could be a good place where to show off. ^_^

@eniko Looks pretty cool

The fox reminds me of Reimu's old design lol

@eniko ooh what's a fantasy console??
@Euan a fantasy console is a video game console that never existed. Basically imagine a console with the specs you want then write an emulator/development environment for it. The most famous examples are pico 8 and TIC-80