Giant strides...

by Kyzrati on 20110709 , under

...Hopefully not to be followed by baby steps.

I'm starting development with the battlescape, primarily because its design is potentially problematic so it's the best place to start in order to determine the feasibility of this project. (By comparison, the geoscape should be relatively easy to represent in ASCII.)

Progress during the first week of development:
  • Expanded personal game library (which has only been used for basic 2D applications in the past) to include 3D LOS/FOV functions, a 3D pathfinding class, more 3D matrix methods, a handle manager template, and a generic logging system.
  • Defined all major game flow handling classes/modules
  • Defined all major data classes (Cell/Prop/Entity/Item)
  • All data objects loaded from files
  • Can load a rudimentary static battlescape map, with objects, from a text file
  • Map props can be static light sources; entities/items can be dynamic light sources
  • Visibility, and map shading, dependent on time of day setting
  • Can control members of a test faction, walking or flying around the map, which is revealed as per FOV rules
  • Can activate side-view map to see a vertical cross section of a unit's LOS
  • Implemented randomized unit stats, and TU costs of moving/changing facing 
  • Moving units will correctly climb/descend sloped terrain/stairs (fortunately they no longer leap off buildings unless capable of flying) and open doors
  • The entire game state can be saved/loaded at any time

Next up: Firing your gun at stuff. This could take a while longer, because I'll be trying out some new methods I haven't used before...

Screenshots will come soon, after I make the tiny test level a bit prettier--right now it's pretty random...
    7 comments more...


    • Joshua Day

      Your progress on this is heartening. I'm working on something similar, although my focus has been on an ascii geoscape so far, and I'm not planning on emulating X-COM as closely as you are. If you need any tips on doing a good geoscape (or source, one version in C and one in Lua, since mine is open), or pointers to useful data, I'll share what I've got. Here it is, running under gnome terminal: http://www.youtube.com/watch?v=1cYAIt_L__4

      Combat, on the other hand, is auto-paused real-time with command queues for your agents. I'm not as certain that it will work, as what you've got going. Good luck!

    • Kyzrati

      Thanks, I must say your geoscape looks AWESOME! I knew there were more devs out there who've tried ASCII X-COMs, but you're the first I've seen with work in progress. You don't have a site anywhere with info? I'm really curious now.

      I'm only starting with a mostly-faithful remake, as a starting point and for the purists. It's very extensible, though, and will quickly evolve into something way beyond the original.

      And thanks for the offer of help. Likewise, if you see anything in X@COM that you want to ask about, I'd be happy to share details, or even some source. I'm not against sharing code, I just don't want my entire source out there.

    • Kyzrati

      I found the EDF site (didn't have a chance the other day since I was responding to your comment by phone). Looks like the project's been in existence for quite some time, but no public news or updates in ages. The old FAQ also says there's no real-time combat, so I guess you're working on your own version now?

    • Joshua Day

      I had practically forgotten about EDF. It was, what, ten years ago? I was young and thought collaboration was more valuable than it proved to be; rather than just do what I already knew how to do, I took advice and ended up with nothing to show for it but a few simple builds and some minor contributions to UFO2000.

      So no, there's no site until the game is structurally complete. I do hover around QuakeNet #rgrd (the irc companion to the newsgroup), but I've got a heavy month of work and I'm not there much right now. Any time I'm spending at a computer outside of work, I'm spending on making interception fun.

      Your side-view slices for targeting strike me as a fantastic idea in an ascii game.

    • Kyzrati

      I've never really done anything collaboratively myself--it definitely has its advantages, but it's also much more likely to die even if you yourself have the drive to go on. So I just stick to one-man development.

      The first thing I did before starting was brainstorm how to make a 3D world viable in ASCII, and one of the main complaints/issues to solve seems to be that you can't effectively tell when you're looking over/under something. Viewing from the side is an easy enough solution (coding it's definitely a no-brainer).

      Right now it's pretty simple, but I'd like to eventually expand on it. Beyond the current LOF checking, I will at least add an interface which allows you to view crosssections of the map along an arbitrary x- or y-axis, just because it's easy and might be a cool and appropriate tool for the type of interface I have in mind. It'll be slightly more work to actually animate projectiles and effects from the side, and is likely to be more confusing to watch in some cases, but I may try that, too.

      I originally envisioned viewing explosions and collapsing buildings from the side as well, but that is definitely not a priority at the moment. Aiming for something that just works, first!

    • Joshua Day

      With full color at your disposal (in your own emulated terminal), you won't find it terribly hard to do a proper 3D view if you care to, to show off explosions. Nor would an isometric ascii display be an uncomfortable exertion. But the most practical thing, all things considered, is your current line-of-sight slice controlled by the mouse, which is rather more freeform than limiting it to the axes. I've considered side-views in the past, but I always wrote them off as impractical for various reasons (none of them to do with implementation), so I suppose what I'm lauding here is your decision to go ahead and write it.

      If you're planning to add sound, I recommend strongly that you add it soon. DoomRL's chief innovation was to add sound to a roguelike, and it worked brilliantly. Sound was much more important to X-COM's atmosphere than its graphics were. With sound in place, it's likely that you will very nearly match the actual experience of playing X-COM.

    • Kyzrati

      You are definitely right, and sound is going to be a huge part of the game. It's up towards the top of the TODO list, as soon as I've got some more mechanics done. (It won't be hard or time consuming, since I'll just rip the SDL sound system from one of my other games--what I'll need to do is start gathering the necessary assets.) I can't wait to hear the sound effects in there, myself; It's going to make the game so much fun. I've already got placeholders in the code where sound goes, things like bullets shattering windows as they pass through them.

      True that actual 3D or isometric would be doable, but I don't believe I'll be going there. Then I'd have to do scrolling, and one of my goals here is to make the game as visually compact as possible. I want to have maps that play fast where you can see the entire field at once. Another advantage to seeing everything at once is that it somewhat makes up for the lack of 3D depth.

      I was thinking of the axes-limited cross-section as a supplementary view to the current cursor-base LOF mode, not to replace it. It might be useful for showing explosions from the side with a slice through the origin (something that may look strange if it was done using a sloped line through the origin). I'll try out more of the possibilities later. Right now I'm still finishing up the particle engine.

    Post a Comment