Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

1090 Excellent

About choffstein

  • Rank
  1. choffstein

    Pixelcraft: The Colors of Frogatto

    I'm no artist, but that was a cool entry to read!
  2. choffstein

    Binaural Audio Follow-up

    That was absurdly awesome...
  3. choffstein

    Progress, of a kind

    Looks like Erlang's model a bit ... but your pattern matching is implicit. How do I know, in my receiving blocks, who is sending me a message so I can send one back? A special keyword or something? What is nice about this paradigm is that for the programmer, there is no difference between serial, parallel, and even distributed (your VM simply needs to keep a map of task names and whether they are running locally or on a foreign machine). Nice!
  4. choffstein

    I do NOT have a sleep problem. OK, yes I do.

    I have to ask: why do you not allow functions that perform side effects in your parallel tasks? I understand the inherent non-deterministic issues, but that doesn't seem like reason enough. I know you are also trying to avoid locks -- but I can think of some legitimate reasons as to where I will actually need them ... or at least something similar. What if I want two threads to read and write from different tables in a database? Technically, this is a side-effect, though a totally legitimate place for threads. What if I want to perform file I/O in my tasks? It seems to me that you have limited tasks to the mere crunching of numbers...
  5. choffstein

    Oh noes, we aer teh borked!

    Well, if you are already generating an AST, isn't it simple to flag your way up the tree if a node is found to be unsafe? E.g. debugstring is unsafe, so borken is unsafe. borken is referenced in foobar, so foobar is unsafe. Therefore, the code should regurgitate an 'unsafe'. So really, you just need 1 unsafe flag per function. Start at the bottom of your AST and work your way up... Then again, this also would assume that anytime you have 'f(a)' in your code, and you generate your AST, you aren't creating a new node for f. Instead, all nodes that contain f point to the same f node. So in your example, all references in the AST to 'borken' would point to the same function node. It requires a bit more 'linking' of the tree, but makes propagating 'unsafe' markers up pretty easy.
  6. choffstein


    Have you taken a look at Clojure's threading paradigm? It is pretty interesting, and might give you a couple ideas...
  7. choffstein

    Resource files suck

    I know one of your plans for epoch was to develop a language for the future -- something that would work in the days of asymmetric parallelism, where you might have code optimized for CPU, GPU, PPU, and distributed computing. How do you plan on a) allowing the user to give the compiler hints (syntactically) without things getting too cluttered and b) keeping the system extensible? Forcing the compiler to know about CPU/GPU/PPU forces it to keep up with the latest technology, and at current time, will also probably force it to translate to shader code (though, OpenCL might help with this). Thanks!
  8. choffstein

    More Epoch shtuffs

    I found your last post particularly intriguing and was hoping you could go into further detail about how everything was implemented. Primarily, does this now make your system platform dependent? As well, how do you think you would implement this if you were implementing it ONTOP of another virtual machine. The reason I ask is because I wanted to write a small lisp-like language and build the VM in C# and allow interaction between the scripting language and C#. Passing functions between C# and the language was a major conceptual road-block. Looking at your solution, I might have to learn .NET CIL ... Would love your thoughts. Thanks
  9. choffstein

    Memory Management Part III

    Jeez, and to think that if you just used a language with built-in memory management, all of this could be avoided! Just kidding! Great series of articles. I am definitely enjoying it. Thanks for putting in the time.
  10. choffstein

    Quick update

    Memory Management is sooooooo 1990s. No, but seriously, best of luck with the Bipolar Disorder. I dated a girl once who had it, and she definitely struggled. Looking forward to the rest of your articles.
  11. choffstein

    Language List for 2009

    Where is the esoteric, academic language? J/Forth/Io all seem like good choices for messing with your brain!
  12. choffstein

    Silly poll

    It actually depends on the language I am writing in. I typically use CamelCase for whatever class / structs / enums and 'meta' datatype. In C, C++, Java and C#, for methods/functions I use 'mixedCase'. In Ruby, Python and OCaml I use 'under_scores'. The same goes for my variables. I also didn't realize I did this until you brought it up. This is strange behavior on my part, if you ask me...
  13. choffstein

    Beat em up Hero...person

    Quote:Original post by Stompy9999 I hadn't thought of it that way, but you do make a very good point. Although I am partial to the idea of beating an opponent to death with their own severed arm, I don't think I want to make the game too over the top violent. However, later in the game I was planning on having fighting robots, and that concept of being able to take off body parts(and use them as weapons), would work great there. Or at the very least, a cool death sequence. You could have their heads get knocked off and exploded. Or they could spin around in circles really fast and have their head fly off like a rocket ship. Just a lot of little cool animation stuff.
  14. choffstein

    Beat em up Hero...person

    Very cool development. You do realize, however, that this also means that you now have to give us the ability to chop enemy heads off. Or rip their arms off. Or cut their legs off. Or gouge their eyes out. Or rip their ears off. You get the idea. But in all honesty, that does also could lend itself to some interesting game play "features"...
  15. choffstein

    Beat em up Hero...person

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!