Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - tuturto

Pages: [1]
1
Programming / working with AI library of sorts
« on: March 22, 2016, 08:37:06 AM »
I have been tinkering with a rewrite of my messy AI routines and got the first one done. It's super simple, just a rat that selects a room, travels there and then patrols along the walls. If enemy comes close, it switches to combat mode and starts fighting. After enemy either dies or runs away, the rat returns patrolling the room. It's a rough draft still, for example any creature with different name is considered as an enemy (so player can see rats and beetles fighting with each other). Current code is at: https://github.com/tuturto/pyherc/blob/master/src/herculeum/ai/rat.hy and https://github.com/tuturto/pyherc/blob/master/src/herculeum/ai/firebeetle.hy

Most likely it doesn't make sense to publish this as a real standalone library, but I'm still trying to have it be mostly nicely contained within the codebase of the game. There are actual finite state machines for AIs that are generally per monster and then underlying set of functions that implement specific behaviour. Combining the functions and a bit of logic in state machines is how I envision the library working in the end.

A bit further down the road I would like to add more complex things, like scavenging level for gear and selecting what items to use or deciding when it makes sense to take a short cut over a trap instead of going around. Maybe even throw in a bit of fuzzy logic, so I can raise level of abstraction from solid numbers to ranges of things.

But this is where I'm drawing a blank. What else should there be that would create interesting creatures and situations? I like having monsters that player can lure to fight with each other for example. And maybe a group of creatures that move together as a loose band. But what else would be interesting? What are memorable creatures from other creatures, mainly because how they functioned?

2
Design / map with complex numbers
« on: November 24, 2015, 11:02:08 AM »
I was playing with ideas and started thinking of having a world where coordinates wouldn't be integers "(x, y)", but complex numbers "(x+ai, y+bi)" . Technically this should be pretty easy thing to do, but design-wise I'm in a loss. What would that kind of world even look like and how would moving and such handled? Easiest probably would be if actions would mostly be on the real part and in some special circumstances imaginary component would come into play. There could be creatures that can move in imaginary part and sometimes come through to real world. Or there could be warp rifts here and there that would allow moving in imaginary direction. With correct tools or potions, player could have access to imaginary world, or could at least sense what is happening near him in that direction. Or maybe that imaginary space could represent alternate worlds, that would be close to real one, but different in some aspect. The further you are from the real world, the more different the world would be.

But like I said, this is currently just an idea and a very vague one even. Feel free to throw me even the craziest ideas regarding to this, maybe it will push me over to actually take this in use.

3
Programming / LambdaHack and new content
« on: May 19, 2015, 05:21:19 AM »
I have been poking around with LambdaHack engine again and got couple things I need to understand better. Decided to ask here instead of mailing the author directly so other will benefit from the answers too.

How do items work? Especially are aspects of all items that are being carried active or only those that are currently equipped?

What are EqpSlots used for? For example, ring of Rush has
Code: [Select]
EqpSlot EqpSlotAddSpeed "".

How does rarities work? ItemKind has field rarity that has array of tupples. First value is dungeon level and the second one is rarity. But what does rarity 1 or rarity 10 signify?

4
Traditional Roguelikes (Turn Based) / Space Privateers
« on: August 08, 2014, 09:40:19 AM »
Title: Space Privateers
Summary: Simple Roguelike set in space
Version: 0.0.1.0
Released: 2014-08-08
Site: https://hackage.haskell.org/package/SpacePrivateers-0.1.0.0
Direct download for linux binaries (32-bit, shared libs):
* https://bintray.com/tuturto/SpacePrivateers/space-privateers/0.1.0/view
* or install with cabal

Video of gameplay: https://www.youtube.com/watch?v=PzyTw1g65Lg

5
Programming / LambdaHack
« on: July 16, 2014, 06:48:18 AM »
I have been learning some Haskell recently and wanted to start writing something more complicated. There's engine called LambdaHack (https://github.com/LambdaHack/LambdaHack) that is used at least in Allure of the Stars (https://github.com/AllureOfTheStars/Allure). So, there are at least two examples how to use the engine, but is there a tutorial or something somewhere? Or other games written with the same engine?

6
I tried searching the forum for topic about logic programming and not many popped up. Numeron mentioned a blog about his game that does use it, but the topic is old and the link was dead. Has there been others who has done anything roguelike related with logic programming?

