Welcome to GameHourz.com!
FAQFAQ      ProfileProfile    Private MessagesPrivate Messages   Log inLog in

new to the group - new roguelike

 
   Game Forums (Home) -> Roguelike -> Development RSS
Next:  Auth Issues  
Author Message
bartek_bojarowski

External


Since: Apr 17, 2006
Posts: 1



(Msg. 1) Posted: Mon Apr 17, 2006 11:28 pm
Post subject: new to the group - new roguelike
Archived from groups: rec>games>roguelike>development (more info?)

Hello,
It's my first post here, so I will introduce myself. My name is Bartek
Bojarowski and I am a student from Poland (Wroclaw, if anyone was
bothered). In my spare time I am working on an OO roguelike in java and
I would like to share my ideas about my game. The reason for doing so
is, of course, some feedback, be it positive or negative.
The whole game takes part in - one could say - overworld, i.e. you walk
through forest, deserts, plains, etc. then explore caverns or towns.
Therefore, I needed some nice way to show the map in a continous
manner, I did this by creating a Level consisting of 90x90 tiles (in
fact, these are 3x3 sublevels of 30x30 tiles), so when you walk deep
enough the map, the map recenters on you, so in fact, you cannot see
where one part of the map ends and other begins (omiting lags related
with loading further data). Each forest, swamp, etc. is generated in a
fully random manner, i.e. there is a certain probability for each tile
to be a tree, stone, mud and so it goes. However, the overmap is
generated in a 'fractal way'(don't know how to say it;p), so, all in
all, there is no such mix that once you travel one level of desert then
one level of forest then one level of swamp, and then one level of
desert. Also, when a tile is generated, the Level ('the' level, because
it is "static" so there is only one), as he is responsible for setting
tiles, moves a clone of this tile coordinates by (+/-rnd(0,9),
+/-rnd(0,9)) and asks a levelgenerator which would be responsible for
generation of this 'moved' tile to generate a tile(so there is no
clearly visible border when one moves from a forest to a desert).
Possibly I will do some fractal stuff with this later on, but for the
time being it's ok.

Everything which takes place in the game event driven. There is an
events queue, (which is a hashmap) and turn by turn it gets a linked
list of all events that are to happen during this turn and executes
them. Each monster generates whatToDoEvent which, when executed,
generates itself once again (after some time, depending on monster
speed) and asks monster Brain what to do? The brain (if it is a human
controlled monster) waits for the input from UI and translates into an
action - which I will describe later on. If the monster is controlled
by computer it asks it's brain to choose from potential actions (like
chase someone*, get some item*, attack*) the one which is most
important for the time being and executes the action - the action, when
executed, generates proper event which will be executed depending on
monster reaction time (this value is in fact very insignificant,
however, I added it, because it does not increase complexity and with
it without any problems one can easily add quite realistic state of
being drunk, by increasing the reaction time, or some weird monsters)-
like moveEntityEvent, or MonsterAttackEvent. This is what I have done
for now (however there is nothing interesting yet, as there are two
types of monsters and one type of item, and three potential actions for
monsters to do). My closest plans are connected with behaviour of
monsters, not to say AI, I want to implement some groupthinking - each
monster group will have a leader - the one with highest Cha and he will
tell monsters which actions to do. Next plan is some usage of items so
you can do something more than just pick them up. Next I want most of
events to generate signals, these will be a way by which a monster can
get a new potential action to do, if for example a goblin sees that a
previously neutral orc or sth attacks his friend - a signal - his brain
will get a new potential action like attack the orc, or when sb hears a
blast somewhere close, depending on his characteristics(curiosity,
courage or sth) he will get the potential action to check what was that
or escape from it, etc. So all monsters will be controlled by some high
level commands like 'go for the player', 'get the jewel'. I have some
further plans, but I will write about these when they will be in
realistic proximity to implement. Everything what I described is of
course some general outline of all the stuff and provided examples
might not be best. I am aware that simplicity is the key, however this
model, potentially confusing, seems very natural for me, it is easy to
add different ideas and, all in all, it works. If you are interested in
the code or itself or the game itself, You must wait until it is at
least a bit interesting, I don't want to show a roguelike skeleton
where You walk around encountering monsters moving in random
directions, although many people do so.

