This forum is in permanent archive mode. Our new active community can be found here.

Geeknights Coding Club: Project D.O.R.F.

13468913

Comments

  • I think multiple people working on a single fortress couldruin friendships.
    Hey man, we're not even working on the damn Fortress yet. Just trying to get semi-permanent shelter so we can stop sleeping in wagons!
  • I thought I would upload a picture of what we have so far.
    image
  • If we're willing to keep it simple, sprite art is a hell of a lot easier than modeled 3D art. That starts to break down as soon as you want complicated/detailed animations, or to view things from more than a couple of fixed angles.

    Sample number 3 with fixed cardinal-direction camera rotations is about as complicated as I would want to use a 2D engine for. For that or #2, we could just as easily use a 3D engine and get some useful structures on the side (organized scenegraph, hardware acceleration, ability to use shaders, etc). There are plenty of 3D engines that are not genre-specific, and I don't think we need a very advanced one for this.

    Another option is sprite characters and objects overlaid on 3D large-scale structures (walls and the landscape). This allows you to get some of the 3D camera flexibility.
  • edited May 2010
    Also, I think we should do multiplayer at some point. If we made it work, we would kill. We don't have to do it right away, but we should code with future multiplayer in mind.
    Well, An easy way to to it initially would be in the vein of Nethack's HEARSE system, for sharing bones files.

    Edit - Fixed quote.
    Post edited by Churba on
  • edited May 2010
    I have to agree on the importance of collaborative fortress playing. Although it would be very difficult, it would make for serious potential. Also, to reiterate Scott, a good interface is absolutely crucial in realising this potential.

    As for the graphics engine, one thing I'd like to note is that if we do start to work on alternatives, we should keep all of them around, and perhaps even offer the opportunity to switch between them in-game, or even use combined approaches.

    @Churba:
    I think you quoted the wrong post there.
    Post edited by lackofcheese on
  • What I would like to see: A two player Dorf where two players play on the same map. They don't build the same fortress, but each have their own fortress a few miles apart. For a while they won't compete, but when new dorfs turn up, the one with the nicer fortress might attract them. There wouldn't be open warfare between the fortresses, just an ongoing sturggle for prestige. And survival.
  • edited May 2010
    Another option is sprite characters and objects overlaid on 3D large-scale structures (walls and the landscape). This allows you to get some of the 3D camera flexibility.
    image
    That might work, but could get complicated when dealing with different levels added to the equation. A 2D square grid is probably the easiest to understand when scanning around to see what's going on.

    Multiplayer might have to depend on different rules than single player, given how easy it is already to mess up a fortress with just one person in charge. Add mis-communication into the mix and you've got a recipe for dwarf disaster.

    A multilayer zelda/nethack style adventurers mode would rock though. You wander between people's fortresses, raiding abandoned ones for items and killing whatever's infested the place.
    Post edited by Omnutia on
  • I really want to get into this project, but I'm busy at the moment. Hopefully, when I'm not so busy any more, the project isn't so complicated I can't understand what is going on. I hope it's possible to look back through the history of the changes to see it grow bit by bit.
  • Yep, you can definitely review the project history; that's what GitHub is all about - have a look at the diagram here.
    Things are a little messy, because of some duplication of commits we've had, but it works quite well.
  • Okay, I took a look through the code, and would like to experiment a bit. However, I'm really struggling to install pygraph on my macbook. I'm trying really hard, but I just can't seem to work out all the steps it takes to get it on there.
  • edited May 2010
    Okay, I took a look through the code, and would like to experiment a bit. However, I'm really struggling to install pygraph on my macbook. I'm trying really hard, but I just can't seem to work out all the steps it takes to get it on there.
    Your Mac should come with python already installed. Just install distribute like so.

    $ curl -O http://python-distribute.org/distribute_setup.py
    $ sudo python distribute_setup.py

    Then do this.
    $ sudo easy_install python-graph-core
    If you want to be fancy, you can try to do the virtualenv stuff that's in my screencasts.

    If it doesn't work, that's what you get for using a Mac. You will begin to see some of the reasons I despise OSX. Once you actually try to do actual development, their evil appears. Yeah, OSX is UNIX, but it has so many non-standard things that it's effectively all its own platform. Everything is crooked slightly differently from all other *NIXes, and you always have to jump through hoops to do things that will "just work" on every Linux or BSD distro.

    If you can't make it go, try installing Ubuntu in VirtualBox. I know that will work.
    Post edited by Apreche on
  • Cheers. All I needed in the end was knowing it was called python-graph-core. Why is that not explained anywhere?
  • edited May 2010
    Cheers. All I needed in the end was knowing it was called python-graph-core. Why is that not explained anywhere?
    It's explained right here on the front page of the python-graph web site. http://code.google.com/p/python-graph/ under the "Installing" section.
    Post edited by Apreche on
  • I misread the name as pygraph, mixing it up with pygame. No wonder I couldn't find anything about it.
  • Did someone make it so you don't have to generate new terrain for each time it runs? This is getting tedious already!
  • Did someone make it so you don't have to generate new terrain for each time it runs? This is getting tedious already!
    Yes, welcome to what things look like before they are done!
  • I just spent four hours getting the hang of the code, and then making a mover that seeks high ground. The code is as ugly as hell, but I certainly learned and relearned a lot about python!
  • Cool, Luke. Show us your code!
  • Cool, Luke. Show us your code!
    Not a chance! Now I've got it functioning, I really need to tidy it up. Actually, what I'm going to do now is use the same idea to add something that might be useful. You can see that code, once I work out how to use git hub properly. Scott's blog post should come in handy for that, I'm sure.
  • python easy_install.py python-graph-core

    [...stack dump...]

    File "setup.py", line 8
    except ImportError as ie:
    ^

    SyntaxError: invalid syntax
    Possible version incompatibility?
  • Yes. That's the newer style, used in Python 2.6 (and 3.0).
    Get Python 2.6
  • What is our stance on encapsulation? I know python doesn't make you do it, but it might be a good idea?
  • I'm indifferent when it comes to getters and setters. If there's extra stuff that needs to be done other than just changing the value of a variable, then a separate function is worthwhile.
  • I want to call the function to update the terrain surface from within a mover. How do I do that?
  • edited May 2010
    So your movers modify the terrain? Interesting.

    To do what you want, you would have to pass some kind of reference in when creating your mover through which you can access the terrain updating method. Considering the update_terrain_surf method is a member of the Game, the most logical approach is to pass in a reference to the main Game object when creating one of your Movers.
    Post edited by lackofcheese on
  • I want to call the function to update the terrain surface from within a mover. How do I do that?
    You don't. Tell us what you are really trying to do, more generally speaking.
  • edited May 2010
    To do what you want, you would have to pass some kind of reference in when creating your mover through which you can access the terrain updating method. Considering the update_terrain_surf method is a member of the Game, the most logical approach is probably to pass in a reference to the Game object when creating one of your Movers.
    I wouldn't give a mover a reference to the game object. I would at most give him a reference to his current location.
    Post edited by Apreche on
  • edited May 2010
    It's definitely not a clean way of doing it. We should probably have the grid and the terrain be more strongly tied to one another, so that modifying the grid will cause the terrain to be updated properly. The terrain surface should probably be an aspect of the grid rather than the game in the first place.

    @Luke
    If you explain what you're trying to do, I can refactor the code so you can do it without dodgy workarounds like what I mentioned before.
    Post edited by lackofcheese on
  • I've made a river. If the water reaches a part of the map and settles for a while, it deposits silt, and raises the height of the terrain. But this isn't updated on the display.
  • edited May 2010
    Okay, so the way I figure it, the terrain surface should offer a method for updating a single square rather than needing to update the entire surface. To make things as clean as possible, we should move the terrain surface related functions out of the main game. Where should they go? A new class?
    Post edited by lackofcheese on
Sign In or Register to comment.