10 ms·
Core: an experimental new way to write videogames
- Dalewyn 2y agoI thought this was something to do with RPG Maker[1]. They (you?) should change the name given the obvious trademark and general confusion issue. [1]: https://www.rpgmakerweb.com/ https://www.rpgmakerweb.com/
- resatori 2y agoDo I have to change the name ? Given it's just an open source project and the name is actually just 'core' . It's an rpg maker tool and functional engine.
- resatori 2y agoI am actually also open for names, I don't know exactly what this thing is.
- Drakim 2y agoMaybe change your wording to "an RPG maker", as "RPG Maker" is already an established brand. As for names, maybe something cute like ClojRPG?
- resatori 2y agoBut I don't know exactly what this thing is. I have coded like crazy on it and created a new component system & datomic-like transaction-data like effect system, so it is more than just an RPG maker. Its a whole new way to write games. For example side effects are just vectors of `[:tx/foo param]`.
- Drakim 2y agoThen maybe something more generic sounding like ClojEngine? Naming is hard lol. Core is fine, but maybe add one more word to it, because googling just "Core" to find your repo is difficult. But I highly recommend changing the capitalization of Maker to maker to avoid being mixed up with the product RPG Maker. Adding "an" helps signal that it's a descriptor instead of a name too. Core: An RPG maker and engine for Clojure.
- 0xEF 2y agoGamesCore - generic but serviceable name. CrystalCore - because RPGs must have some sort of magic crystal, it's the law CreataCore - why limit the name to RPG theme in case it develops into something larger? Just a few quick name suggestions for OP.
- card_zero 2y agoIf it aspires to become like Unity you could maybe call it "Clunj".
- BaculumMeumEst 2y agoNo. By the power vested in me, I hereby permit you to keep your project's name, and to point at this man and laugh at him.
- Dalewyn 2y agoA name has to meaningfully differentiate amongst its peers, which calling an RPG making tool "RPG Maker" when it's not associated with the brand clearly does not. It is (was) marketing failure and an unnecessary legal risk if this gets bigger and comes up on Enterbrain's radar.
- BaculumMeumEst 2y ago[flagged]
- Dalewyn 2y agohttps://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html >Comments should get more thoughtful and substantive, not less, as a topic gets more divisive. >When disagreeing, please reply to the argument instead of calling names. >Please respond to the strongest plausible interpretation of what someone says, not a weaker one that's easier to criticize. Assume good faith. >Please don't post shallow dismissals, especially of other people's work. A good critical comment teaches us something.
- Dalewyn 2y ago>It's an rpg maker tool and functional engine. Proper grammar would be "an RPG making tool". Additionally, you deliberately wrote "RPG Maker" rather than "RPG maker". Capitalization is important, kind of like how "US bank" and "US Bank" mean completely different things (former is a generic reference to an American bank, latter is the name of an American bank). So yes, I would change the name if I were you (and you have from what I can tell, good job) because it's infringing upon the RPG Maker brand and trademark but most importantly because it's just confusing.
- hn_acker 2y ago> Additionally, you deliberately wrote "RPG Maker" rather than "RPG maker". I think HN automatically converts post titles to title case. (There's a short window of time to manually edit the post title to fix the capitalization.)
- Dalewyn 2y agoI am referring to the README.md that's in the repo, which originally stated "RPG Maker&Engine for Clojure"[1]. I really don't think it's unreasonable to assume this had something to do with RPG Maker when it was written like that. [1]: https://github.com/damn/core/commit/72682f512343c596bce84f0f894daaf1ec518ae1 https://github.com/damn/core/commit/72682f512343c596bce84f0f...
- hatsix 2y agoonly the owner of the copyright can make you change, however, being able to search for articles, tutorials, bugs, solutions, etc will be easier if you give it something unique
- hn_acker 2y ago> only the owner of the copyright You meant trademark, not copyright. Otherwise, your point still stands.
- CaptainOfCoit 2y agoI think it's a "Maker" that happens to make "RPGs", not a "RPG Maker" engine. A bit like you could still call your shop a "photo shop" if there are photos for sale there.
- ramon156 2y agoIt's like calling your project "engine" and telling people they can't call their project engine
- the_gorilla 2y agoWhat about calling your project "GameMaker"? Is that taken?
- kleiba 2y agoI love Clojure, but isn't a functional language with immutable data structures an odd choice for developing a video game?
- Vekz 2y agoHigh performance real-time games it is questionable. Any genre that is more static turn based can be a great boon.
- resatori 2y agoCheck it out, it is handling hundreds of entities at >>60 FPS. And I still did not do much performance optimization (there are still many lazy seqs around and unoptimized code). Also most of the sprite rendering is the main problem, which an atlas texture could also improve even more. (Right now all creature animations are separate texture files). And you can always step down a level to java if the need arises!
- virtue3 2y agothe issue with JVM/java was always that when that GC triggers you are just absolutely hosed. C# tends to be a bit more forgiving about when it triggers GC and how. The generational garbage collector in C# will tend to be more reliable or at least I never ran into super huge issues with the places I've used C# for game dev. The JVM GC has this unfortunate effect of having very bad pauses occasionally. And appears to do so regardless of the type of GC you are using. There are some techniques you can use to get around this -> re-using entities. Using C# structs. Not doing allocations/deallocations inside the main game loop if you can. For small enough games it is irrelevant but as soon as you start to get a larger game with lots of memory allocations/deallocations it really crushes performance.
- kleiba 2y agoMinecraft is written in Java, it doesn't look like the choice of platform kept it from becoming a success.
- Alex-Programs 2y agoOooh, this is cool. I always like to see different approaches to game dev (despite never having published a game!). So far I've tried - Bevy (Rust ECS engine), which is nice at first but has a lot of problems with its implementation and can become rather messy. I think it's heavily dependent on the game. Part of it will be my own incompetence. - Unity. IMO the system of gameobjects with composed modular components is the most utilitarian - it gets out of the way, and it's easy to avoid spaghetti without requiring a really strict engine-dictated structure. - Godot. I hated it. All of the awful heirarchy of OOP, a really poor builtin language, and "signals", which are meant to decrease spaghetti but only increased it for me. Maybe I was using it wrong? I very rarely use inheritance to the point of being bad at using it. - Pygame, back when I first learnt to code. It's quite nice for small projects - it's procedural at heart but you can make your own OOP or functional layers over it. There have been some surprisingly large projects made in it. I don't know Clojure, but it's interesting to see someone make a functional implementation of something that stereotypically seems like a good fit for OOP.
- spoiler 2y ago> - Bevy (Rust ECS engine), which is nice at first but has a lot of problems with its implementation and can become rather messy. Can you expand a bit about why this was messy or comolicated? I found the paradigm leads to pretty well organised code (sometimes you get the odd large system, but it can be broken down into smaller systems, sub systems or composed out of smaller functions).
- pizza234 2y agoWhile any design requires discipline, ECS systems have little or no coupling between them, and they very easily end up all over the place; in addition to the chaotic design, one ends up also not having an idea of what happens when. For this reason I agree - developing games using an ECS design requires more discipline to manage complexiy, compared to an imperative one.
- spoiler 2y ago
- kgeist 2y agoIt says game development can be made simple and then throws a whole of jargon at you: clojure vectors, datomics, atoms, transactions, malli schemas... Can someone explain?
- deleted 2y ago[deleted]
- stavros 2y agoTo be fair, it asks whether game development can be simple. It just so happens that the answer is probably "no".
- kitd 2y agoBetteridge's law of repo descriptions, or something
- bluGill 2y agoGame development can be simple, but the game with either be boring (games with thousands of identical rooms are simple to make), or trivial to finish with no replay value (because there isn't much you can do). In the real world games are all complex as making an immersive world requires complexity. There are a few games like suduko that are about that are simple and yet have high replay ability. If you can come up with another game on these lines great, but such games tend to be very different from the things. Good luck in making an exception.
- resatori 2y agoA clojure vector is an inbuilt data structure of the language and looks like this: [1 2 3] I am using them to construct side effects which I call 'transactions' (similar to datomic) [:tx/foo 3] where :tx/foo is a keyword and uniquely identifies the component behaviour.
- CyberDildonics 2y ago> inbuilt data structure of the language and looks like this: [1 2 3] array / vector > construct side effects which I call 'transactions' setting a variable > where :tx/foo is a keyword variable or hashmap > uniquely identifies the component behaviour running a function
- astlouis44 2y agoThere's already a commercial platform for game creation called Core, powered by Unreal Engine 4) https://en.wikipedia.org/wiki/Core_(video_game) https://en.wikipedia.org/wiki/Core_(video_game)
- nightowl_games 2y agoAs a game dev, this GitHub is comical to me. Bordering on parody of the kind of academic navel gazing that game devs stick their nose up at. Cherry on top is the ugly screenshot.
- doctorpangloss 2y agoOn the other hand, making things intellectually stimulating: even if you waste 100h making clojure datomics in order to make 1h of level content, 1h>0h, and if it were boring and therefore you wouldn’t make it at all, you’ve come out ahead. The “Jonathan Blow uses Jai” thesis of indie development.
- Dansvidania 2y agoit _does_ say it's experimental.
- ertian 2y agoThis seems like the wrong site for you, then? Hacker news generally has stories about interesting new ideas. It's not really the place to discuss incremental improvements to C++ and Unity. I can think of a couple games that sprang from odd academic navel gazing like this. A sibling comment mentioned Jonathan Blow; when I read about this project, it immediately reminded me of Braid. I remember when procedural generation was an ivory tower topic. Hell, every development in 3d graphics started life as a totally impractical paper at a conference. There's a lot of things that are mainstream in games now that were once niche academic notions. I don't understand the hostility.
- NohatCoder 2y agoTo me at least, the great value of this site is that people can and do write their honest opinion. Maybe the style of the parent comment wasn't that good, but I agree with the take that there does not seem to be much of value in the project, it enables a style of game that has been done to death by amateurs and indies, and there are probably better tools out there for making that kind of game as well. Braid features actual novelty in game design, enabled exactly by not using an engine with a fixed view on how a game works. I don't see how this compares.
- frompdx 2y agoThis post has generated a surprising amount of conversation for how little documentation this repo has. Looking at the code this looks more like a project rather than a game engine. The property editor looks interesting. Seems like this post is being upvoted based on the title vs the content.
- TechDebtDevin 2y ago[flagged]
- slater 2y agoNo relation to the Core Games game kit.. thing.. https://coregames.com/ https://coregames.com/
- ccvannorman 2y agoIt would be interesting to analyze data of "time/complexity spent on game engines" vs "complexity/interest" of produced games. As a game developer, I expect to see a log curve of diminishing returns of novel games given any simple templating/engine system. In other words, the better you make your cookie cutting machine, the less variance your cookies will have.
- Apocryphon 2y agoSuperb username
- Dansvidania 2y agocan you please elaborate?
- resatori 2y agoThanks, it is from a time when I read too many osho books and started a blog...
- deisteve 2y agofor the love of god do not use clojure for game dev absolutely not recommended even for solo i would not recommend it for any sort of web app either clojure/atomic is ovverated
- resatori 2y agoTo be honest I think this project actually failed. It is an overengineered mess and lacks any kind of clear structure. The main problem is total lack of specification - because I didn't come up with a story for the game or I think games maybe don't need stories. So I just coded like a maniac because it's just fun to code in clojure
- BaculumMeumEst 2y agoTo be fair, a lot of successful projects are an overengineered mess and lack any sort of clear structure. Kudos for trying something cool, this is a space a lot of people are interested in. Thanks for sharing it.
- johnnyanmac 2y agoYou're already above many by admitting that this was simply a fun hobby, and realizing that this may not have as simple as claimed. Hope you learned a lot from the project.
- Dansvidania 2y agoi am going to check it out, thanks for sharing! I am learning Clojure and would love to use it for some hobby game-dev, but I have not found a way to compile to html so I am using Godot instead. Not really in awe of the OOP approach though.
- resatori 2y agohttps://github.com/xpenatan/gdx-teavm https://github.com/xpenatan/gdx-teavm This is a libgdx backend for web. Should be possible to use with clojure but haven't tried. This is actually the most interesting next step for the engine I think - would let anyone try the game from the browser! Even if it's would be hard on performance o think it would be worth it - I would just make the game turn based then
- Dansvidania 2y agowill check that too, thanks!
- jbverschoor 2y agoDoes nobody use cocos?
- johnnyanmac 2y agoUsed it for some small game jam games. It did its job adequately (i used the c++ wrapper), felt very stable even as far back as 2016 or so. But it wasn't exactly a tool I'd eagerly reach out for again if I had a small game idea.
- rizky05 2y ago[dead]
- breck 2y agoInteresting! I worked on something similar once. I would recommend you go further and try to do this for 3D/4D. Orders of magnitude more interesting! In my efforts, I hit a wall where it wasn't very interesting anymore. Also, how about clojurescript so you could run this in browsers? My user test: https://www.youtube.com/watch?v=gcMBaQI7d-c https://www.youtube.com/watch?v=gcMBaQI7d-c
- deleted 2y ago[deleted]
- lincon127 2y agoMaking games has always been simple. Making engaging games is what requires a little more work.
- vlmutolo 2y ago> The whole game state is stored in one atom: app/state and entities are again atoms inside the main atom (like in our universe). I don’t know clojure. Is this normal terminology, ie to use “atom” this way? Seems like a bad name for the concept since the whole idea of “atoms” is that they’re indivisible (back when physics thought they were indivisible).
- jheriko 2y ago; set max speed so small entities are not skipped by projectiles ; could set faster than max-speed if I just do multiple smaller movement steps in one frame jesus wept. sweep. c'mon.
- redsaz 2y ago> The only thing missing is a game I've seen this story of "I want to make a game" [proceeds to make a game engine instead] happen in my own life (my engines were never any good or complete though), and in countless other programmers lives. It may be the trap of thinking that "If I get the hard part out of the way first (which is writing the engine code, right? Right? Anyone?), then the rest of the game making process will be easy" that gets me. Or maybe it's finding out along the way that it was more fun to make the engine than the game itself: "check it out, I completely redid the particle effects and I can now do 100x more particles at 60fps, how cool is that?" There's way more easier-to-see improvements in the making of the engine, than in the making of the game itself, and so we (ok, I) keep optimizing the engine because those are quick dopamine payoffs compared to the slower payoff of having a polished game that's actually fun for the target audience to play. Sure, I might tell myself that the game I want is only possible once I have the engine first, so I'd better concentrate on that before making the actual game, and there's some logic to it. But without a clear idea of what the game will actually be, it's easy to fall into the trap of endlessly adding and refining features, rather than actually try and use those features in anything beyond a slick demo. To combat the tendency of only making an engine rather than a game in my latest hobby project, I picked an already existing engine (Phaser js) and tried to get something interactive on the screen ASAP "with the stupidest, least designed code possible", and it mostly worked to get me a playable (ish) game! Granted, it's a knockoff puzzle game but hey, I sometimes find myself "playtesting" it instead of what I should really be doing, which is refactoring the code for what I'd like to have it do next, so I'm marking it as a win.
- fwee 2y agoIndeed, making an engine is a guaranteed reward. You put in time, make an engine that can draw something, and you succeed, receiving a dopamine reward. But making a game is really risky; a programmer may put in a lot of time and hope, then still fail. I think lots of programmers don't want to take the risk of failure.
- SteveSmith16384 2y agoI remember joking 10-15 years about how Sourceforge seemed to have far more game engines than actual games. Is this another one to add to the list?
- ertucetin 2y agoKudos to you! I’m happy to see another Clojure developer like me using the language for game development, even though we sometimes make things harder for ourselves :) Currently, I’m developing a 3D multiplayer TPS shooter using Clojure. For anyone interested, here’s a demo link: https://prototype-game.pages.dev https://prototype-game.pages.dev I’ll also be posting a blog post about the journey soon!
- philipov 2y agoSounds like a poorly-chosen name. It's already taken by these guys: https://www.coregames.com/create https://www.coregames.com/create
- joseda-hg 2y agoIt was my first thought, specially since their thing is create games inside a game, which could be considered a "new" way to write games
- zomglings 2y agoAre there any games that are playable right now implemented in Core?
- resatori 2y agoCore is both an engine, a new paradigm and an action RPG in development. Just clone the repo and start with `lein dev` (clojure build tool).