Tell me what You think, if You are aware of some common mistakes while
doing things which I described tell me, so I can omit them. This is not
my first roguelike project(I did one, frankly speaking quite big, in
qBasic eight years ago, however although I have the code, I've lost all
the data files, so it's not possible to play it), so I am aware of the
most common mistakes related to roguelike programming, what I would lke
most, are more specific comments.

*for example to describe the ChaseAction class -> it consists of an
actor (the monster who is chasing), a path(a map of coordinates in
which when you ask for the nest step you give your current position as
the key) and a target(another monster). When this object is created, it
generates a path(actor,target). This action upon execution checks if
next step is possible(if can be not, if for example another monster got
in actor's way) if it is not, it creates another path to the target.
Then the class creates a new MoveEntityEvent, with actor and
path.nextStep(currentCoord) as arguments. And there is a chance to
reevaluate the path, depending on the distance(actor, target), the
smaller the distance the greater the chance to do so. This is only a
temporary solution, as it makes all monsters see their target whether
they should see it or not.

 >> Stay informed about: new to the group - new roguelike 
Back to top
Login to vote
konijn_

External


Since: Jul 12, 2005
Posts: 214



(Msg. 2) Posted: Tue Apr 18, 2006 8:26 am
Post subject: Re: new to the group - new roguelike [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

<Mega-Snip>,

welcome to the neighbourhood, I hope you are productive in your code
writing as your post writing Wink

T.

 >> Stay informed about: new to the group - new roguelike 
Back to top
Login to vote
Gamer_2k4

External


Since: Nov 03, 2005
Posts: 312



(Msg. 3) Posted: Tue Apr 18, 2006 2:16 pm
Post subject: Re: new to the group - new roguelike [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

Welcome to r.g.r.d. Does your game have a website? If not, I would
suggest you design one; maybe have a progress report, timeline,
downloads, story, etc. Also, you could upload your files every so
often so that you don't lose data files or can revert to an older
version if you don't like changes you've made. I like how your
overworld works. In fact, I'm using a similar structure in a future
game of mine. I also like the potential AI complexity. Overall, it
sounds good, although of course it's easier to have big ideas than to
implement them Wink. Good luck with your game.

Gamer_2k4
--
So then I thought, "Ha! Maybe there's a bug in the compiler itself!"
 >> Stay informed about: new to the group - new roguelike 
Back to top
Login to vote
Slash

External


Since: Dec 14, 2005
Posts: 119



(Msg. 4) Posted: Tue Apr 18, 2006 2:54 pm
Post subject: Re: new to the group - new roguelike [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

bartek_bojarowski DeleteThis @yahoo.co.uk wrote:
> Hello,

Welcome to the barrel! Wink

> It's my first post here, so I will introduce myself. My name is Bartek
> Bojarowski and I am a student from Poland (Wroclaw, if anyone was
> bothered). In my spare time I am working on an OO roguelike in java and
> I would like to share my ideas about my game. The reason for doing so
> is, of course, some feedback, be it positive or negative.

The world idea seems nice.. pretty *jadish* as my big project... the
generation looks a bit weird and too random for me, but only with some
testing and a look at the results you should see if it works..

The event model seems a bit overkill for me, I think actions must be
executed immediately by the being once he has decided to do it, else
you may end up with bizarre stuff like a dead monster executing his
last action...

As for the action model, it looks nice (I am using a similar approach)

>
> Tell me what You think, if You are aware of some common mistakes while
> doing things which I described tell me, so I can omit them. This is not
> my first roguelike project(I did one, frankly speaking quite big, in
> qBasic eight years ago, however although I have the code, I've lost all
> the data files, so it's not possible to play it), so I am aware of the
> most common mistakes related to roguelike programming, what I would lke
> most, are more specific comments.

Well, I would recommend to have only one class of Action, with all the
parameters an Action may need, instead of different specialized ones
(DirectionalAction, ItemAction, etc) Also... a 7DRL would be nice to
start and prevent your death by vapourRL inhalation Wink



--
Slash
 >> Stay informed about: new to the group - new roguelike 
Back to top
Login to vote
Bartek Bojarowski

External


Since: Apr 18, 2006
Posts: 3



(Msg. 5) Posted: Tue Apr 18, 2006 11:34 pm
Post subject: Re: new to the group - new roguelike [Login to view extended thread Info.]
Archived from groups: per prev. post (more info?)

All events, just before execution check whether "Event.isViable()" most
of the events ask actor.doExist() here, so dead monsters won't move,
attack etc. All the stuff that I add is most often responsible fot
itself, so adding a new class does not make me change any other
classes, I realize that this would entail going for unmaintainable
code. As I wrote most of the ideas that I described is already
implemented, however in a very raw form (two types of monster, three
types of items, etc) - it works and maps look nice for me, although
differently than in other roguelikes I know (which is in plus for me).
7drl is not possible as I started writing the game few days ago, using
parts of code from previous years. In fact, I started writing the game
three days ago, however I won't go for 7drl, as I do all the stuff for
myself as a target market and I have no need to rush(still if I manage
to do sth interesting, even a bit, within 7 days I will present it as a
7drl:)), but I get Your point, that this would help preventing from
inhalation. We'll see, I won't make any promises that I will do a big
game within x days or months.

Filip,
Dynamic changes are not a problem, for instance if a monster gains
strength for 340 turns, a proper event is generated that will be
executed in turn 340 from now, this event will decrease monster
strength. The only problem I see now are some types of dispel effects
that destroy an effect which temporarily affects sb stats - as I don't
want to add a collection of effects to each monster, so it is known
which were dispelled (so when the returnToTrueValueOfStrength event
executes it won't decrease monster stats further on) - although this
can be the only solution. Any ideas are welcome.
The eventqueue itself is very simple and does not include any logic.
All logic is in events, which check whether they are viable, execute
themselves and do whatever you ask them to.
I try not to overcomplicate the game, as, to be sincere, I have written
about three or four, semi roguelikes which died because of
overcomplication. I am very content, because having implemented
eventsqueue, actions it works just as it is expected to do and now I am
at the stage where adding further stuff is pleasant not boring:) and I
hope I will manage to keep myself at it so it will grow a bit bigger.
 >> Stay informed about: new to the group - new roguelike 
Back to top
Login to vote
Display posts from previous:   
Related Topics:
Building your first Roguelike - Hi all. I've played RLs for a while now and am learning Java for fun/work so I thought that one way I could extend my learning was by building a roguelike. However, I have no idea where to start. I am a very beginning programmer. I know a little bit....

Seven Day Roguelike: The Curse (completed) - I've pretty much finished this project, began on Feb. 23, 2006. I guess that makes it a 4-5 day Roguelike ;-) It's called "The Curse" for a reason that will become most fully apparent after reading the "victory" message at the end. ...

7DRL: Invader - Well, I've talked myself into attempting a game for the 7DRL challenge. :-) Invader will be a sci-fi RL where the player is the planet's only hope of stopping a dread alien invasion ship. The character's base of operations will be their docked ship. ....

7DRL: TBA! :P - I'm going to throw my hat into the 7drl arena by taking on a project I've wanted to do for ages. I think it will get me past the mental block of actually getting started. My concept is based around the remains of a post apocalyptic world with gang..

7DRL : Commander - It is 13.40 in my time zone (GMT +100). Time to start my 7DRL project: Commander. I will do it in Free Pascal. Plans are quite big so there is real danger of failure. Good luck to all participants of 7DRL contest. -- Michal ''Ancient'' Bielinski
   Game Forums (Home) -> Roguelike -> Development All times are: Ekaterinburg, Islamabad, Karachi, Tashkent (change)
Page 1 of 1

 
You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum



[ Contact us | Terms of Service/Privacy Policy ]