New build here. This version finally brings the much-requested Undo button! Undo and Redo up to 100 changes! (arbitrary value - you could probably do a whole lot more on most modern machines). Please let me know if you encounter any bugs with this one as I had to jump through a few hacky hoops to get this feature to work properly (mainly when undoing changes related to Generate and uses of the Spike Digger). Hopefully, this makes CaveGen a little less painful to use.
Hotkeys are Ctrl+Z for Undo and Ctrl+Y for Redo.
Version 1.2.2
Spoiler:
New features in Version 1.2.2:
- When you mouse over the buttons in the palette, the tooltips that pop up now tell you the hotkeys for each tile.
- Starting position and door added to bottom line of cave if not provided by the user.
- Keyboard shortcuts for Copy to Clipboard (Ctrl+T) and Generate (Ctrl+G) added. Funnily enough, they're quite close together on the keyboard...
- Limits placed on certain tiles. Specifically, they are: 6 enemies, 1 Enemy 4, 1 water level, 1 starting position and 1 door.
- Generate button moved below Terrain Settings.
- Fixed bug where if the last file you were using didn't exist or had its name modified when you open up CaveGen, it crashed. Now just starts with Untitled cave without crashing.
- When you try and load an invalid cave, a dialog will appear telling you exactly why that cave is invalid. Same happens if the last cave you saved (when opening CaveGen) has been made invalid.
- Fixed bug where if no tile was selected in the palette, Delete wouldn't work.
Version 1.2.1
Spoiler:
Cheeky little update for you: CaveGen 1.2.1
- Insert button can be used as alternative to LeftMouseButton for painting.
- Delete button erases any tiles inside the cursor.
- Generate and CopyToClipboard buttons swapped to prevent accidental regenerations when reaching for the Save button.
Version 1.2
Spoiler:
Version 1.2 can be downloaded from HERE. Please bear some things in mind:
- Because CaveGen now reads and writes to files, it'll ask you for admin permission before you run it. Don't be scared off by this; it'll only be accessing cave files that you specify as well as a settings file in it its own directory. I don't recall CSD's cavemaker ever needing admin permission; if anyone knows why this is, please let me know.
- I had to alter the installer slightly due to the shortcuts it was producing not working for whatever reason. It works on both my machines, but may not on yours. Please give me details on what happens if the install fails (it really shouldn't).
- On weaker computers, resizing the window can be SLOW. If you're making an 80x80 cave, I'd recommend you maximise the window and leave it like that. It should be fine for smaller caves, which are the best size for CaveGen until I implement zooming.
- I've added a lot of complicated features, so bugs are a definite possibility. I noticed that submarining would randomly occur on my old laptop and I have no idea why. Please give me full details on any bugs you encounter, especially those involving saving and opening.
To summarise new features:
- There is now a palette of all the tiles in the game that you can use to "paint" anything you like on to the cave grid. SpikeDigger/Filler/Remover are still there.
- You can specify the level name, terrain type and water type.
- There's now a cursor that shows you where you're about to paint.
- You can save and open caves from files. CaveGen remembers the last cave you were working on when you open up a new session.
Version 1.1
Spoiler:
UPDATE: Version 1.1 is live! Download it from here. This is one is a web downloader, so it only downloads .NET if you don't already have it. This means that, for most people, the download should be much smaller than before. Run setup.exe to install it. Please let me know if you have any problems with the installer or with the new version in general.
Version 1.0/Description
Spoiler:
Main Description
I've written a very simple tool called CaveGen for easily drafting the terrain structure of your HATPC caves. It's still quite roughly designed as it's been a casual project I've been doing outside of work - subsequent versions will be more polished and have a couple more features. I pretty much just wanted to release a version with the core functionality to get early feedback from you guys in order to better fit the design to your needs.
What does it do?
The idea is that it generates a cave with random terrain that you can then modify with a 'paintbrush'. It's like a miniature Cavemaker for terrain only - however, you can create some complex structures FAR quicker than you ever could in the Cavemaker.
There are a number of settings you can change to alter the generated cave such as quantity and size of the junctions between passages. Once you're happy with your mocked-up cave, you can copy it to the clipboard so you can place it in a text file for further development in the Cavemaker. Note that it does not currently insert Hannah, a door or let you give your cave a name, but that can be handled by the Cavemaker. I will add these features in the next version.
How do I use it?
1. Adjust settings to your requirements.
2. Click "Generate".
3. Paint terrain or empty space on to the cave with the paintbrush if you want to alter what was generated.
4. Click "Copy to Clipboard".
5. Paste the generated text into Notepad or something similar and save. The text may look weird in Notepad - don't worry about this.
6. Open the file in the Cavemaker.
7. Flesh out your cave!
Hotkey Guide
Spoiler:
File Shortcuts
Ctrl+N New File Ctrl+O Open File Ctrl+S Save File
Cave Shortcuts
Ctrl+T Copy to Clipboard Ctrl+G Generate Ctrl+Z Undo Ctrl+Y Redo
Palette Selection Shortcuts
x Terrain b Wooden Crate k Steel Crate o Boulder s Space/Eraser d SpikeDigger f SpikeFiller r SpikeRemover Shift+= or + Treasure Shift+6 or ^ Arrow Up Shift+, or < Arrow Left Shift+. or > Arrow Right v Arrow Down w Spike Down m Spike Up / Dynamite Shift+\ or | Steel Dynamite [ Platform Left = Platform Middle ] Platform Right Shift+2 or “ Ladder Shift+# or ~ Water Level Shift+1 or ! Water Tap Crate Shift+’ or @ Water Crate t Water Start . Air Pocket # Hannah Shift+d or D Door n Tutorial Up Shift+9 or ( Tutorial Left Shift+0 or ) Tutorial Right u Tutorial Down l Heart Crate g Gem Crate z Secret Area 1 Enemy 1 2 Enemy 2 3 Enemy 3 4 Enemy 4 5 Enemy 5 c Clone 0 Shockwave Error
Feature Requests
Spoiler:
Feature Requests (green = done, yellow = in progress or in unreleased version, red = yet to be started)
#1: Alternative generation method: start with empty space and then generate terrain islands in the space.
#2: Circular passages/dead-ends rather than square.
#3: Ability to specify range of passage sizes so that they vary in the generated cave.
#4: Pressing Delete removes any tiles within the cursor.
#5: Insert button is alternative to LMB.
#6: Hotkeys that use Shift should have a non-Shift alternative. e.g. 6 for ^
#7: Tooltip-style annotations for regions of caves (for guidance/to-do notes). Such tooltips would need to be stored in a separate XML file.
#8: Right-click brush.
Other Features
Spoiler:
Other Features (green = done, yellow = in progress or in unreleased version, red = yet to be started)
#1: Enable user to specify position of Hannah and the door.
#2: Enable user to name the cave.
#3: Option to disconnect passages (mainly for the purposes of creating "floating islands" caves).
#4: Remove limit on junction size.
#5: "Loopiness" control: add cycles to generated caves.
#6: "Spikiness" settings: highlight region and it fills with spikes on ceilings and floors. Specify "spikiness factor".
#7: Spike brush.
#8: Menu.
#9: Resizable window.
#10: Undo/Redo button. Regenerations can also be undone/redone.
#11: In brackets, add hotkeys to button tooltips.
#12: Add door and Hannah if not provided by user
#13: Include list of preset configurations for generation settings.
#14: Arrow keys move cursor around. Could be used while holding Insert or Delete.
#15: Change cave size without generating a new one.
#16: Hotkeys for CopyToClipboard and Generate.
#17: Add bold lines every 5 lines graph paper style.
#18: Copy and Paste.
#19: CSD tricks such as putting a door at bottom if one is not provided.
#20: Ability to change dimensions without generating a new cave!
Stuff that needs tidying up from Version 1.2
Spoiler:
Stuff that needs tidying up from Version 1.2 (green = done, yellow = in progress or in unreleased version, red = yet to be started)
#1: Add Cancel option to "unsaved changes" dialogs.
#2: Add option to stop using the default Caves folder.
#3: Limit number of certain tiles.
#4: Add support for all fake crate tiles.
#5: Move Generate button to bottom.
#6: Fix Bug #2.
#7: Investigate issue with desktop shortcuts not working. Not installing to Program Files. Need to research this.
#8: Remove code smells.
#9: Have InvalidCaveExceptions actually be used for something (i.e. tell user why their cave is invalid).
#10: Create custom button that doesn't have white/blinking background that overrides red background. Use custom MouseOver event handlers to re-apply white background. Possible solution here: Custom WPF buttons Also this: Disable glowing buttons in Windows 7
#11: Fix Bug #4.
Ideas
Spoiler:
Ideas
#1: Ability to import existing caves from txt files. Tiles that aren't terrain or spikes could be represented by a common tile (e.g. blue square) and could either be ignored or affected by CaveGen.
#2: User provides junctions and CaveGen joins them up in random ways.
#3: Scrolling Mouse3 up and down zooms the cave display in and out.
#4: Make settings panels and cave grid dockable panels.
#5: Custom templates to add to the palette.
#6: "Projection" option. When on, hovering over a dynamite will show the trajectories it would take when hit from the left or right. Could also show arrow projections.
Bugs
Spoiler:
Bugs
#1: Sometimes a "submarining" effect can arise when painting. This means that when you drag the cursor around quickly, the resulting line is spotty/discontinuous. The CaveGen code normally handles this, though there is some situation where you drag the cursor out of the cave map in which the code that prevents the submarining is disabled. If anyone figures out the exact behaviour that triggers this, let me know.
#2: If the last file you were using does not exist when you open up CaveGen, it will crash. FIXED
#3: If no tile selected in palette, Insert and Delete won't work. FIXED
#4: Fix the weird button highlighting in Windows 7.
#5: Fix minor bug relating to laying down enemies after undoing their placement.
Please report any bugs that you find and tell me about any features you'd like to see added/improved. .
Very cool idea. However, every time i try to paint anything, i get the first part of where i clicked, then it immediately stops working and crashes. Will test more.
EDIT: yeah, not working for me. continually crashes.
'Livio' said:
You know, I was thinking of getting an internship at Microsoft, but I'm not sure I want their lameness to rub off on me.
Karma: 72 Posts: 1625 Location: Climbing In Your Windows pm | email
i was all exited and then you have to download it? there's already 2 things to download for full HATPC playability, and then you make another download?! /sarcasm
Age: 24 Karma: 107 Posts: 2043 Gender:Female Location: The Nuclear Era pm | email
yimmy, this is for generating cave terrain like if you're stuck trying to make a level because you have full control over the terrain, not a necessary download.
"Time is a circuit, not a line; cybernetics instantiates templexity."
Unfortunately, I am not a particularly experienced web developer, though I'm sure it wouldn't be too difficult to make something like CaveGen using HTML5. I might consider it in the future. However, downloading a small file is neither difficult nor time-consuming. Go to the link, click Download and then run the .exe when it's done.
Karma: 72 Posts: 1625 Location: Climbing In Your Windows pm | email
i am sort of disappointed, although not that disappointed. it was sort of a friendly joke. for future reference if i use a smiley while saying something negative it is most likely not very serious. i do want to download it but i think i've downloaded enough. sorry jebby. i don't really like downloading stuff on our family computer
@soccerboy Vista, huh? Interesting. I'll examine the Build/Publish options in Visual Studio. Maybe your machine has an older version of .NET that the application doesn't support. I could possibly fix that though.
Something you could try in the meantime, soccerboy, is to download .NET 4.5 (which is one of the application prerequisites) from here. What I'm going to try over the next couple of days is to publish the application via Visual Studio, which should provide some extra setup stuff to ensure that whoever's installing the application has everything they need to run it. Might look into getting it hosted somewhere more appropriate than Google Drive as well.
If you have the time, could you possible post a screenshot of CaveGen when it crashes? Or just before you start painting so I can see how much of it actually loads correctly?
EDIT: thanks also to Quirvy for feedback. You guys and your old OSs... My fault though for not providing any kind of installer.
I don't see any difference between selecting "Space" or "Terrain" though, wanna explain?
Terrain paints terrain. Space rubs out terrain by painting space. Or at least it's meant to; I've just learnt that not including an installer means that users can have all different kinds of experiences so I don't have much faith that our versions behave the same way.
All my caves start as filled, and creates space. Having terrain-based "islands" does not work.
I don't follow you. Are you actually dragging your cursor across the map to paint (like in Paint)? By default, Space means you remove any terrain that you 'paint' on the map. Switching to Terrain allows you to draw terrain over the map, filling in any space. Does Generate work for you either?
An installer with .NET 4.5 is on its way (though probably not today as it's 1am). I may have to make a separate version for the XP folk as XP only goes up to 4.0.
All my caves start as filled, and creates space. Having terrain-based "islands" does not work.
I don't follow you. Are you actually dragging your cursor across the map to paint (like in Paint)? By default, Space means you remove any terrain that you 'paint' on the map. Switching to Terrain allows you to draw terrain over the map, filling in any space. Does Generate work for you either?
Generate works and is the only thing I use. What I meant was that I get caves that resemble The Pipe Dream, if you were to only look at the terrain (albeit with more branches). The terrain is never, no matter my settings, inverted from that - you can't make "open" levels.
All my caves start as filled, and creates space. Having terrain-based "islands" does not work.
I don't follow you. Are you actually dragging your cursor across the map to paint (like in Paint)? By default, Space means you remove any terrain that you 'paint' on the map. Switching to Terrain allows you to draw terrain over the map, filling in any space. Does Generate work for you either?
Generate works and is the only thing I use. What I meant was that I get caves that resemble The Pipe Dream, if you were to only look at the terrain (albeit with more branches). The terrain is never, no matter my settings, inverted from that - you can't make "open" levels.
Technically, with the paintbrush, you can create any kind of cave structure possible just by drawing what you want. "Generate" starts with a cave full of terrain and then fills it with "space" passages connected by "space" junctions. Once you've generated a cave, you can then draw terrain or space wherever you like using the paintbrush. e.g. You can take a terrain-filled cave (0 junctions) and then rub out all the terrain with the Space paintbrush and then draw terrain islands with the Terrain paintbrush. I can't think of any better way of explaining what the Terrain/Space radio buttons do. A good analogy would be changing Pen colour in Microsoft Paint and then drawing with a different colour.
Are you saying you want a version of Generate that starts off with a completely empty cave and then fills it with "terrain islands"? Would just be a case of inverting the tile types in the generation algorithm. Would generate some weird caves though with some inaccessible rooms.