MURK - a small preview
There isn't much to show. A coupe of screenshots bellow.
This is what I have been working on. It's coming slow because... well, I don't devote to it 100% of my free time. But it is something I always wanted to do. Even from when I didn't know how to do it.
MURK is going to be a console single-player game based on two game concepts; MUDs and Rogues. The emphasis is on MUDs, but you will see your progress in the world map as you explore. The game is turn based, except for combat which is going to be MUD based (aka real-time-sort-of).
I'm making an effort to make it as easy to port as possible. No fancy non-portable libraries. The game is using Boost, SQLite3 and PDCurses (a win32 port of ncurses). Everything I might know as being non-portable, is commented in with "NPORT: " followed by a possible description. I hope it will ease the work of anyone wishing to port it to other systems.
Some Game Features and Screenshots:
- Diablo II-like system of random object creation; prefix, suffix, uniques, sets, specials
- Diablo II-like system of monster spawning
- Areas reset when you leave them
- Weather and Calendar systems
- Intelligent rooms; wet if raining and outdoors, lights if night and habited indoors, ...
- Static mazes, shifting mazes, damaging rooms, dark rooms, magic rooms,...
- Many commands in the best MUD tradition. But easy to learn and easy to access
- Complex character creation and development. Don't ask me more...
- Never-ending world. Areas adapt to player level.
- Never ending experience. Player has unsigned long * char levels to acquire.
- Some areas can be totally randomly generated. Other areas can be completely hand-drawn.
- Why I think I can do all this is because I think I'm insane. But trust me, it's been a long, long, dream of mine. It will be done. And much, much, more.... It will take a long while too.
One showing the part of your screen where the room info is displayed and where you have your prompt. The other showing the yet-to-be-formatted result of the inventory command.
The numbers are the object unique ID. So it is possible to manipulate them by name, part of the name, or UID. "remove 5", "remove leather boots", or "remove boo" will all unequip the boots. Objects only show their IDs when in your inventory. A + sign means a container.
Thanks. The idea is of course, to have the source code available through Open Source once there is a basic game people can play with.
I understand the features list is anything but comprehensive or incisive. But I prefer be more...honest?... about it and only list what I have already, instead of what I plan to have. Saying "hundreds of monsters" when I currently only have 5 for testing purposes and being built on top of a incomplete class is really not my style.
True mario, but this is a project you are working on, and as you said is still a work in
progress. You do not have a team of proffesional artists, researchers and programmers
helping you. Like many people, you are doing this off your own back. In many ways you learn much more about how much C++ you know and can use to full effect when you create a text game.
I might make my first text game soon, I am nearly at the end of my course and have already started the pen and paper processs ( basic classes I need ).
One more thing. You say you are going to have enemys ( of course ) but are you planning on using class inheritence for this? I mean, will you use a base class and derive all the enemy objects from this base class? I only ask as I am pondering this for own game, trying to find out what the best method would be before i put code to IDE.
I think you will find inventory tracking a...more challenging subject when reach the point you will start considering it ;) Enemies was a no-brainer. But itwas for this particular project. Depending on how you want your enemies to behave, it may mean more complex relations.
My game beings are composed of two classes. CPlayer and CBeing. There's no relations between them. Any possible distinctions are implemented through composition, not inheritance. For instance, I have a CRace and CProfession classes for races and profession handling. An instance of these classes is made a private member of CPlayer and CBeing and exposed through interfaces.
Thanks mario, all the best with the project, I look forward to seeing the finished prduct on the games board
Did you write your code in C or C++?
Well, he has classes and he uses Boost ...
anyway... if it is, how did you get your writing different colours?
It's a library called pdcurses I assume, pretty neat stuff.
and how would i get this library?
What? No graphics? :D
BTW, nice going. Will it have the same gameplay as netHack? Can I hack my way from the save files?
hope your strings are in resource files... for easy translation