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 - Zireael

Pages: 1 2 [3] 4 5 ... 41
Early Dev / Re: The Veins of the Earth development feedback BETA 13
« on: October 13, 2016, 09:54:24 AM »
I ported the dialogue system from the T-Engine version so you can now chat to non-hostile NPCs.

I got a ton of stuff done in the last couple of days even though I am a slow coder and an even slower spriter.

The character dialogue now handles the situation where you don't speak the NPC's language better. Your answers don't get scrambled in any case. You just don't get any of the normal answers, just a [Leave] option which closes the dialog screen. If you do speak the language, the answers now feature a small note telling you which skill they test for (i.e. [Bluff], [Diplomacy]).

Beginnings of a character creation screen

I was inspired by ToEE's character creation I saw in a gameplay vid on YT. I think this is the only cRPG game with randomly rolled stats where you first roll and then assign every one of the results to one of the stats. All the other games I can recall (BG1-2, IWDII, PS:T, NWN1-2, Angband, Incursion) didn't allow you to reassign the rolls. If you got a high roll but it got assigned to a less-than-useful stat, time to reroll. Oh, the number of times I rolled to get a 18/100 STR in BG1... :D

The HUD now features a body picture - I used a screenshot of Deus Ex 1 as a reference. The picture is grayscale and colored by LOVE's color functions, so I'll be able to recolor it on the fly once I hook up some more code to it. The new ruleset features HP per body part (head, torso, 2 arms, 2 legs) so the color of your torso in the pic will tell you how damaged your torso is.

Early Dev / Re: The Veins of the Earth development feedback BETA 13
« on: October 07, 2016, 02:46:28 PM »
The port will definitely take longer than I originally thought because I've decided to leave the d20 roots behind me.

The d20 ruleset is notoriously difficult to get right in a computer adaptation, and there are already four roguelike d20-based games out there (Incursion, Javelin, Knights of the Chalice, Temple of Torment). Every one is basically the "roll d20 for most stuff" core with house rules tacked on.

As the game grew, there was less d20 and more house rules in Veins, though.

I've decided to make it more similar to the old - this was based on Runequest 2nd edition. Runequest has had several editions since and TWO under OGL. Best thing about it is that it's very simple to adapt - everything, skills, combat, whatever is "roll under d%" and changing the rules is as easy as adding or removing a skill. I could even use some other dice, not d%, and still keep the core rules. Skills are advanced by usage and there is no concept of multiclass as in d20. Runequest has fairly weak magic, but it's really easy to plug in d20-style magic instead.

Early Dev / Re: The Veins of the Earth development feedback BETA 13
« on: September 25, 2016, 07:25:07 PM »
I am following Zomia from the very moment it sprang up in LOVE forums :) In fact, seeing their implementation helped me bring about the log messages and the dialogs on top of map.

More things that I couldn't do in T-Engine (at least not easily)

By dev demand in /r/roguelikes Discord channel, a visible grid AND toggleable labels (inspired by Cogmind)

Next: I seriously need to work on making the map scrollable (probably some sort of a LOVE camera module - I know at least two).

Early Dev / Re: The Veins of the Earth development feedback BETA 13
« on: September 24, 2016, 07:54:20 AM »

WIP inventory screen - you can drag items into slots to equip but you can unequip or drop yet

I believe this is a massive improvement over this:

See the teeny-tiny tiles on the right hand side? No way to increase their size, as far as I could tell

Also I legitimately went "eep!" when I saw what came out. I guess the first and biggest RPG I ever played is getting imprinted on my subconscious somehow - see this :D

Early Dev / Re: The Veins of the Earth development feedback BETA 13
« on: September 17, 2016, 09:34:21 AM »

The LOVE port now has a basic working FOV. I've been eyeing Adam Milazzo's algorithm, to add to the list of things I can do now I'm not limited by what T-Engine offers. I have also picked a GUI library from several that can work with LOVE.

Also the basic inventory code has been ported from T-Engine so the player can pick up items, but the inventory screen hasn't been made yet :(

