4 ms·
I worked on this project doing most of the input coding (XBox 360 controller & keyboard), some of the game loop & networking, and some of the game play. If you
by Figs 15y ago
I worked on this project doing most of the input coding (XBox 360 controller & keyboard), some of the game loop & networking, and some of the game play. If you have any questions, I'll try to answer as best as I can remember -- it's been a few weeks since I've worked on it.
Elliott's site seems to be down, but our code is open source:
http://code.google.com/p/blackthorn-engine-3d/ http://code.google.com/p/blackthorn-engine-3d/
You'll find our project development notes for the class (status reports, some of the initial planning, final report, etc.), along with the code, screen shots from various points in the development, etc.
A lot of things are probably still a bit messy there; we only had 10 weeks during the course to hack the engine together. (Although I believe Elliott's been continuing work on generalizing it since the end of the school year.)
- rsaarelm 15y agoAny opinion on which elements were particularly nice to code due to choosing Lisp? What about anything where choosing Lisp gave you particular trouble?
- Figs 15y agoMost of the team was unfamiliar with Lisp starting out, so that was an extra challenge to it -- only Elliott was an expert, and only one other person had actually used Common Lisp as far as I recall. I had some prior exposure to Clojure (although not recent), Python (what I usually use for many of my personal projects), and Haskell. Trying to use an unfamiliar language for a fairly serious project in a group setting like this was something of an experiment in itself. This lead to a lot of the sorts of problems that you face when you're just learning a new environment. As such, most of the code is probably not idiomatic Lisp, although we picked up enough to get something written fairly quickly. A lot of the places where things like macros or functional programming could have been used to simplify things were missed due to lack of familiarity with the way things are done in Lisp. Looking back on my input code for example, there's an enormous amount of repetition that I could probably factor out -- and that would have been quite handy around week 8 or 9 of the project, since I needed to extend the controls. One feature that we found quite handy though were multimethods. We didn't have too many problems with performance once the game was running, although we were running mostly on fairly decent machines. Starting things up with the load and compile was rather slow though.