miniKanren (http://minikanren.org/) is an embedded DSL for logic programming. I'm using Adderall (https://pypi.python.org/pypi/adderall/0.1.1), which is pretty new implementation. So far I haven't done anything that special, mainly just been trying to learn the new thing. I wrote about it at: http://engineersjourney.wordpress.com/2014/06/18/manipulating-levels-in-adderall/

I'm thinking that level generation and some AI routines could benefit from logic programming. Maybe even things like when a trap will trigger, if the conditions are sufficiently complex. Would there be other areas where this thing would be well suited?

7
So, I finally managed to code something new that can be shown:



It's a stationary fungus, that slowly multiplies if left alone. Eventually a large mass of them will merge into a stronger one that just sits there. Both of them will attack anything that comes close to them and is not related (so regular and great fungi will actually fight each other, thus limiting the multiplication rate). Unlike any other creature so far, these can attack to diagonal directions too. There's also a hard cap on their numbers, to prevent them taking over the whole level.

It's very basic monster currently and I'm thinking that I should try adding something little bit extra there to make them more interesting. Haven't figured out yet, what that extra would be. I'd like to hear any ideas you might come up with.

8
Off-topic (Locked) / Hello world open
« on: April 16, 2014, 06:51:14 AM »
There's currently AI racing competition going on at: https://helloworldopen.com/ (still 6 days left to sign up). Is anyone else here participating it? I'm participating as a team #19 (https://helloworldopen.com/team/19). There has been some hiccups with the infrastructure, but otherwise the start has been smooth. I'm writing my bot with lisp (Hy to be specific) as an exercise.

9
Programming / Error handling
« on: May 27, 2013, 09:31:40 AM »
I was playing around with error handling and started wondering how others are doing it. So far I have let the user interface to deal with them (Qt catches pretty much everything, dumps them into console and tries to continue executing the program), but it's somewhat ugly solution.

I wrote a decorator, that can handle exceptions in specific cases (Character class in this case). It wraps a function and catches all exceptions. When an exception occurs, internal clock of the character is moved forward and message is displayed "World phases out around you for a second" or "{0} is unsure about existence of world", where {0} is name of the character who is causing the error. The goal is that if there is a single character who is in broken state, the game can still continue running. Code is at https://github.com/tuturto/pyherc/blob/master/src/pyherc/data/character.py

But this only works when exception is originated from character or something called by it. Granted, most of the logic starts there I guess, but I'm still wondering if there's other options too.

10
Programming / Lore
« on: November 25, 2012, 10:16:35 AM »
I have been coding the end boss for Herculeum and the level for him to reside. This got me wondering, how players like the lore being presented to them. Should I try and hide it in the game, in form of scrolls and tomes that the player can read to get hints about what's coming? Or should I just state the lore in the manual at appropriate section and not try to hide it at all?

What is your preference and how did you do it in your own game?

11
Programming / clean code
« on: August 09, 2012, 04:57:00 AM »
I have been poking around with roguelike development for a bit and started wondering if anyone would know really good examples of cleanly written games. I'm mainly looking for a big picture, not so much single algorithms. You know, how to make system for magical effects that isn't completely hard coded or how to add new actions into game easily.

It would be nice if the game had some other documentation than source code too, but that's not mandatory.

Any suggestions or ideas where to start?

12
Programming / Debugging and other helpful things
« on: May 09, 2012, 11:28:26 AM »
What kind of systems/things are you using for helping in development? Things like profilers, debuggers, debuggin consoles within the game and so on? How do you like them and is there something that you feel could be done better?

Personally, I have two things that I use a lot. One is extensive debug log that is written if the game is started with specific command line switch. It uses aspects to log most of the method calls, their parameters and return values. In case of exception, exception is logged too. I like it because there usually is enough information to see how the program is running and where the problem might be. I also don't have to write separate calls to logging system, but it's handled more or less behind the scenes. Drawback is that the log can get big quite fast and finding information in it can be slow.

Second tool that I'm using is a debug server. There's small webserver running inside of the game and I can use it to inspect state of the game. Currently I can only view player character and map, but later I'm going to implement more functionality in it. Maybe things like spawning specific items or monsters to help in testing.

Very rarely I resort to debugging code. I think I have done that only in handful of cases, where I couldn't otherwise solve the problem. Profiling I haven't done much either, only to check occasionally that there isn't obvious bottlenecks where there shouldn't be any.

13
Traditional Roguelikes (Turn Based) / Herculeum - 0.13
« on: February 19, 2012, 09:38:24 AM »
Title: Herculeum
Summary: Simple Rogue clone written in Python.
Version: 0.1 (First release)
Released: 2012-02-19
Site: https://github.com/tuturto/pyherc
Direct download: https://github.com/downloads/tuturto/pyherc/pyherc-0.1.zip

Very, very rough version of my own roguelike. Nothing much to do, but walk around and bumb into rats and beetles. But it's a start :)

Game crashes if you try to escape from the dungeon, so completing it is not currently possible.

Pages: [1]