Brainstorming various stuff (dungeon map scale, FOV, geometry (Chebyshev vs. Manhattan vs. something else?)... eats up quite a lot of time. I initially estimated two months for porting, but I think it'll take longer as I keep tinkering with the basic assumptions the game has.

Also Paralympics and real life are stealing some of my time. Not complaining - seeing a friend's brother get a team bronze and team silver medal was AWESOME!

I was interested until I saw the price tag. EA games are sometimes pricier than finished games - I heard tell of an EA game priced at $100 - while it should be the other way around. Not only we're effectively beta-testing, we shouldn't have to shell out on unfinished products. (That's why so many roguelikes, which are often "not finished" always, used to be free)

Early Dev / Re: The Veins of the Earth development feedback BETA 13
« on: September 05, 2016, 03:35:52 PM »
outside of actual difficulties on your end due to internet connection

That's the crux of the problem, I'm afraid. It loves to go down at most inopportune times :(

Day 5 (Mon): Integrated a nice LOVE-specific pathfinding library called Jumper. Pathing (A*) was fairly easy (apart from the readme on the library being a bit outdated), getting the actors to move along was not. I had to do some passing around of stuff to get it working. Then discovered I forgot to check canMove(), so the orcs were cheerfully lumbering into the player's space :D Fixed now and I can watch the two orcs follow the player around.

The library also has Dijkstra, so I can't wait to play with it. Given that LOVE allows easily writing stuff to screen, I could have a tiny number in a tile's corner being it's cost :)

I guess the next hurdle to overcome is having actual GUI (panels, dialogs, whatever). After that, the only thing left is porting actual content :)

Early Dev / Re: The Veins of the Earth development feedback BETA 13
« on: September 04, 2016, 05:43:10 PM »
I don't think a change is "absolutely necessary", but I see it as both a chance to decrease upload/download size as well as learn something new.

Since dependencies hell struck again (I say again because I've had it when setting up a Lua linter) with BearLib (I got it to work, but making any sort of releases would be very difficult), I kept looking and found LOVE 2D. It's a 2D Lua engine which is not tailored for any game genre, just takes care of input and output. There's a ton of LOVE-specific libraries for a lot of stuff (A*, FOV, there's even a roguelike-specific one called ROTLove).

I picked it up on Thursday and it's now Sunday.

Day 1 (Thu): lots of grabbing of libraries as well as other love games. Made a start screen in under 30 minutes as well as the game closing on ALT+F4 and reacting to ENTER key by changing the message on screen
Day 2 (Fri): got a basic display working and a barebones 20x20 floor map for testing, as well as player input. The player tile however overwrote the terrain tile. Accidentally find out the engine can recolor anything
Day 3 (Sat): figure out how to draw in layers, so that the player doesn't overwrite terrain. Write a basic "spawn monster at x,y" function. Laugh a bit when the player winds up looking like the orc because of wonky inheritance, and laugh even more as the player can move to the square the orc is in, causing it to disappear forever. Fix said inheritance. Write a function to stop movement if there's an actor in the square. Prototype a player HUD showing the player's hitpoints and wounds as numbers.
Day 4 (Sun): Move the map so that the player HUD is on black background and not the map. Integrate the action schedulerfrom ROTLove as well as a debug display for it. Keep poking at the game until it becomes turn-based instead of realtime (with a hilarious bug in between where you could move multiple times in a round because I forgot to make the movePlayer() function call EndTurn())

Note: The action scheduler is a big thing. It allows me to make the game closer to Incursion - which had something called segments and I think 6 segments equalled a turn? most actions took 10 segments but some took less and some took more - looking at you, taking stuff in/out of backpack, 200 segments! Also it means I don't have to futz around with speed leading to sudden double moves, Angband-style. Win-win! And the debug display (it's my turn now) was very easy, so I'm hoping to expand it soon to something like
> Player
Orc #1
Orc #2

which would let you tell which of the monsters moves first, which second etc. and I would probably highlight the player and the last monster (at which point it wraps back to the player) in a different color as soon as I figure out how to do it.

The library considers forward slash '/' universal and replace it with backslash '\' on Windows.

Isn't the case, at least in my Lua code.

I'm using lfs.currentdir() to determine the current directory and printing it to console - it's the correct one.

I'm getting the tile to be used via
Code: [Select]
player =
terminal.set("U+E000: "..player.image)

where image is a string stored in the Actor class. Printing it to console to verify I'm getting the correct thing.

This is the entirety of my Actor class so far:
Code: [Select]
lfs = require 'lfs'
local game_dir = lfs.currentdir()
print("Current dir is: "..game_dir)

package.path = game_dir.."/engine/class.lua"
require 'class'

module("Actor", package.seeall, class.make)

function _M:init()
    self.display = "@"
    --self.image = game_dir.."/gfx/player/racial_dolls/human_m.png"
    self.image = "human_m.png"

The class and module calls are there to allow me to call things via self:blah() but you could change it to
Code: [Select]
Actor:init() function Actor:init()
If I use game_dir, what I see in the console is:
Code: [Select]
And the bt.log says:
12:46:10.124 [info] Trying to set "U+E000: F:\roguelike\test/gfx/player/racial_dolls/human_m.png"
12:46:10.125 [debug] Group "U+E000":
12:46:10.126 [debug] * "_" = "F:\roguelike\test/gfx/player/racial_dolls/human_m.png"
12:46:10.126 [debug] Requested resource "F:\roguelike\test/gfx/player/racial_dolls/human_m.png" with possible prefix "tileset-"
12:46:10.126 [debug] Loading resource from memory 'F:\roguelike\test/gfx/player/racial_dolls/human_m.png'
12:46:10.127 [error] Failed to set some options: Resource::Open: failed to parse memory address (F:\roguelike\test/gfx/player/racial_dolls/human_m.png)

So as you see, the slashes vary.

I seem to be having a tiny problem. I am specifying image paths in my Lua code, so I use the / kind of slash. However BearLib can't find the images because it seems to want a \ slash, which is an escape character in Lua.

I can load the pictures fine if they sit in the main folder, but this will quickly become unmanageable...

Thanks for that simplifying update, Cfyz!

Mouse support is in the cards, but for now I will focus on getting the basics going. I spent most of today grappling with my Lua libraries and then trying to figure out how to implement classes in Lua - I was so used to them I never realized they aren't there out of the box!

Now that the hurdle is over, I will see how quickly I can implement all of the things I had in T-Engine. I guess it's going to be really quick, since T-Engine is open-source and I have long been hacking it's source (and I don't need to bring EVERYTHING over since I don't need the notion of modules, for instance, or the main menu being a completely separate module).

The only problem I can foresee right now is the ASCII/tiles switch, since it's gonna essentially double on the number of code points I'll need... unless I can

Code: [Select]
if mode = ASCII then
terminal print([0x5E)


I was looking at the source code for Omni or whatever the example is, and trying to figure out how you navigate between the screens, and how you move the viewport in the minimap example.
All I see is some sort of while proceed= true do stuff loop followed by terminal.close()
And from what I see, every screen is a separate function, and every one of those has some sort of a input handling function.

Once I have the input working, I could get the game going, but without input all I have is a static screen.

Thanks for the speedy fix.

The documentation is top-notch and I already have figured out how to print tiles and text to screen.

I have a problem with an input loop, however. All the examples are in C and I am still bad at loops :(

Can anyone help?

Early Dev / Re: The Veins of the Earth development feedback BETA 13
« on: August 29, 2016, 05:52:23 PM »
Another beta is out! Any feedback is welcome!

However, the upload/download size has made me think of some other display library that'd be smaller. I don't want to deal with the hassle of changing the language. I'm torn between BearLibTerminal and libtcod. Which would be easier to set up and get rolling?

A little bird told me on Reddit that BearLib has a Lua wrapper built in.

Is it true? Are there any tutorials on how to use it?

I'm looking to move my Lua game to some other display library (without changing the language) and I'm torn between this and libtcod. Which is easier to set up and get going?

Pages: 1 2 [3] 4 5 ... 41