Paprika v 0.1.5 bug report = it tends to crash very often and randomly, mainly when using the window's menu. (Runtime error 13: Type mismatch)
My pc: Windows XP. .NET Framework 2.0
- Crypt -
- Hi Crypt, thanks for the bug report.
Could you try out some things and answer some questions for me? Thanks in advance.
- 1. Could you take a look at your region settings (Control Panel > Regional and Language options) and let me know what language it's set to. I've had problems in the past where people use a different system and it causes type mismatch errors. For example, if their decimal system is like 56,99 (French) and mine is 56.99 (United Kingdom). I need to figure out a way to make my application work universally.
- 2. I've uploaded a new version (0.1.6) which has a few differences:
- Increased debugging. If you click the debug menu item and then type "debug" at the prompt, debug mode will be enabled. It'll be a bit slower.
- The new character window is no longer loaded in the background when clicking the "Windows" menu.
- Removed the windows.ini file, which stores the position and size of windows.
- Some other unrelated updates.
3. If you could try that out and let me know where it crashes, that would be very useful to me. It would be best if you extract everything to a new folder. When it crashes you can see the last messages in the log.txt file either in the same directory as the application or the /Save/Character Name/ directory if you were playing a game.
- Paprika is written in Visual Basic 6, so doesn't use the .NET FrameWork. Thanks again. Icey 20:14, 26 Sep 2006 (CEST)
- I've done some testing and I'm fairly convinced it's due to the language settings. For example, the experience rate of Monks in Paprika is a multiplier of 0.7 (for example, 20 xp would be converted to 14 xp), which in my language is equivilant to 0,7 in yours (I think). If I set my computers language to French, Paprika loads in 0.7 and can't converted that to a double variable, because it doesn't understand the ".".
- If you temporarily set your language to English (United Kingdom) and see if Paprika still crashes, that would be very useful to me.
- Possible solutions:
- A) I can get the language of the computer, so a little message could be shown if a user tries to open Paprika and they aren't using English (United Kingdom) or English (United States). But that's a rubbish solution because it alienates a lot of people and forces them to change their language to use the application. Most people would probably just delete it.
- B) Set the computer language to English. This is also a terrible solution. If an application did that to my computer I'd be very annoyed and uninstall it straight away.
- C) Set the language of Paprika to English. This is a good solution. It doesn't interfere with the users computer and they will never know it's happened, because it doesn't affect the user in anyway. So I tried this using SetThreadLocale, but I can't get it working yet.
- D) Write a few custom functions that understand numbers like 0.7, regardless of the language of the computer. This is a bit tricky, lots of work and some parts could easily be missed. I'm not sure it would solve the problem either.
- So I'll try to get C to work. Icey 21:34, 26 Sep 2006 (CEST)
- I've gone for option D instead. I just need to fix a bug that keeps freezing some parts of the code and then I'll upload a new version. Although I need to go to sleep now and then work tomorrow, so it'll be 18+ hours before I can do that :( Icey 22:56, 26 Sep 2006 (CEST)
Why don't you set, for instance, Monk xp modifier to 7 instead of 0.7 and Fighter's one to 10 instead of 1 (and make the needed and simple modification inside your code) ?
I did not make language switching in order to test it, but i think it's very weird and tricky to have to take into account this kind of conversion. IMO the way you read the ini files is the guilty one. You should check this before doing any x.y to x,y or whatever trapped and probably useless conversion.
Another thing : If i were you i would convert Paprika to .NET. It would make future developement easier and i think the conversion will be easy. If you want you can send me your VB6 source project,i would try to convert it to .NET, just to see if it works. (firstname.lastname@example.org)
EDIT: i've just see the source was already available (i don't have VB6 so i didn't recognize the .vbp file) Well, so i have try converting it to VB.NET. Result : there are some expected errors (because the conversion modifies some arrays bounds declaration, IMO you should not declare (1 To x) arrays ) and some more interesting ones, for instance :
- in classCreature, line 403 :"Warning 16 Variable 'ShowEffects' is used before it has been assigned a value. A null reference exception could result at runtime."
- line 417 Warning 17 Function 'ShowEffects' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used.
- Line 252 Warning 3 Variable 'strOutputDamage' is used before it has been assigned a value. A null reference exception could result at runtime.
As the current VB6 0.1.6 version tends to crash (it freezes, i no longer get the "Type mismatch" displayed error) when i attack a creature maybe the line 252 error occurs (?).
VB2005 would be very usefull to you, IMO.
Thanks for your reply. It's good that you no longer get that error, because hat means it must be the conversion thing, which is fixed now. Freezing when fighting happens to me as well, but I didn't notice because it only happens when the project is compiled. Running it from VB6 is fine.
There's a lot of decimal useds. On things like XP multipliers, gold, score, XP, item weights and so on.
I tried converting Paprika to VB2005 when it first came out. I didn't keep track of all the .NET things and I'm a little confused about what is available. After trying to convert I got hundreds of problems, so I didn't think it was worth converting. I haven't looked at the VB.NET/VB2005 things much, but I think I read somewhere that converting projects has been improved a lot.
I think it might be possible to use SharpDevelop to get VB.NET applications running on linux, which is definitely something that would attract me to using .NET. I have Ubuntu installed, so I could test that out.
I don't really want to buy anything, but I have a copy of VB2005 Express, which is free.
When I get home, I'll fix the freeze-on-fight bug, modify the arrays to start at zero, learn about the VB versions and then see how difficult it'll be to convert it.
Thanks again for your help. Icey 14:18, 27 Sep 2006 (CEST)
- Ah right: VB2005 is the latest version of the Visual Basic .NET series. The express version includes the same converter as the full version, so that's good. I'll make sure I've got the latest version tonight. Icey 14:34, 27 Sep 2006 (CEST)
I've fixed the freezing error. Ironically it was caused by some error trapping code! I've also made adjustments so that arrays start from zero. I tried upgrading the project to VB2005, but it came back with 164 errors. However, I've made some modifications to the VB6 code to remove some of those errors already. When I have a lot of spare time I'll try to upgrade it. I think the graphics functions are going to be the trickiest bit.
A new version is available. As I'm sure you understand, Paprika is a beta project, which means (among many other issues) it isn't balanced, so while the code is there to win, it is impossible because the monsters at lower levels are insanely more powerful than the player. When all the features are written in, I'll be doing some play testing to ensure it is at the level a roguelike should be, which is impossible-0.1 --Icey 00:13, 28 Sep 2006 (CEST)
As far as i see the new version works fine :) ( fine enough to kill my character in a honest bugless battle.) The GUI is pleasant, i think Paprika has an interesting potential. What future features do you plan to add ? (wilderness ? thematic/specific maps ? etc..)
Hi Crypt, thanks for trying it out. My main plans for Paprika are:
- Make it open source
- Make it incredibly customisable
- Everything is stored in INI files, which can easily be changed with or without any programming knowledge. For example, look in the data folder. Tiles are all stored as files, so can easily be changed as well. The symbols and colours of symbols used in text mode can be changed as well. Everything about saved games can be changed. People could create campaigns if they learnt how the files worked and people could also alter the theme (like making it underwater or forest based) by changing the tiles, monsters and/or items.
- Make it accessible and user-friendly
- It should be playable by someone who has never played a roguelike before. So I have a text/tiles mode, which can be switched at any time. I have a menu with all the commands, so people can use them straight away without learning what letters they require. The difficulty can be changed (easy, normal, hard), which affects the type of monsters, how good the treasure is and various other things. For example, secret doors don't appear when using easy mode. I'll write documentation when it's "complete".
- Add everything I want
- Which is a lot. If you look in the documentation folder you can see my to-do list and changelog. There's a lot to do and I tend to add three things whenever I complete one!
- My experience of other roguelikes is very minimal. I tried out NetHack and thought it was so fantastic I tried out a few more roguelikes. Then I started writing Paprika a few days later. I think it's good because the way I'll do things isn't influenced by how NetHack/Rogue/ADOM/etc does them, because I don't know how they work. It'll just be my way of doing things.
Icey 14:43, 28 Sep 2006 (CEST)
Yeah, it rocks :) I like the general feeling of this game. The graveyard is a very cool idea. Maybe it may be extended to some kind of mini game. Maybe in order to bring the dead back (??) The listen command : i guess it's not yet fully implemented. My character only succeed in hearing something one time and the message was ="You hear a" (nothing after.) What are the (future?) rules of listening ?
PS: about the graveyard : what about creating outdoor levels => towns => main starting town => the graveyard in the main starting town => shovels + raise dead spell => etc.... ?
-- Crypt --
I wasn't planning on a town... but the more I think about it the better it sounds! It could have a graveyard for the dead characters and maybe some statues around for successful characters. Having the merchants in the town instead of in the dungeon would make more sense and would solve the slightly tricky issue of working out what to do when there's a merchant in a coridoor and you can't get past (the answer is press shift with the direction, but I couldn't think of how to display that to the player in a sensible way).
The quests for Paprika all involve retrieving the Jewels of Power????, which usually belong to the town. So I could have some kind of building which shows where they would normally go. Oh! Oh! *lightbulb appears* Perhaps the game could be won by going back into the town and placing them into that building. Instead of the current method of winning, which is just leaving the dungon.
If I have a town, then I should add in some way of getting there from parts of the dungeon. Maybe a teleport scroll. Although I'm not too keen on that, if people get into a massive fight they should face the consequences, not just teleport away. Takes out a lot of the risk. Perhaps I could implement some kind of check to see if the player is near monsters or currently in combat. Like "You are too distracted by the hostile creatures to read the scroll."
Aye, listen is a bit half implemented at the moment. It will work like this:
- Every character has a listen skill, which is determined by class and race. It's more like a percentage than a skill though. For example, you can hear something 70% of the time.
- You can hear for about three or four squares in any direction.
- The general idea is that before opening a door or going round a corner, you could pause for a turn, stand still and listen to see if you can hear any nasty things on the other side. This would be useful if you're near death and have to be careful. Although monsters move randomly sometimes, so you might start listening and suddenly the monster shows up!
- Characters should be able to hear other things as well. Like fountains should be hearable, or maybe you can hear that snake hiding under a bag or maybe a slight humming sound from a sonic trap. That kind of thing.
- A few other things should be written in. Like dragons should be hearable from far away because they are massive and make loads of noise. Little beetles shouldn't. Ghosts and stuff like that probably don't make much noise. Perhaps each creature should be given some kind of modifier to make it easier or harder to hear them.
Some of these things are implemented. If you go near a monster and listen, you should be able to hear it. I'll see if I can figure out what happened to you later. Perhaps the next update could expand the listen skill.
Thanks again for your ideas. Icey 14:31, 5 Oct 2006 (CEST)
If i were you i would add an image (a cross on the sound source) or an orientation arrow of the detected sound. And extend the detection range. 3 or 4 squares is not sufficient, IMO.
PS: i hope you don't mind if i add in CryptRL the kind of graveyard we spoke about ;)
- Crypt -
I've fixed the bug with the missing end bit. The listening wasn't checking if the creature was active or not. When a creature dies, everything about it is destroyed, so it had no name. I guess it registered as near you because you were near the top left corner and the creatures position returned as zero/zero, because it didn't have one.
I've extended the range to six squares.
It would be a good idea to show where the sound is coming from, but sometimes the character might hear more than one thing, which could get a bit confusing. I could do something like "You hear a blue beetle to the west" or "You hear a fountain to the south east".
Icey 19:57, 5 Oct 2006 (CEST)
PS: Ha, off course not! It was your idea!!
"but sometimes the character might hear more than one thing, which could get a bit confusing."
I have this kind of trouble : a small information line is displayed when sounds (real ones) are switch off or the sound files are not installed. It give information about heard sound (ingame's, not real files) and their orientation, but only for one sound per turn (the last sound.) One possible solution would be to display one image per sound one the map ( i think about something like a circle or misty transparent gif telling the general position of the source. A small font text near the circle would give information about the kind of sound)
"PS: Ha, off course not! It was your idea!!"
Almost fully done in version 0.6630. Current unburied creature are standard skeletons. Maybe i will truly resurrect dead characters. This could lead to possible interesting necromancy spells. Only permadead characters are allowed to be buried in the cemetary.
v0.1.10 : congratulations for your first town ;)
- Thanks Crypt! I have quite a few plans for it:
- A way to access the graveyard from the town.
- Doors should have symbols that reflect the shop. (just in tiles mode)
- Statues of successful characters.
- Trees, areas of grass, fountains, etc... just to give some more character to the place.
- Commoners and friendly little animals, like cats, dogs and birds.
- Items 3, 4 and 5 will be randomly generated. Shops are already positioned in random places with random sizes. The entrance to the graveyard could be from a random position. Random is good.
- One thing I'd really like to do is not have a story just presented as text at the start, but actually have the story unfold while playing. So you get into the town and all the commoners are running around screaming about a terrible monster who has sealed off the town so no one can escape. The town is protected by the Jewels of Power, which control all the magical forces within the village, but the terrible creature has stolen them and hidden itself away in the dungeon somewhere. If they aren't retrieved the whole village will be destroyed and all the people in it!
- This also gives me the perfect opportunity to have wild magic areas, where spells behave strangely or a different spell gets cast altogether.
- And I need to write in conversations.
- Instead of automatically being given gold when starting, there could be a mayors office and you go along, he tells you the situation and gives you some gold that the town has scraped together to buy supplies.
- I'm also somewhat tempted into having a forest, because it could lead to loads more possibilities. Such as more emphasis on animals, rather than monsters. Crafting, farms, etc. I think that's an idea for the future though, I need to work on the important things and expanding existing systems within the game at the moment.
- Icey 14:26, 13 Oct 2006 (CEST)
v0.1.17 : A small bug report: ring effects are not stopped when dropping the ring without unequipping it.