eliot-akira / neko

Neko is a cross-platform open-source animated cursor-chasing cat screenmate application
https://eliotakira.com/neko/
92 stars 2 forks source link

Ideas for collaboration #1

Open evert opened 1 year ago

evert commented 1 year ago

Hi!

I loved your article and this archive. I have a similar history with Neko and also wrote an article:

https://evertpot.com/neko/

I hope it's ok i used some of your information and images. I made sure to attribute you and link back to your post. If you're not OK with it, I can take it down

eliot-akira commented 1 year ago

Hi Evert,

Thanks for letting me know! No problem about the images and attribution - I think we can consider this whole Git repository as public domain, except if there's a specific license for each Neko implementation.

I enjoyed reading the article, and looking at jneko. I especially liked the part about how you extracted the image data from .xbm format. I had to do a similar deep dive with .ico format - I wish I had written down the details.

"Software pet" is a fun concept, and I feel like it has creative potential - maybe as part of a bigger "software garden". Even better if the gardens could be interconnected across websites somehow.. I love that it's pixel art, and an animated character like in a game.

That reminds me, one of my hobby projects these days is a custom version of MicropolisJS, which is based on the original SimCity Classic code, ported over several generations/platforms until it reached the web. The heart of it is similar to Neko, as a state machine with behaviors and animated icons.

evert commented 1 year ago

Thanks for letting me know! No problem about the images and attribution - I think we can consider this whole Git repository as public domain, except if there's a specific license for each Neko implementation.

Nice! seems to be in the spirit of Neko =)

"Software pet" is a fun concept, and I feel like it has creative potential - maybe as part of a bigger "software garden". Even better if the gardens could be interconnected across websites somehow.. I love that it's pixel art, and an animated character like in a game.

Honestly I've been thinking a lot about how I could combine something like this with Hypermedia. Maybe for starters a tamagochi concept as a hateoas endpoint :P

That reminds me, one of my hobby projects these days is a custom version of MicropolisJS, which is based on the original SimCity Classic code, ported over several generations/platforms until it reached the web. The heart of it is similar to Neko, as a state machine with behaviors and animated icons.

It's wild because I've also looked into this. I have this folder sitting on my computer since February to extract the assets:

image

And another one from the last time I had this idea in 2014.

My wild idea was to make a version of this game with an extremely large map, and let people build their cities in a shared world map.

But I keep giving up because it's hard to work on things for a long enough time + I'm not good enough with Canvas

Definitely interested to hear about your progress!

eliot-akira commented 1 year ago

how I could combine something like this with Hypermedia. Maybe for starters a tamagochi concept as a hateoas endpoint

Tamagotchi as an API, yes I can see that. Like a "game server" where players can POST to create a creature, GET the current state of its life cycle, PUT actions like feed, water..

Another angle I'm thinking about is creating an actual little piece of hardware based on ESP32 with CPU, memory, WiFi/Bluetooth; and an e-ink mini-display. Something like:

esp32 e-ink display

It could run compiled Arduino code with a loop that maintains persistent state with wireless interaction.


While reading about the history of virtual pets, I saw this early version of a Japanese toy called Digital Monster.

tamagotchi-connection

Aww, I sure love the retro pixels.


Over the weekend I started organizing the code for my custom Micropolis fork.

https://github.com/eliot-akira/microcity

I figured out a way to load alternative tile sets, so it looks like a weird mutant city, haha.

The original codebase was quite difficult to customize, so I'm slowly taking it apart, so I can rebuild it how I want - especially the control panel, tools, zoom in/out, overviews..

Well, I see a good hobby side project is like tending a garden, it can take its sweet time to grow.

crgimenes commented 1 year ago

Hey! I have good memories of that cat and ended up writing my version. I'm collecting material to create a nice README.md with references. Please have a look https://github.com/crgimenes/neko

eliot-akira commented 1 year ago

Nice! Thank you for letting me know, @crgimenes. I'll enjoy studying your Go version of Neko - I'm only a beginner with the Go language, so I imagine it will be good learning material. Please feel free to use any of the information from this repo and my article.

I see, with the use of Go and Ebitengine, your version of Neko can be compiled to a wide range of targets, including as desktop accessory on various operating systems and on the web with WASM. It's probably the most cross-platform implementation of Neko. It's fun to see how the cat continues to live many lives.

eliot-akira commented 1 year ago

I've updated the README with links to new projects. Thanks! @evert @crgimenes

evert commented 1 year ago

😎

eliot-akira commented 1 year ago

By the way, I've really enjoyed looking at some of your projects (like curveball, a12n-server, oauth2-client), and also reading other articles on your site. Good stuff! Useful and educational.

My wild idea was to make a version of this game with an extremely large map, and let people build their cities in a shared world map.

I can imagine. I've had similar dreams where the shared world state lives on a central server, and everyone who visits the website/game connects via WebSocket; and each person can see and receive only a "slice" of the state at a time, within a limited perimeter and viewport, to make it scalable. Would be fun if the world was drawn in "isometric" style (like tilix and isometric).

evert commented 1 year ago

Thanks so much for checking my stuff out!

Actually since then I made something:

http://world.evertpot.com/client/index.html

I haven't worked on this in like 2 months (got distracted). But I got some of the ideas in. It's not very fast when you zoom out, but you can search for any place in the world and it will give you something.

eliot-akira commented 1 year ago

Wow, that is a large map indeed. I see every view of the map is generated by the URL endpoint /map, and it returns 10MB of data. I imagine that can probably be reduced somehow by viewport size, resolution, position.

I like when you zoom in, the map is made of millions of SimCity tiles, R for residential, roads, train tracks. The canvas navigation works, that's nice. I was able to zoom in/out, drag and move quite a distance to visit continents.

It makes me wonder, how to efficiently "run" such a huge game world simulation and communicate its state among users. It could even be distributed, so that different parts of the map are generated by other servers. And what if it's populated with intelligent agents that uses machine learning or large language models to communicate amongst themselves.. Another idea I sometimes think about is a user-scriptable world and characters, where people would write scripts that interact and create/destroy collaboratively.

It's sure fun to think about. Now I want to try building a scrollable canvas with shared persistent state among its visitors. Maybe with something like ShareDB or Yjs.