Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: Game Engine with its own IDE and scripting language
3 points by am-gm 15 hours ago | hide | past | favorite | 2 comments
GitHub repo: https://github.com/ArcadeMakerSources/ArcadeMaker (first of all, i want to say that I made this project for fun and challenge. I always wanted to create my own language. This has no business goal or something.) So the project is a 2D game engine (MonoGame backend) inspired by GameMaker 8. It includes its own IDE (built with WinForms) and an interpreted programming language that I wrote myself. The language—definitely the biggest challenge in the project—is a simple dynamically typed language. When I started, I had zero knowledge of how to build something like this. I didn’t even know I was making an interpreter; at first I called it a compiler. It was a personal challenge, and I wanted to figure everything out without using any resources or tutorials. My mindset was basically: “I need to write software that takes a text file containing code and just does what it says.” Somehow, I made it work. In the beginning, running an empty loop counting to 1M took 7 seconds. After a lot of performance work and rebuilding parts of the system, the same machine can now run a 30M loop in 2–3 seconds. Pretty nice improvement. The language itself is a bit unusual, and I want to share one small feature I really like: loop counters. foreach item in ['a', 'b', 'c'] : counter c { println(c + ": " + item) } // Output: // 0: a // 1: b // 2: c Not a complicated feature, but pretty useful. Here's a YouTube video showing me using the engine to build a little game Anyway, these days I barely have time to work on the project, so I decided to open-source it. I’m hoping people here will find it interesting and help turn it into something real. I'm looking for contributors! I know there are tons of AI-generated projects being shared these days, so please, please, take a quick look at the code before assuming this is one of them. I promise it's pretty obvious that it was written by a human. Any feedback is welcome.
 help



Remember to use double enter

for a new paragraph and two spaces for code

  foreach item in ['a', 'b', 'c'] : counter c {
    println(c + ": " + item)
  }
  // Output:
  // 0: a
  // 1: b
  // 2: c

Thanks, i can't edit this anymore but for next time I'll remember that



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: