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.


Messages - MisterMoxxie

Pages: [1] 2
1
Design / Re: UI design (WIP)
« on: October 08, 2017, 04:02:07 PM »
Actually, I put together a mock up that is focused on layout and design, not the spacing of the characters being used.

And people wonder why this forum is falling into inactivity.  ::)

2
Design / Re: UI design (WIP)
« on: October 08, 2017, 03:54:33 PM »
If it is clarification you want, the text has poor readability because of its horizontal spacing. You are placing characters with proportions similar to a standard terminal cell in square cells. I suggest that you consider your square cells as consisting of two cells with terminal-like proportions, a left and a right half. When displaying normal text, you can then get the usual spacing you see in terminal displays. When you want to display characters on your map, you can instead place them centered in the square tiles. This can be accomplished even in a unix terminal by using unicode wide ascii characters, but obviously it can be done in SDL or other similar graphics packages. The point is that your square grid can coexist harmoniously with legible terminal-style text.

So it's the font. You don't like the font being used. ::)

These mockups were put together in REXPaint, using whatever the default font package there is. Sorry if you're not a fan of it. Again, you're the only person to mention this anywhere, so I have a difficult time believing that this would be an issue to literally anyone else.

3
Design / Re: UI design (WIP)
« on: October 08, 2017, 03:29:16 PM »
Well, Krice is an imbecile, nethack is bad, and dwarf fortress wouldn't get off the ground in today's environment. I give it to you straight. Not everyone can handle it.

I'm not necessarily disagreeing with nethack being "bad". My point was that both in that post, as well as parts of your earlier post here you fail to elaborate at all. You state your opinion, which is great if that's what somebody asked for, but here it isn't what I was asking for. I.E. your comment about the 'irritating' spacing of the text. Thats a fine opinion, but how about expanding on that? Why? What's 'irritating' about it? Considering the entire thing is technically text, maybe you could be a bit more specific about what exactly you're talking about?

And dwarf fortress did get off the ground in today's environment, so I don't know what you're talking about there.

4
Design / Re: UI design (WIP)
« on: October 08, 2017, 02:49:14 PM »
The UI mock-up you have looks very dense in what I would hope is useless information on a turn to turn basis. While it is traditional to list stats like str, dex, int on the HUD, it is almost never useful for that information to be displayed every turn of the game. The standard for including something in the HUD is "is this useful to the player on a turn to turn basis?"

See, here you almost got off on the right foot. I was actually discussing this point in a thread on reddit about my interface design. I was considering reducing it to only the combat stats being shown in this main hud, and offloading the character info (including XP) to a separate screen. At this point in your post I was still on board.

You have a lot of space devoted to a busy looking collection of bar gauges. At least one of these, "light," should definitely not be there. If the player is given vivid feedback like reduced FoV on the map when they're low on light, you don't need a separate gauge. If for some reason players need granular information, give them a turn number in the lamp description as in moria/angband -- that is not information that is useful on a turn-to-turn basis. I don't know what "stamina" is, but I've never seen a game that had a second kind of magic points like this where I thought it was a good mechanic. I suggest removing that. I would not give so much space or emphasis to "XP to next level" or whatever X is. That is just visual noise, better represented by a simple number somewhere, say a percentage. With two bars you're at a good place, but I think it would be more legible if they ran horizontally, even if there is a loss of resolution.
I disagree 100% on the 'light' bar not being necessary. Yes, you do have vivid feedback such as a reduction of FoV to tell you your oil has run out.. but that's once its run out. At that point you are spending at least one turn with a heavy disadvantage against the AI which - especially further into mid/end game - could  be plenty to throw an encounter in the other direction.

The spacing of the text is pretty irritating. I guess you're trying to center characters in a square grid. That makes sense for the map, but it is not good for display of normal text. I suggest that you think of a square as consisting of two cells that can each hold a monospace/terminal font character with the possibility of placing a single character centered instead. This can be done with unicode wide characters even in a standard terminal.
The... the spacing of the text.. as in.. have space between lines in order to distinguish differing sets of information? If you're talking about their being two spaces in between the character stat listings and their numbers.. I mean, yes, technically I could center all of that and it would look fine. But so far - and I expect this trend would continue - you are the one and only person in any of the discussions I've posted about this design to mention the "irritating" spacing of the text. And I'm still not even 100% sure what you mean.

I think you're on the right track providing hotkeys for items and monster information in the HUD. I would think about how to put more of that kind of information into the HUD legibly and reduce the space devoted to and overall amount of player information that does not change much from turn to turn.
You actually closed on a decent point, after all.

I almost took some of this advice to heart.. until I saw you calling Krice an imbecile below, and wondered what age group I'm working with here. That's when I decided to do a quick review of some of your posts.. you know, the kind where you say Dwarf Fortress couldn't get off the ground today, when it's community is just as active now as it's ever been.. or a post where you literally say nothing more than "Nethack is bad.". This is when I realized you're not exactly the type of person whose advice I'm looking for, or opinions merit much thought. Thanks for your time, though! I appreciate your.. effort, I guess?  ;)

5
Design / UI design (WIP)
« on: October 06, 2017, 11:30:38 PM »
Looking for tips and suggestions on my new UI design.. black space would be filled by the play field.

The status bars at the top are as follows - left to right; Health, Stamina, Light (see below*), Magic/Mana, Experience.

The 12 spaces below (4 of which are occupied) are for displaying status effects or conditions that are currently affecting the player. The shown status effects are as follows; Poision, Perception buff, Speed buff, Strength debuff. You would be able to mouse-over each 'icon' for more detail.

The stats listed below are player stats; Strength, Constitution, Intelligence, Perception, Stamina - and combat stats; Damage, Defense, and Speed. Neutral stats are in white, buff stats in green, and debuffed stats in red.

Below that are 3 hotkeys which the player is able to assign for using common items without going into the inventory or related screens. Hotkey 1 is assigned to a "Healing Potion", hotkey 2 is assigned to an "Oil Flask" and hotkey 3 is empty.

On the bottom portion is your 'current target' area. This would show the info you know (or do not know, as indicated by question marks) about the current target (or last target hit).It also features 4 status effect areas for possibly known status effects currently applied to that target.This would clear out and be empty space once that target is killed.

*Light is used in my game instead of a 'hunger' type mechanic. The player carries an oil lamp, which must stay filled. Letting this burn out reduces the FoV to only the tiles North, East, South and West of the player (not even diagonals), making navigation and combat very difficult, if not impossible.

Let me know what you think!

Message log at the top : https://i.imgur.com/1v7Ahl5.png
Message log at the bottom : https://i.imgur.com/GI3dUBx.png

Edit :: A poster on reddit requested a mockup with the message log on the bottom, so I added that link as well. Now I'm not sure which I like more.  ::) :P

6
Im sure it's possible. Technically speaking anything is possible in any language/IDE if you're willing to put in the work.

On a more realistic note, I know the Unreal engine uses a 'blueprint' sort of scripting that is essentially flowchart programming, and people have used that for some very complex behavior.

7
Programming / Re: Smart AI vs Expensive AI
« on: June 23, 2014, 10:28:29 PM »
Wow, I'm glad to have so many different people in this discussion! Thanks, everyone, for your input! Lots of things I hadn't considered before.  Taking all of your guys' ideas into suggestion, I think I'm going to shoot for a system that can produce 'complex' or 'smart' decisions, without actually being that complex under the hood.

I think using behaviour tags would be a great option, for a few reasons. The way that two or more tags would combine could be very interesting, and it also gives me a more direct way to communicate creature behaviours to the player. Maybe after seeing a creature with the 'greedy' tag take items off the ground once or twice, the player will have discovered that creature is greedy. Any time they [L]ook at that creature, or otherwise gather information, the 'Greedy' tag will now be displayed as well as other relevant information.

On the note of my original question, using FoV or LoS, I think I've got a much simpler solution that I'm going to test today on that, as well. By simply giving all creatures a 'sight' value, I can check that against the distance from monster x to object x. If it's 'out of sight' they obviously can't see it. In any case where a creature can't directly 'see' the object (ie it's behind a wall, etc), it could be assumed that the creature was previously aware of it being there. I may have to do something a bit different for viewing the player, to avoid the 'smarter' aggressive monsters from always ambushing them by knowing when they're coming, even when the player is out of view. 

8
Programming / Re: Smart AI vs Expensive AI
« on: June 23, 2014, 03:30:50 AM »
Hmm. Thanks for the ideas, guys! I like the idea of using partitions, I'll definitely look into that.

@Requerent, what do you mean by reflex agents?

I want my creatures to have tasks/goals, not just be randomly wandering around until they see something, and then try to kill/run from it. Creatures will have values that give them some sort of 'personality' (ie aggression, greed, focus). A creature with more greed than aggression, would rather spend its time looking for treasure in the dungeon and hoarding it (either on themselves, or in a room/container). However, if that creature sees the something wearing some fancy armor / jewlery or weilding an expensive-looking weapon, it may decide to attack anyway. Where a creature with a high aggression will basically attack anything that gets too close to it. The 'focus' value would help to determine how easily they are distracted from whatever task they are currently focusing on.

This is just one set of examples, I have a lot of interesting ideas floating around that I may or may not end up implementing. But, basically, my goal is to have an AI that can run my non-enemy as well as my enemy creatures, and one that could produce results that may even surprise myself.

Trailing off a bit, I've also had an idea of doing a side-project with libtcod, using AI and neural networking in a sandbox-esque environment. This would also allow me to test how certain creatures react to each other, or other unorthodox AI implementations I might have, such as AI that actually 'evolves' and 'learns' to an extent.

9
Programming / Smart AI vs Expensive AI
« on: June 22, 2014, 10:06:19 PM »
Hey, there, Temple goers!

One of my driving motivations in developing a rogue-like has always been doing an interesting AI system, one that could produce results that would surprise the players, as well as myself. I've got some pretty interesting ideas on how I want to set the system up, how I want my creatures to react to certain things, etc. However, I can't get around one major stumbling block.

In the design process for a smarter AI system, one obvious thing comes up. Creatures need to be able to 'see' what is around them, in order to react to what is there and choose what task they're going to focus on. I've been trying to wrap my brain around a way to do this, without just calling a ton of field of view algorithms every time a monster moves or takes a turn.

The only plausible idea I have come up with, so far, would be to allow creatures to see everything that is in the room they are in. Then, when populating the dungeon, each room would contain a list of all objects that are in that room. It seems like it would work pretty well. However, when the creatures are in hallways or otherwise in between rooms, I would still have to do some sort of FoV call.

What are your guys' ideas? By the way, I'm using Libtcod 1.5.1 and Python, but it's a pretty general question, really.
Thanks in advance!
 

10
No, that's how it was before and I had the same issues. That specific font layout and mapping is set up for use like this, where you don't map every character in the font. The only thing that did was give me a lot of empty ascii codes.

