Is it going to be open-source?
A tough question. Maybe, no promises. I found myself writing some utility functions and macros which I will opensource almost for sure. But I understand it's not what you're talking about.
javelinrl, I very much appreciate your post and the questions!
Maybe they weren't meant to be answered on forums, but I found it worthwhile to answer most of them, well, in some way. Somehow it gave me more motivation, so thank you for this.
one is that I agree with the comment made on the link itself (the maps do feel very similar to each other)
Well, I take it as an argument for giving the map generator some more freedom. Currently it's some kind of cellular automaton, and I can feed it with more diverse start states.
there are way way way way way too many cities. When you have too much of one thing, in a game, it's just like have nothing as well because you can find it everywhere in abundance - for example, what the point of having gold if you're getting a million gold for every quest you complete? In that sense, you would do well to remove all minor towns and keeping only 20% to 10% of what you have there.
I just think it makes the map feel more real and impressive. Daggerfall has an insane amount of space and villages, for one: they're mostly repetitive, but they become a respectable feature in themselves. But these villages and provinces have also a strategic meaning in my game, since each one of them can be conquered, occupied, hold as a land property etc.
The second approach I'd like to try here is to play devil's advocate and act like a possible investor if you were trying to sell me this (as a publisher or on kickstarter, whatever). (...)
I will be happy to help you test your releases and see this project grow but, honestly, if you don't immediately have a solid, good answer for even one of these questions, you should seriously sit back and consider if you're really ready to start something this big right now. As an investor or kickstarter backer, I wouldn't put a red cent on your project if I wasn't satisfied with every single answer, because you're currently a one-man team and you're proposing to accomplish something many professional teams would shudder to even consider, much less on a budget of exactly zero moneys to get it done from start to finish.
Well, personally I don't frame it as a potential Kickstarter or "investable" project just yet. For now, I don't expect monetary or even emotional investment from anybody. Just wanted to share a vision of a cool hobby thing I'm making. Not saying if I will finish it. It will be okay to me if I'll eventually come to a conclusion "okay, so I will implement the chosen 10-20% of this grandiose feature set, stop there, and call it an interesting gamedev experience". (Possible also release something
.) So I don't think the risks are high. I just find it so much easier to motivate myself to do moonshots. Constrained goals I have in the work and uni.
Questions like open source or commercial, single or multiplayer are undecided for now. It may be foolish from the biz or even realistic perspective. Okay, it is. But honestly I'm interested to see how the things (read: the simulation) will work in terms of hardware usage. I try to do aggresive math/serialization hacks to keep the memory usage low. I plan to use probabilistic statistical models (close to my current area of study) to reduce computation of offscreen things. I just find it an overall fascinating thing to do with my time.
So for now, I wouldn't concern myself with distribution. Hopefully I can use some questionnaire from you on this in future!
What sort of planning do you have in place to get this done? You cannot pull out something this big by just feeling your way through it.
Currently, I have a set of things I want to have in my next babystep "stage". It's mostly integrating global maps into the voxeljs and implementing NPC generation & placement. You should be able to walk through the world, see people (probably just markings "this person is generated there") and read their biographical descriptions.
I expect to go from milestone to milestone in this fashion, for a time being.
Why should I play your finished game and not other complex simulations like Ultima Regum, Dwarf Fortress or even strategy games like EU, Civilization...?
A short answer (and the only one I have for now) is because it is different. Most of these games focus on management. In my game you should have more of roleplaying one character and their immediate milieu, with the "big history" in the background, at least most of the time. Honestly I don't know if Ultima Ratio Regum offers similar level of world plasticity during gameplay that I want to have. I should install that Wine sometime, I guess (to run it on Linux).
You mention you want team work but you plan to use CLisp, not only a rarely used language, but also a rarely used paradigm. Help is hard to find even with C# or Java. How will you find voluntary help that is both skilled in CLisp, expert enough to write a complex program like yours and willing to do voluntary work?
Why are you dead-set on using CLisp and not other more modern, accessible languages, or some other more modern Lisp dialect like Clojure?
I'm not dead-set. It's just way easier to use CL to do exploratory programming where I'm able to build and
change/refactor things very quickly. Some time ago I attempted to make a much less ambitious game in C++, and amount of repetitive work to do very simple things felt just atrocious. I couldn't force myself to test different approaches to one thing, once it barely works.
I don't rule out rewriting parts of the code that become more stable in some less abstract language, when I already know how a given module is gonna work. (I consciously force myself to write clear, even verbose code to hopefully make it a bit easier if necessary.)
I do like that CL lets me actually mix paradigms and be functional/imperative depending on what seems more convenient for programming a given thing. It's very flexible and lets you really abstract things how you want. Although I did see much overengineered (to me) Common Lisp code in the community. I do admit that some constructs can be hard to port, but still, it should be possible to use the CL implementation as a "spec" what should the code do.
Besides, coding is not the only area one can use some help in. There is also artwork, design and content writing. I have some friends that can help me at least in the latter, which should be important even for the first "milestone".
In games, Lisp is usually known to be used for stateless software like MUD servers and so on. What tools and established examples are you going to use to make sure a very big CLisp project like this is maintainable once it grows very big and complex, as are your goals?
I don't have practical experience managing this
big and complex software projects, but I do program for years. Just don't have significant open source/public things to show. I can only say that I use asdf/Quicklisp (which are standard CL solutions for package and depedency management), with clear separation of modules for different things, follow my own rather strict style guide etc. Also, since it is apparently not that obvious in the roguelike community, I do use version control, extensively
What other successful game projects of yours can we look at to determine you're capable of handling something this big, complex and ambitious?
The short answer is no.
Do you think your game will have enough of a player-base to justify all the work put into it? Give me examples of existing similar games with many players.
Well, maybe games I listed as inspirations. After all I wanted these titles to ring some bells. But I don't see the size of player-base as the main "justifying" factor. And by this I mean, I'm willing to wait for it (the player-base) to build up slowly.
From each of the games you've listed as influences, describe one thing you like about them, how it relates to your project and how they'll work together.
Dwarf Fortress - focus on story behind each individual character, and stories emerging from the complex simulation.
Daggerfall - the faction/reputation system, and the sheer size of the explorable world.
Europa Universalis - putting a researched historical reality (as a historian, I think the term "historical reality" is fishy, but anyway...) into a set of gameplay rules.
Why is this game a roguelike? Being procedurally generated doesn't make it a roguelike. How many elements of the Berlin Interpretation will you have?
I would have those things:
- Random environment generation
- Resource management (the main resources being your personal wealth and social connections/popularity)
- Single player character
- Monsters are similar to players (well, "monsters" in a sense)
- Tactical challenge (I really would like to have to this one)
- Exploration and discovery
What is your core gameplay loop? Also, how would you define your game in a single sentence?
Well, this is clearly an important question, but it's hard to say. I'm aware of the possible trap of trying to simulate "everything" without focus. Will work on that.
What sort of testing (unit and systemic) approach are you going to use to make sure this huge thing doesn't break as you develop it further?
Currently I'm content with having tests for some algorithmic functions that are hard to test manually, but possible to test in general. (Some I consider very hard to test, like random generation as a whole - I could test that the output fits some probability distribution, but I don't think it's worthwhile.) Otherwise, I strive to write functions with clear purpose for each one of them, which are potentially testable. I will probably have to devote some time to write these unit tests at some point, but for now I don't want to sink my time into that. Many parts of this code I may nuke soon anyway.
What sort of communities and support can you go to for your technical problems? Does CLisp have a strong community on forums, Stack Overflow, etc?
You can get help for your problems with CL on IRC channel #Lisp in Freenode, where many quite knowledgeable people hang out. But most of the time, the language specification and the "Practical Common Lisp" book are sufficient for me.
What third-party libraries and game engines are you going to use to reduce your own work load in writing custom code?
I don't want to devote that much time to graphics, so I keep the "server" part clearly separated and would probably use some third-party engine for that (ie. the "client" side). Currently, it's voxeljs, which is pretty straightforward once you manage to fire it up.