11
And what makes it even more strange is that on both of the 32x32 wall tiles (I put two in to see if that spot just wasn't rendering correctly) it reads the bottom-right corner but the other three show up white.

12
Ill definitely try that when I get home. Its just strange that it reads the 16x16 fine, but not the 32x32 of the same tile.

13
For some reason, it does not seem to be recognizing all of the 32x32 wall tile, only the bottom-right corner. You can see in my render test, the highlighted area is where I think the wall tiles should be. I actually placed a second 32x32 wall tile right next to the first, to see if it would render that way

14
Programming / Not mapping tiles correctly (Python/Libtcod 1.5.1)
« on: May 28, 2014, 04:11:20 AM »
Hello!

I'm working on mapping my custom 'tile' font for use in Libtcod 1.5.1 with Python. I've set up a rendering test to make sure that I've mapped the font correctly, and that I know the corresponding ID numbers for my 'tiles'. In libtcod, you can not specify seperate tile sizes. Since it's mapped with the font, all the characters have to be the same. However I want 32x32 tiles, and 16x16 font. The obvious workaround, was to just map 4 16x16 tiles for each 32x32, and render them that way.

It's been working well so far, save one strange issue. For some reason, it does not seem to be recognizing all of the 32x32 wall tile, only the bottom-right corner. You can see in my render test, the highlighted area is where I think the wall tiles should be. I actually placed a second 32x32 wall tile right next to the first, to see if it would render that way.

Here's my source, as well as links to my 'font' file, the render test, and the specific documentation for this process in LibTCOD. Thanks for taking the time to help me out!

Mapping the Font
Code: [Select]
#small tiles
libtcod.console_map_ascii_codes_to_font(256, 1, 0, 5)  #map all characters in 1st row
libtcod.console_map_ascii_codes_to_font(257, 3, 0, 6)
libtcod.console_map_ascii_codes_to_font(260, 2, 0, 7)  # ...
libtcod.console_map_ascii_codes_to_font(262, 1, 0, 8)
libtcod.console_map_ascii_codes_to_font(263, 1, 0, 9)  #map all characters in 5th row

#large tiles
libtcod.console_map_ascii_codes_to_font(264, 8, 0, 10)  #map all characters in 6th row
libtcod.console_map_ascii_codes_to_font(272, 8, 0, 11)
libtcod.console_map_ascii_codes_to_font(280, 6, 0, 12)
libtcod.console_map_ascii_codes_to_font(286, 6, 0, 13)
libtcod.console_map_ascii_codes_to_font(292, 4, 0, 14)
libtcod.console_map_ascii_codes_to_font(296, 4, 0, 15)  # ...
libtcod.console_map_ascii_codes_to_font(300, 2, 0, 16)
libtcod.console_map_ascii_codes_to_font(302, 2, 0, 17)
libtcod.console_map_ascii_codes_to_font(304, 2, 0, 18)
libtcod.console_map_ascii_codes_to_font(306, 2, 0, 19)  #map all characters in 15th row

Rendering Test
Code: [Select]
n = 160

for x in range (3, 67, 7):
    for y in xrange(2,46,2):
        libtcod.console_put_char_ex(window, x, y, n, libtcod.white, libtcod.black)
        libtcod.console_print(window, x+1, y, ':' + str(n))
        n = n + 1

Documentation : http://doryen.eptalys.net/data/libtcod/doc/1.5.1/html2/console_set_custom_font.html?py=true
Render Test : http://oi61.tinypic.com/11rgpax.jpg
Font Image : http://oi57.tinypic.com/fnaanr.jpg (Yes, the background is actually transparent. It just got changed when it was uploaded.

15
 Hello!

Ive recently tried setting up python/libtcod on one of my Ubuntu machines. It will run the samples.py file fine, good FPS and all. But for some reason when I set up from the first part of the tutorial, it won't run it at all. No error messages or anything, just nothing happens. I went into properties and checked the 'execute as program' box like I had to do with the samples file, but to no avail. Anyone know why this is?

My project folder looks like this;
- arial10x10.png
- FirstRL.py
- libSDL.so
- libtcod.so
- libtcodpy.py

and FirstRL.py looks like this;


Code: [Select]
import libtcodpy as libtcod
 
#actual size of the window
SCREEN_WIDTH = 80
SCREEN_HEIGHT = 50
 
LIMIT_FPS = 20  #20 frames-per-second maximum
 
 
libtcod.console_set_custom_font('arial10x10.png', libtcod.FONT_TYPE_GREYSCALE | libtcod.FONT_LAYOUT_TCOD)
 
libtcod.console_init_root(SCREEN_WIDTH, SCREEN_HEIGHT, 'FirstRL', False)
 
libtcod.sys_set_fps(LIMIT_FPS)
 
Hello!

Ive recently tried setting up python/libtcod on one of my Ubuntu machines. It will run the samples.py file fine, good FPS and all. But for some reason when I set up from the first part of the tutorial, it won't run it at all. No error messages or anything, just nothing happens. I went into properties and checked the 'execute as program' box like I had to do with the samples file, but to no avail. Anyone know why this is?

My project folder looks like this;
- arial10x10.png
- FirstRL.py
- libSDL.so
- libtcod.so
- libtcodpy.py

and FirstRL.py looks like this;

[code]import libtcodpy as libtcod
 
#actual size of the window
SCREEN_WIDTH = 80
SCREEN_HEIGHT = 50
 
LIMIT_FPS = 20  #20 frames-per-second maximum
 
 
def handle_keys():
    global playerx, playery
 
    #key = libtcod.console_check_for_keypress()  #real-time
    key = libtcod.console_wait_for_keypress(True)  #turn-based
 
    if key.vk == libtcod.KEY_ENTER and key.lalt:
        #Alt+Enter: toggle fullscreen
        libtcod.console_set_fullscreen(not libtcod.console_is_fullscreen())
 
    elif key.vk == libtcod.KEY_ESCAPE:
        return True  #exit game
 
    #movement keys
    if libtcod.console_is_key_pressed(libtcod.KEY_UP):
        playery -= 1
 
    elif libtcod.console_is_key_pressed(libtcod.KEY_DOWN):
        playery += 1
 
    elif libtcod.console_is_key_pressed(libtcod.KEY_LEFT):
        playerx -= 1
 
    elif libtcod.console_is_key_pressed(libtcod.KEY_RIGHT):
        playerx += 1
 
 
#############################################
# Initialization & Main Loop
#############################################
 
libtcod.console_set_custom_font('arial10x10.png', libtcod.FONT_TYPE_GREYSCALE | libtcod.FONT_LAYOUT_TCOD)
libtcod.console_init_root(SCREEN_WIDTH, SCREEN_HEIGHT, 'python/libtcod tutorial', False)
libtcod.sys_set_fps(LIMIT_FPS)
 
playerx = SCREEN_WIDTH/2
playery = SCREEN_HEIGHT/2
 
while not libtcod.console_is_window_closed():
 
    libtcod.console_set_default_foreground(0, libtcod.white)
    libtcod.console_put_char(0, playerx, playery, '@', libtcod.BKGND_NONE)
 
    libtcod.console_flush()
 
    libtcod.console_put_char(0, playerx, playery, ' ', libtcod.BKGND_NONE)
 
    #handle keys and exit game if needed
    exit = handle_keys()
    if exit:
        break

edit ::

I updated the source, and found some new info. If I run the script from the terminal, I get this error.

Quote
Traceback (most recent call last):
  File "/home/***/Documents/Python/projects/FirstRL/FirstRL.py", line 1, in <module>
    import libtcodpy as libtcod
  File "/home/***/Documents/Python/projects/FirstRL/libtcodpy.py", line 47, in <module>
    _lib = ctypes.cdll['./libtcod.so']
  File "/usr/lib/python2.7/ctypes/__init__.py", line 428, in __getitem__
    return getattr(self, name)
  File "/usr/lib/python2.7/ctypes/__init__.py", line 423, in __getattr__
    dll = self._dlltype(name)
  File "/usr/lib/python2.7/ctypes/__init__.py", line 353, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: ./libtcod.so: cannot open shared object file: No such file or directory

..even though libtcod.so is in the same folder.

Another very strange thing. I copied the FirstRL.py file and the font file into the Libtcod-1.5.1 folder, and ran it from the terminal. It produced the same error. However the sample in that same folder runs fine, even if its not launched from the terminal.

Pages: [1] 2