If you're using Git then you'll have to learn how to work with remotes: https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes
Your kids would keep track of their own repo and your upstream repo. You can either keep track of all their forks and pull changes manually or ask them to make pull requests.
I prefer Uncle Bob's view:
> It is well known that I prefer code that has few comments. I code by the principle that good code does not require many comments. Indeed, I have often suggested that every comment represents a failure to make the code self explanatory. I have advised programmers to consider comments as a last resort.
Other times he puts it more bluntly:
>Comments are always failures. We must have them because we cannot always figure out how to express ourselves without them, but their use is not a cause for celebration.
or
>"Every time you write a comment, you should grimace and feel the failure of your ability of expression."
I know it's not always practical, but I like Uncle Bob's extremely demanding perspective, because I feel it sets a really high bar and struggling to work toward it is something that stretches me.
If this is a wildly shocking view, I highly recommend picking up a copy of Uncle Bob's book Clean Code which I learned about from this IRDC talk. I saw that talk, bought the book, read it, and my views were changed. I now refactor a lot more and comment a lot less.
Uncle Bob's minimally commented code doesn't come cheap though, he spends a ton of cycles after the code works, retooling it specifically to make it readable.
Also, for the record, I ain't no Uncle Bob. Don't misunderstand me as saying I live up to his standards please!!
You might want to start splitting your code into separate files before it gets too long, it will save you a lot of scrolling and make your life easier.
Also, take u/CrocodileSpacePope's advice and get a free version control service account It will not only be a place to host your code, you'll be grateful to have one when you break your code. If you don't know what version control is, here is a guide you only need to read chapters 1, 2 and the first part of chapter 6 and you'll be using github within the hour.
No, there are methods to compile the game into a standalone executable, like cx_Freeze.
Note to everyone: SourceForge is under new management that has done away with all the terrible practices associated with its previous owner/iteration.
Pico-8 Dungeon Crawler
I've made some excellent progress this week, so I think it's about time I share what I've been working on. If you haven't heard of Pico-8, it's an 8-bit 'fantasy console'. I've been working sporadically on roguelike prototypes for about a month, but it's the past week that everything's come together and I've achieved the most.
So far I've implemented:
Here's a build (playable in browser): http://immense-basin-12369.herokuapp.com/
What's next?
I'm pretty happy with what I've got so far, but this is my first time sharing the project so I'm open to suggestions and definitely looking for feedback!
Vim is great, but there's a serious learning curve.
Sublime Text was my goto for years, but these days I think Visual Studio Code is best in show. https://code.visualstudio.com/
Shadow of the Wyrm
Shadow of the Wyrm uses a combination of languages and technologies, and I've settled on a few tools for each:
C++: I use Microsoft Visual Studio for writing and debugging code, and occasionally vim. vim tends to be for small edits, or creating new files and adding them to source control, which I prefer to do in a terminal.
Python, Ruby, Lua, premake scripts, LaTeX: vim.
XML, XSD, resource strings/.ini files: notepad++. I find its schema validation quick and straight-forward, so I use it for editing XML, of which there's a considerable amount.
Large text files: emacs. Not sure why. Muscle memory for the basic command set, I suppose. I tend to prefer vim, but use emacs for non-SotW stuff like writing Scheme.
Confirmation that I haven't broken my Unix builds: okay, so this is new from last time. I use VirtualBox to keep a Fedora VM, and I use this to build SotW periodically to make sure gcc likes my code.
As a holdover from when I used Code::Blocks and mingw, I have the mingw environment installed, and I use msys to use bash, grep, and the basic Unix tools as a productivity boost.
For source control, I use Mercurial. I started the project using svn, and migrated to Mercurial about six months after that. I've been using it ever since and find it simple and inuitive. I wish hg had won the mindshare battle over git. But that train has sailed.
EDIT: original answer: https://www.reddit.com/r/roguelikedev/comments/2u5nj0/faq_friday_2_development_tools/co7s393/
Veins of the Earth - LOVE
In other news, while I was too busy to code, I've decided to move away from d20 (mostly due to the fact that you can either have a 0% to miss or 5% to miss (on a 1) regardless of your level. I have been brainstorming a new ruleset, which will be much closer to Darklands http://www.wikiwand.com/en/Darklands_(video_game). It will use a d% and will be skills based.
Another advantage is it has less corner cases than d20 so it'll be easier to implement. I will still use treasure and magic based on d20 SRD, for instance, but the core will be much different.
Untitled SpaceRogue
Hello everyone, new to this subreddit and roguelikedev in general!
So what started as a learning excercise by following the libtcod Python roguelike tutorial series I've ended up turning it into a bit more of a project.
It's not much at the moment, but currently you start in your spaceship and can fly around space exploring your current sector with a randomly generated asteroid field.
Currently working on core mechanics, with a look to allowing you to navigate to a new system from your ship next. I expect progress to be slow though, as I have a full time job and new baby at home. Just working on it in my lunchbreaks allows me to get a bit done.
I've put some screenshots up on a public trello board here
Terraforming Cookie Tower
Current PC build:download and rate
Devlog:here
Hello, I make "the fastest roguelike/lite ever" game about strange creature that loves cookies. You have to move through the shrinking floors of the strange tower, using card-based item system to buy and use important things. The project started as Ludum Dare one, but now i'm going to develop it, adding new features and regular updates Enjoy!
Will you be running a world with maps and tiles and entities in the background, and just showing that through a different interface? Or are you planning to do something altogether?
Your description immediately reminds me of A Dark Room. Although in a later phase of the game there is a navigable game world, the bulk of the game is played through buttons and event logs. Check it out here for some inspiration if you didn't know it already: http://adarkroom.doublespeakgames.com
In any case, it seems like your basic need is easily building UI's. Maybe you could start out with some native Python UI library (https://wiki.python.org/moin/GuiProgramming) or maybe even create prototype as a browser game HTML and JavaScript (or React...) if you're comfortable writing that.
TLDR: Dump a .dot file which describes the chain of events, and visualize it with any viewer (e.g. graphviz)
If you have this organic growth in your events, I'd suggest debugging via writing a graph as-you-go, for example using the dot language. At every chained event, add a node in your graph (could be as simple as a line "event_x -> event_y"). At the end of your frame, you'll have a nice graph, ready for visualization using whatever software, I like graphviz.
When I looked into this, most sources pointed to nwjs as the way to do this. I haven't used it, but that's where my research lead me and it's where I'm going to start when the time comes.
Labyrinth of Legendary Loot (itch.io)
First time post! This game was released a month ago but I've never shared it here before, mainly because I felt the previous updates weren't significant enough.
This week I've mostly worked on two things - first was the Android release: Link. I didn't make it free because I didn't want to put ads or in-app purchases on it.
The second one was better mouse support - Abilities can now be targeted and cast with a mouse. I've also added basic directional movement (no pathfinding yet) with the mouse. Basically everything required to make the game completely playable with a mouse alone.
Asterogue | chr15m.itch.io/asterogue
Until the end of October I'll be working on this sci fi coffeebreak roguelike. It will be released on Android and Windows on October 30th.
Story: You discover a hollow asteroid filled with procedurally generated mines, facilities, alien creatures, and space-loot.
I'm starting with my previous coffeebreak roguelike Central Park Nanotech Warlex as a base and building on it. What I'm working on:
If you want to follow along I'll be posting here and on the itch page above!
I'll probably never have a chance to do this myself, so:
The player issues commands each turn to each player on their team, skill checks are used for successful passing, shooting, etc. The game works out each turn, representing perhaps about 15 sec. of real time, simultaneously with the opposing team. I'm thinking gameplay is closer to 1989's Face Off than the EA Games series.
Ganymede Gate
I have a trello board for the game now!!
Also, went overboard and have now 7 variations on the MP9 model. Will post some pics tomorrow, too drunk to post atm (wife had birthday just today).
The update is picking up speed now! Most of the structural changes are done, now I'm going through the existing code line by line, fixing the remaining issues. It's easy and boring, 99% of the problems are fixed in seconds, but there's a lot of code to check. I'm also using this opportunity to do some clean-up and sort some very simple TODO items (stuff like allowing the player to swap places with guards, or making the auto-eat method prioritize decayable food).
That should be done by next week, then there's 3 more things to do before I'm done with this monster of a refactoring:
Make location-specific timed events work when their target location falls off the active area (like an ice block which is scheduled to melt in a few turns, but the player moves away from it, so that area is no longer active). Should be straightforward.
Fixing stairs. And while I'm at it, turning stairs into proper dungeon features, similar to doors and such. That should make their code much simpler, and allow for some more possibilities, like multiple stairs per level. And it should make it easier to add portals to other areas, later on.
Re-enabling saving and loading.
Hopefully this should all be done early next month. I can't wait to go back to adding new stuff!
If it has different attributes and behaviour than a normal rat, then that's ok.
If it's just like a normal rat with more health points, then hell no.
An example of this done well is POWDER. It has mice (very low hp, low attack, simple behavior), rats (more hp and stronger attacks, more random & aggresive behavior) and giant rats, which can even wield armor and weapons.
Most of what Factorio does is clever smoke and mirrors.
Those moving belts you see actually aren't moving at all. What's happening is their sprite address is pointing to a space in memory that is perpetually having a belt animation playing. When you have a map full of belts, all that's happening is a map displaying pointers to the same belt animation, so in reality you are just seeing one belt as a mirror image. (Of course, various orientations of belt are separate bits of memory.)
When it comes to moving items on that belt its complicated. None of the belts are being polled as independent entities thinking, "Is there an item to move? Okay, I'm moving it." Instead, the items are just moving along a line predetermined by belt orientation, and that's just one of many ways in which it's being streamlined for performance. As far as the game loop is concerned, those belts exist in a state where they have to be iterated through as little as possible. This is the goal for all gizmos, they make them all "tick" as little as possible, using tricks to remove them from the game loop.
Basically what I'm saying here is, to be the most efficient, you end up thinking outside the box. It's not that you need to update huge amounts of data, it's that you need it to look right to the player. Optimizations abound, but don't think they had to come up with all those optimizations at once, the game has been getting worked on for years.
Project Kaneda
What previously was Untitled Cyberpunk Roguelike now has a working title! Eventually I'll come up with a real name but Kaneda works for now.
This week I experimented with SFML and got basic tile rendering with color tinting working. I've chosen to use C++ to code the project with since that's the standard SFML language and I want to get more familiar with it anyway.
I'm hoping to finally be done with rendering and move on to some game logic this weekend. I want to create a prototype for the combat which will have a heavy emphasis on sneaking through unlit areas.
This is looking amazing, nice to see you're working on another set which I'm sure will enable the birth of some new games. Must be nice to see devs picking up Dawnlike, too :D
Is this set going to be about the same size? What palette are you using?
For anyone who doesn't know, /u/DragonDePlatino is also the creator of the DawnLike tileset, which /u/BoredomCalls is using for Roggle, for example.
Veins of the Earth - LOVE
Refactor Map:display so that it calls Map:displayActors(), Map:displayObjects() and Map:displayTerrain() instead of being a giant function in itself
Spend a day and a half trying to implement isometric map by myself, then remember the STI (Tiled map loader library that can also do isometric). I failed at integrating STI with the existing project, so I created a new folder, put STI in it and started ^almost afresh.
Current state of isometric version - pic
LOVE file of isometric version
The isometric version is missing the FOV as well as most of the GUI bells and whistles. But you can move and see the AI move and hit them.
Today I'm going out to a local con to see some friends, some of which I haven't seen in a year or more. Tomorrow I'll try to get a grip on Gamejolt and TIGSource forums - I seriously want some feedback on the game and the ideas.
Incursion
It has a outer map size of X by Y for each level. This is sub-divided into equal sized panels. Each panel might have a room type spawned onto it, and tunnels are made between spawnings. In addition each level has streamers in the form of chasms, rivers and similar things. These might stream across the level.
Panel spawned room types are defined in several ways. There are themed entries in the form of rooms of a certain standard shape, with standard spawn tables for monsters. There are hand-built sub-maps that are spawned onto a panel, like the entrance room. If you've played Incursion you can probably remember lots of the room types, like a library, a room full of graves and so forth.
Rooms may contain selections of randomly placed features. Feature selection may be defined to happen on different depth levels. Room type selection may be defined to happen on different depth levels. Monster spawning similar. The entrance room of course spawns on level 1, and it has a feature in the form of an entrance which is especially tagged. And the location of the entrance where the player spawns is searched for and used wherever it is spawned.
It's all dynamic and driven primarily by scripts written in IncursionScript.
Having not written it myself, I think it's a very impressive system. But despite being in an engine which has a design which was eventually intended to be a combination of an open world RPG and a multi-player D&D type game.. the map generation is very bound to the standard roguelike dungeon standard - start at level 1 and go down, gets harder. Same generic stuff spawned on same levels - no real depth in the content sense but it has the illusion of depth with monsters interacting with each other on the same level as well as themed messages that pop up when you enter a tunnel or themed room or whatever.
Blef: Giv'em the ol' puzzle dazzle
We've finally launched!!!
You can play it on itch.io or PM me for Play Store keys!
So, it's been a while... I'm finishing my degree and no, I haven't been crying blood for 3 weeks straight, haha.
Let me reintroduce Blef: we started building a roguelike, but we really like puzzles, so we ended up building a sort of a hybrid game. The idea is that the player can choose to play like a regular roguelike and simply kill the monsters trying not to die, or try and beat the levels without taking any damage, which would make it more a puzzle game.
Since last time we've fixed a lot of backend problems like:
rewriting how all the animations are handled
resolving scaling issues (I think the UI is still a bit small, but at least it's consistent across devices)
Sadly there isn't much to show, except the lack of random crashes, and the AWESOME FINALE!
We changed the order of the levels, but the feedback has been mixed: some people like the order, others got stuck for 20 minutes on lvl 2, which is definitely not ok.
We're also working on alternative input methods, like swiping. We still prefer the "press the right side of the screen to move right" method, but quite a few people complained about it...
Last but not least, we have a few new levels that are almost ready!
About monetization: we decided to sell the game at a low price (lowest possibile on the play store) and it's been pretty great, in about a week we've made almost enough to buy us a beer!
Even if you don't follow those rules to the letter, there is some good wisdom here. If you're coding in C of course it's going to be tough to limit yourself to such strict guidelines. Here's my take on "Clean Code":
If you keep these things in mind, you won't have to write as many comments because it will be more descriptive on it's own. Of course, comments are a tool. Use them where appropriate.
That said, I'm OK with tutorials that over-comment. Especially beginner tutorials. It's tough to gauge how much experience a potential reader has, so it's better to err on the side of over-explaining.
Clean Code. I restarted working on my roguelike after a month, using the python tutorial, and couldn't understand what was going on. Now I have it with clean code and it's glorious. Also the python tutorial for lubtcod is not very good when it comes to being pythonlike and being good coding.
Second thing is version control with a local git repository.
Got very busy with my summer class so I haven't had much time to work on this. I had a few minutes to spare so I'm currently working ranged attacks and want to begin to implement some AI for the enemies.Unfortunately my character can't equip a ranged weapon, I must have implemented something incorrectly from Trystan's code. If I can get this sorted out and get ranged attacks working I'll be happy with the progress for this week. Cheers!
edit: Got ranged weapons working. I also added some wandering AI from Trystan's tutorial but my enemies kept attacking themselves.I have that worked out also. I've been starting to use Git and following along with the Git book mentioned by u/SickWillie
It's an open source game engine that can do both 2d and 3d. It's progressing pretty well and is pretty powerful for being a free engine. It's programming side is similar to Python. More info here:
Battlemage
So, um, I released 1.1.
At first my plan was to make the premium unlock (which has the survival modes) free for a limited time as sort of a promotion. But then I discovered that you cannot set the price of an in-app purchase to zero, nor can you create a "sale" for it. So I just ripped the entire iap stuff out of there and the game is now essentially free. As a consequence I also lowered the price at itch.io to zero. In the end I decided that I'd rather people play the survival modes, which are arguably the more fun modes, and where I've made the most improvements in the release. The small expected earnings did not justify limiting it.
Oh, and I made the android apk available on itch.io.
Battlemage
I have released Aldarix the Battlemage version 1.0 on Google Play!
The past week was mainly about playtesting and minor level adjustments. And then, yesterday, I decided that enough is enough, and pressed the release button. You can find the game here:
I also spent some time emailing promo codes to game review sites. Will be interesting to see if that leads to anything.
Finally, a huge thanks to /u/widmo and /u/kyzrati for feedback and support! And to all members of this sub for your general awesomeness!
Such rigid rules do not make sense. I've read the Clean Code book and everything written there is just guidelines. You need to make sense of them. It has no use if you create a new method just because the previous one exceeded 6 lines. Oh my god...
Yōdanji
(man, having links feels good!)
The biggest addition this week was a new Picnic mode, which is basically Hunt, but easier in the long run (folks not familiar with the game lingo - sorry!). Getting new yōkai proved to be more challenging for players than expected, and after 5 days of leaderboards filled with only starter yōkai I've decided to make it a bit more manageable by gradually handicapping enemies as the game progresses, at the cost of reduced score. Judging by the leaderboards these days, the job is done well enough (sidenote: global leaderboards provide cool feedback for developers).
Other than that, hotfixing embarrassing bugs in a hurry. Thanks to the roguelike nature of the game, some of them were mistaken for features. As in, doing certain things would cause item descriptions to disappear, which, to the players, looked like it might be an identification mechanic of sorts.
In other news, iOS version has been trudging along nicely. A couple of hints for posterity:
unlike Android, iOS default framerate is capped at 30fps, but that can be changed with Application.targetFrameRate
encoding music in mp3 gives massive performance boost
no "exit application" buttons as per Apple's policy.
After yōkai hit the bitten apple Japanese release should follow, but we will see about that.
Cheers!
hexagonal.space Going to be going for a slot based component design.
Silhouette Is more traditional fantasy, still thinking of design/balance, but the base idea is instead of mana the magic user gets stacks of feedback. As the stacks of feedback acrue, bad things might happen based off the number of stacks, skill, and difficulty.
I want wizardry to use an external mana source, while sorcery is internal. I might let wizardry casting be 'free', but then it either needs to collect mana over time, or have it channeled in.
Playing around with the idea in my head of external mana being a randomly generated Conway's Game of Life that progresses every ~15 minutes
RogueAgent | v0.0.16 Roguebasin
Fatherhood and dev work continues. I had to rework my rendering code. The interfaces were clumsy and weird, and impossible to debug.
The new version is cleaner, easier to inspect and seems to run at a decent speed. As an extra bonus, I can test having multiple cameras of the same world simultaneously on screen. An entity can have only a single camera attached to them, but other cameras can be set to follow that entity, achieving much the same effect without making the ECS more complicated.
The only problem is that "chase cameras" like these lag a little bit. "Following" Location components update themselves in the Location system update. There's currently no Event manager so input and this location update aren't in sync. It's not a killer, but something to fix up later on.
I've drawn a line under the conversion from libtcod/bearlibterminal to Pygame. I'm pretty happy with it, so will look forward to implementing something closer to gameplay.
In the design space, I've been pondering how I'll make the moment-to-moment gameplay fun, as well as the campaign-scope gameplay. I definitely want gameplay to exist at those two distinct levels: quests would be mostly self-contained, but your choice of quests and how you complete them have global impacts.
As an example, I liked the moment-to-moment action and quest choice in Heat Signature, but the campaign-level was neither here nor there for me.
A fairly elegant way to load new maps is as a 2d array (list of lists) like you have, but wrapped in a class so that you can access tiles with a method such as map.get_tile_at(x, y) rather than needing to use primitive accessing. As for loading from file, it's rather simple since you have most of the code there. I made a little template here: http://codepad.org/CQxdnfSU which should hopefully be fairly easy to implement.
As for breakable tiles, the way I do it is to have a break_tile_at(x, y) function in my map wrapper class which just rewrites the tile at whatever position to set it to air (or rubble, or anything you want) and then just call that when the user tunnels.
Level transitions are as simple as replacing the 2d array in the map wrapper and re-rendering the map. You will also have to update the player's position so that it makes sense in the context of the new map.
I didn't look through your code much because it's quite messy so I don't know how you're handling transitions, but the way I usually do it is by storing map names a things like 4_5.txt, 4_6.txt, 3_6.txt so that the numbers correspond to x and y coordinates on a "super-grid" of maps and simply change one of the numbers in the filename when I reach the edge of a map, then setting the player's position to be on the other side of the screen. Otherwise, you can store portal locations for things like houses and caves in the map .txt file on the first line and skip that line when reading characters into the map in memory or have a separate file that stores map portal data that you load once at startup.
> Visual Studio is a fully integrated IDE and built primarily for .Net and C/C++ on a Windows box. While it does provide one implementation of the Python language spec (called IronPython), it's generally not the standard use case.
Visual Studio Code isn't Visual Studio.
Thanks for the rest.
Fallen Hello, fellow developers!
Dev plans: https://trello.com/b/mfWqz3Of/fallen-the-roguelike
While %APPDATA% is for application data (and binary installation should not go there)*, it's totally possible to have a portable (doesn't modify host PCs configs/settings/files) JRE. One example is here <https://portableapps.com/apps/utilities/java_portable>.
And you don't need a browser to run JavaScript, either. You can bundle that stuff too! Check out eg Electron.
I recommend posting a screenshot, perhaps even linked inline in your Readme.md on github, or a gif of you playing it. This way people can see it and comment without investing time to build it themselves.
> No screenshots as I'm out of town ~~looting dungeons~~ shopping for furniture
I get the feeling that if I ever visited your house, I'd need to be on the lookout for traps ;).
> how to record animated gifs
Super easy: Download this, run it, select a screen area, record!
Awkventure - repo
Finished this weeks features. I'm starting to run into some obstacles with awk, definitely now that more complicated algorithms are required (such as pathfinding). A* would be rather hard/annoying to implement in awk, so for now I've just made all monsters move in the direction of the player, with some randomness thrown in for good measure. As it stands now, the game doesn't really need any good pathfinding, especially with the small rooms and limited fov.
Other than that I've also added basic melee and ranged combat. Dead enemies leave corpses, and if the player dies the game ends. There's a message log now, which probably needs some more work to make it intuitive to read. The interface has also been improved.
I'd first try out hy2py and then cx_freeze. It's unclear whether py2exe can create an executable from the pyc files that will be outputted from hy2py.
That doesn't solve the last three points, however. My suggestion would be to write/find a virtual terminal library. It's not terribly hard and you could use it just for the windows port.
I use a utility called Launch4J to bundle the JRE for EverSector. Only supports Windows executables, but the utility itself can be run from any platform. If you come across any good bundling tools for other platforms, I'd be interested in hearing about them!
Unnamed Project
I see we've already got a new project here in Age of Transcendence. I'm also new, not just to creating a roguelike and this subreddit but to reddit overall. I'm working on an unnamed project and since we all have to start somewhere, I'm currently in the research phase. I spent the week doing a lot of reading and not much else. This Roguelikedev subreddit is truly an amazing place.
The first choice I had to make is which language to work in. I've been a software developer for many years now, originally starting in Delphi then moving to C/C++ and these days mostly C#. However I've decided to go with javascript. It's a language I use occasionally but am not entirely comfortable with. It'll give me a chance to get better with the language while creating a roguelike as a hobby.
Cloud9 combined with Phaser makes it possible to develop from anywhere which is ideal if I'm out somewhere with my tablet and having to wait for something.
So I've decided on a language and some tools. Otherwise not much and haven't started. That will happen this week.
Haxe with Haxeflixel. Haxe is a great language with some fantastic features, Haxeflixel is a solid 2d game engine with built in tilemap functionality that's built on top of openFL, meaning it exports to html5, flash, windows, android, ios and more. The workflow suit me well and it's totally open source and free.
ZomboTropolis (Zombie MMO for mobile) Github
Been adding the final touches to my class refactor for every object in the game. This update has been a frustrating slow few weeks, but I am satisfied with the how much cleaner my API is. I have most of the refactoring knocked out, but there are a few loose ends remaining. By next SS it will be completely finished and I can work on new features!
A had a big discussion regarding combining the three on the Love2D forums and the issues I was having in my game. Fortunately, I have solved most of them in a sane manner. The discussion other developers might find useful if they find themselves confused like I was!
1.0.0
release and launch.10% Items
, 10% Abilities
, 5% Equipment
, 5% Locations
Task | Progress | Completed |
---|---|---|
Skills | 80% | 63/80 |
Abilities | 50% | 07/12 |
Items | 60% | 24/35 |
Equipment | 20% | 00/03 |
Locations | 45% | 10/23 |
Draft for Android can sync to Dropbox: https://play.google.com/store/apps/details?id=com.mvilla.draft
You might want to look into todo.txt for structured note taking format ideas: http://todotxt.com/
I'm a big note taking nerd but I've moved away from apps which railroad you into a specific workflow or data format.
Eventually you get restricted by using one format or another, and apps which hide their data in some proprietary format are risky, if the app has a fault that keeps you from your notes, it's as good as not having notes at all. All cloud-syncing note services I've used have come to an end and it's a pain to migrate to a different service.
DDDDD
Defeat the Demon Dwelling in the Darkest Depths is a roguelike for Android. It features 9 different classes to play as, and dozens of dungeon floors to explore. Any loot you find along the way can be sold to the in-game shop or auctioned off for other players to purchase.
The game features optional permadeath. If your character is killed in a non-permadeath run, then they will resurrect with their stats intact, only losing some money and a couple of items which you can retrieve by returning to your grave on the floor that you died on.
Ruins of Marr
This week I took a break from debugging my replays and worked on adding new content, and a much needed feature.
My input system is now refactored so everything boils down to a command, and each unit has a command queue. The command may or may not end the turn depending on the context of the command. It's working really well, but as mentioned above - replays still break eventually.
New Content
New Features
As always, you can check out the game on Google Play, follow me @RuinsOfMarr, or post any questions/comments below!
Clean Code is a coding approach. It does produce better, more readable code.
Some basic rules:
Now, python tutorial for libtcod does some really haram stuff, e.g.:
Bottomline, if, like me, you used python libtcod tutorial to get your first major coding experience, you got a lot of really bad, bad, bad habits. I'm lucky enough to have access to Clean Code videos at my workplace, since they're considered a part of onboarding/induction. Just following the basic principles already made me write way, way better code.
Have you ever tried SICP (Structure and Interpretation of Computer Programs)? It explains things in a very unusual way.
As for your project: I'd go with what the above poster suggested. If you can't program then put together specs, rules, etc. Create a GitHub organization, or use Google Drive. Advertise your project and if it is a good idea people will come. Keep it open source so more ppl will contribute to it.
Surprisingly, EverSector isn't heavily inspired by any games, and only borrows elements from some. The menu and window system was partially inspired by those of Cataclysm DDA. As for the content, I've been inspired by aspects of FTL, Caves of Qud, Limit Theory, No Man's Sky, and even an old BSD game called Trek. Moving forward, I'm hoping to implement a faction creation system that should be somewhat like the one in Dwarf Fortress adventure mode.
I've also had some ideas for a highly procedural fantasy wilderness game. With only few other humans, I shouldn't have to simplify complex interactions in worldgen. Instead, the game will mainly revolve around procedurally generated plants and animals, along with their interactions. I've thrown together a Trello board that outlines some major features of the game. Returning to the topic of inspiration, I've taken a fair amount from Dwarf Fortress for player controls and NPC interactions, specifically conversations. I also recently tried Ultima Ratio Regum and am looking to implement a FOV system like it has. One last idea is a wound system somewhat similar to both DF and URR, yet even further removed from the idea of hitpoints or body part damage. Each wound leads to a loss of blood, or impedes specific functions. Listing wounds would show a list of injuries rather than body parts and their condition. This system also removes several odd circumstances that could result from a shared hitpoint system, such as a series of shallow cuts leading to broken bones. I'll post more information about this game over time, though it is definitely still just a "talkie-talkie project."
I've found that it really helps to keep a list of things to do. I use a Trello board, but it could just be a text file. Try to have at least a few small, concrete tasks in there along with the bigger long-term goals. Then, when you open that IDE you can dive right in and get working on something specific.
Even if I don't initially feel like working, having just one small bug to fix is enough to get me going. Once I start typing, one thing leads to another, and that five minutes I was going to spend ends up being a couple hours. :)
> You do have morgue files, right? If not: Why not?
I was going to say that Robinson doesn't have morgue files, but then I thought about it for a bit, and I think I do. On player death, if possible, I upload the main save file to a save server. The intent is to collect metrics about win rates, monster kills, and item usage, etc, but I haven't checked up on it in a rather long time. At some point in the future, it will be used to grab highscores and weekly challenges and those sorts of things.
One of Robinson's v0.2 feature sets focuses around scoring and community interaction. Here's what I have in my notes:
Scoring
Add end of game score to local file (scores.edn)
Add local scoreboard section to game over screen
Add "view your score compared to online players" option.
Add online scores screen.
Add histograms based on win or loss:
Number of turns to win or number of turns to die.
Number of monsters killed
Number of cells harvested
Number of items crafted
I like the SpaceChem performace stats and plan to base the feature set around that concept.
Another user whose name escapes me had an interesting idea that capitalized on the message in a bottle idea that fits so well into Robinson's theme. I'd like to revisit that idea at some point and it may tie into morgue files in a way.
Xenocide started you off in a space shuttle filled with cargo, crazed crew, trash and monsters. The generation algorithm (for shuttle itself) is publicly available as part ot RoguelikeLib. If you would like to get at version with items you need to grab Xenocide sources at Chaos Forge.
Silhouette (working title) is a multiplayer-survival-roguelike. It has a dual emphasis on skills and stuff, with many skills devoted to resource gathering, and crafting. Very few if any items drop from monsters (though some resources come from mobs).
For the lazy or cellular: Ccby4.0
Under the following terms: Attribution
You are free to: Share — copy and redistribute the material in any medium or format Adapt — remix, transform, and build upon the material for any purpose, even commercially.
Mild preference for splitting up here. Currently my game written mostly in D has 89 core files ranging from 9 to 713 lines each.
Whether I am satisfied with file size depends on its contents. For example map_bsp.d has binary space partitioning generators for my levels but nothing else. It is 476 lines long and I am fine with it. On the other hand the mixture of attacking, creature removal upon death and movement code (yeah, I know) present in combat.d displeases me despite it has "only" 361 lines.
Second factor is how the file grows in complexity. My two biggest files are message.d at 664 lines and user_intf.d at 713 lines.
It has not been released so I cannot offer you a ~~Git~~ Mercurial link. Not sure what help it is but if you are curious I have put list of source code file names here: https://hastebin.com/raw/acuzawojey
I've done this in my game using javascript, it's actually simpler than involving player controls. You could have a simulate() function, that does the following: 1. Picks the next actor from a queue 2. Calls nextAction() of the next actor. 3. Inside the actor.nextAction(), implement the actor actions. I use a Brain object inside each actor to make it more modular. 4. Push the actor back to the end of queue.
I created a sample codepen here: https://codepen.io/tpoikela/full/PePxeo/ It does nothing but demonstrates 2 actors moving towards each other. You have to press Simulate for each turn, but you could start a simulation using requestAnimationFrame().
I also recommend looking into Rot.js. It has excellent documentation and functions for path finding, FoV, scheduling and level generation to get you started.
>So... when you go searching for my game on google, are you just searching for Cataclysm?
Might have done that, oops.
​
Now that I actually found your Roguebasin page and /r/roguelikes post, some more feedback: I really like the direction you're taking your game in, as far as features are concerned. Regarding PyInstaller problems, I can't help since my own Python game refused to get packed by PyInstaller at all (bearlibterminal + libtcod + jsonpickle).However I can't give any more feedback as I'm leery of downloading random .exe files from mediafile. You might want to consider zipping up your build before uploading (so that the .exe extension doesn't scare people away) and/or looking for a different host (even slapping together a Wordpress site would be better than mediafile and the like, you could also consider itch.io or IndieDB or some other indie dev site)
Create a dedicated user on your system and set its login shell to be you game. Setting adequate permissions for that user should ensure that nothing bad can happen even if they break out of your game and get a shell (no need to first start a shell and then you game).
Thats the same way you setup a git server: https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server (Aka creating a dedicated user and setting its login shell to git-shell)
It’s possible to do something like this, but really difficult to make it usable. You’d need to also duplicate a developer environment. There are at least a few examples out there for ssh and python repl in a web browser. As an example: https://repl.it.
However, I am not aware of a company that actually both gives you this capability for free and allows you to install arbitrary binaries like libtcod. Additionally, I am not aware of any company that gives you an in browser IDE with the above capabilities.
So you’d need to build it on your own. Seems like a rogue like at home with a less restrictive environment is just far easier.
I recently improved upon a project I made this past semester. It's a text-based game based around a huge grid of rooms to explore. I call the improved form, "Rooms 2".
I'd like feedback from someone. I copied it to Repl so you can play it in your browser: https://repl.it/@dustinchiasson/Rooms2
I went with a few finite state machines for guards and predators and pets in my last couple of 7DRLs. It's been a pain.
An age ago I tried to make some AI from genetic programming. Bots that would teach themselves how to shank each other. It didn't work. I set them upon each other and their parameters for victory kept changing as soon as they learned how to deal with each other. It kept them really stupid. I could strong-arm them into learning their own pathfinding, or learning oh so simple feats like "don't step into the sword and commit suicide", but not at the same time. The most advance tactic they employed was "spin the sword around them in a circle and move to the right".
To add a little bit to the other commentors' ideas:
I remember playing a really funny hentai game that had an interesting premise. You start out really strong- kicking everyone's ass. Then you get cursed and lose all your power (essentially starting at lvl 1)
found it: http://www.old-games.com/download/3977/knights-of-xentar
> Constructive criticism is also welcome!
I don't think I could criticize the software itself without trying a project with it, but can I critique the description? I thought it was pretty confusing that it's called a terminal emulator. See exhibits:
A few months back somebody was posting here about an idea they had for a terminal emulator for games, which would have features like popup menus for the game to use. From the description, I thought Zircon might be something like that.
I can't think of a standard name for this sort of thing, but "simulated terminal" sounds good to me. BearLibTerminal uses "pseudo-terminal" which also sounds good.
Ok, I got InvPortable compiled on linux. NuGet didn't install Newtonsoft.Json
because the targetFramework option in your packages.cfg doesn't include linux as a target. Expect a merge request soon to alleviate this.
Have you heard of monogame? It uses OpenTK, compiles to all the platforms you want and more, and is the successor to XNA.
XML has complexity you don't really need for the structured data case. The whole document model where you put tags in between content only makes sense for hypertext, not simpler structured data. Also I don't like the verbosity of having to repeat every tag name. You can work around that by using attributes instead of elements.
Now that I'm thinking of attributes, I'm less sure what I think. There are some interesting examples here. The "menu" example is downright nice, but the "web-app" one becomes a horrorshow in XML. Maybe the problem with web-app is that the keys in the "init-param" list are considered data instead of attributes from a fixed schema, so they need to be done using elements instead of data? Still, it could use <param name="foo" value="bar" />
instead of the five lines for each, so I guess it's a bit iffy example...
Also, roguelikes do use a lot of text, and it often gets procedurally processed somehow, so you might find XML's hypertext document features useful as well.
(What I'm actually using right now is neither of those, but RON is specific to Rust so it's not very useful in a C++ thread.)
Robsinon
This week I made a v0.2.0-RC3 build that just includes an updated version of Zaffre. I discovered three bugs in a playtest shortly after that.
Zaffre
This week I started tileset support and got this guy loaded up and working along with almost arbitrary ttf/cp437 fonts (the glyph/tile sizes have to match). The library will automatically pack fonts and tiles into a texture atlas and then allow drawing by character or tile-id, it's pretty nice. I'm adding layer transparency next with the help of OpenGL array textures which will open up the ability to do both glyph stacking and tile stacking with transparency. After that I'll be trying to tackle half-width characters which should be interesting.
I'll throw in for my personal favorite, bearlibterminal
for the graphics library and D for the language. D is like C with classes and some high-level concepts thrown in (real strings! mixins! compile time functions! -betterC
!) that make it a great successor to C.
D's VSCode support is great with webfreak's extensions and /u/Elronnd has written a good wrapper for blt. I use VSCode on Antergos GNU/Linux for working on my D projects, including my roguelike Derelict.
Wrapping the update(), on the other hand, solved it. I now have a while loop that breaks on player.turn, so every actor is processed in a single update(), only moving on to draw() during the player's turn.
If I'm reading Love's engine loop correctly, it cycles between input processing, update(), and draw() in a loop, so that at least is consistent.
Angador (https://play.google.com/store/apps/details?id=de.joergjahnke.dungeoncrawl.android.free&hl=en_IE)
In yesterday's release I made the monsters that have normal intelligence (i.e. not skeletons and the like, those don't act so smart) a bit smarter in combat. If possible they now make way for their comrades, so that those may also reach the hero. What I also changed is that one of the game's main leaderboards was reset, so that a fresh leaderboard gets started. The old scores are now contained in a "Season 1" leaderboard. The rest is bug fixes and smaller improvements.
Angador (https://play.google.com/store/apps/details?id=de.joergjahnke.dungeoncrawl.android.free&hl=en_IE)
The startup time was reduced by loading resources in parallel. Second thing I did was adding an adaptive frame rate mode, so that, if no changes happen on the screen - e.g. when the player is thinking about where to move the hero next -, the frame rate drops to 10 fps. This helps saving battery.
Angador (https://play.google.com/store/apps/details?id=de.joergjahnke.dungeoncrawl.android.free&hl=en_IE)
I found a volunteer who translated the game to Russian, so that the complete game UI is now localized to Russian 😀.
Angador - the dungeon crawler (https://play.google.com/store/apps/details?id=de.joergjahnke.dungeoncrawl.android.free&hl=en_IE)
I reworked the balancing of rewards. When a hero opened chests with loot, he would mostly find weapons and armor that heroes could use early on in the game, like short swords and leather armor, even if you opened a chest at the deeper, more dangerous dungeon levels. So you might find a legendary dagger deep down in the dungeon. That was nice for selling, but for nothing else. At lower levels and for a more powerful hero, you would want to find a great sword and a dwarven plate armor or the like, which your hero would actually use and not only sell. So now these more powerful types of weapons and armor will drop more often in the deeper dungeon levels.
The other thing I worked on is performance. Not for the first time, but it's still surprising that again I could find some areas where I could improve the performance significantly, so that the game will run better on old and slow phones (the game works on devices as low as Android 4.4).
That's it for the last week
Found this a really interesting book on procedural generation, and it might be helpful in thinking through different approaches to your vision:
Definitely think it’s feasible, and finding a good loop and honing it down would be a fun challenge.
I write all code to be read and maintained first and foremost. The more you have to keep in your head the heavier that burden is and the harder it is to work on it. I also strongly recommend the book "Code Complete 2" by Steve McConnell. I re-read it every year or two and come out a better programmer every time
For Robinson I ended up re-implementing this code in Clojure. It's actually a cljx file that targets both Clojure and ClojureScript which I think is kind of cool.
I seed based on time, but allowing the player to enter a seed, or grab a seed from an external server is on the roadmap. I'd like to have daily, weekly, monthly challenges where players compete using the same seed.
It is important for me for the desktop and browser builds to have gameplay that is as similar as possible (if not identical), and relying the native random number generator of the target platform is not aligned with that.
I also wanted the random number generator state to be (de)serializable. Neither native generator had save/restore semantics. Both of these concerns led to me writing my own.
According to the comments, the algorithm is "a linear congruential pseudorandom number generator, as defined by D. H. Lehmer and described by Donald E. Knuth in The Art of Computer Programming, Volume 3: Seminumerical Algorithms, section 3.2.1."
What's interesting, is that the comment is actually incorrect. Volume 2 is Seminumerical Algorithms while Volume 3 is Sorting and Searching.
Retro Rogue
https://play.google.com/store/apps/details?id=com.mcietwie.retrorogue
Released in 2014 for Android. It was my first Roguelike. Mechanically it has extremely simple bump-to-attack gameplay. I've spent the time on polish and smooth animation. I've completed it start to finish in about two and a half months. It was made from scratch in C++ using OpenGLES and OpenAL.
It did alright on Android, I've sold roughly 1,500 copies. I'd like to share with you nice folks to provide a bit of inspiration, keep your first game simple, polish it up, and release it. There is a lot to learn from doing a whole game start to finish to release, even if it is simple underneath the surface.
This is a $1 paid game, but here are some codes! If you decide to use one of these please call out which one you've used. I'll add more if they run out.
~~P668JFQPVFG6UTHTEHLHPE1~~
~~AKSUSASPZ6A6KBJAVRVG63B~~
~~HEB2NXFXGTQ4CL97NL4V68V~~
0LHXC4LEPFSXYQC8D71QN0S
KYVTJ04UR683AZKV5XNUTP8
~~26MUKTDR75Z0TXCRTBFT73C~~
BME12CDWVWTCHG7ECVL0JGP
~~8G1YNZ9GWZMP99YDL3V7C3B~~
56251S3QNNQRA0FTB2866PN
75CER0237L2SHS0JUETBR57
I think, yes. You can go offline with aide. Or you can use rot.js for in-browser development.
But a tablet has uncomfortable keyboard and tiny screen. You'll be much better investing in a cheap laptop. Nowadays, they are cheaper than a tablet - for example, my SO's 15" Acer is 300 euros and a decent 10" tablet (Sony or Samsung) is 500-600 euros.
Thank you! It took me a while to find one that I liked.
I ended up combining a modified version of Rogue Yun's Simple Mood Tileset with MortMort's SoftMilk32 Color Palette.
> Anyone got great ideas but no time to make them?
I brainstormed a sailing idea earlier. Definitely not enough time though. If I moved quick I could maybe get the desired water animation working =P
We've been doing this crazy multiplayer roguelike called ExiledRL, and wanting to buy the Pro-D package. How extendable is the Pro-D anyway?
Edit: Apparently it's my cake day!
Souls Rescue
Between next sunday and monday we will release the Souls Rescue Alpha 5
What’s new:
Redesign the structure of the dungeon
Before the alpha 5, our dungeon was a stack of 1 map for the entrance, 3 maps of Crypt, 2 big maps of Tropic, 2 big maps of Ice and 3 maps of Void environment. When we tried the game I fell asleep. The game was too boring. We decide to redesign the dungeon : 1 map for entrance + 1 map per environment. The game is smaller, but more interesting. Each map contains monsters of 3 different levels. Always check your life
New features
We look forward to delivering this new version.
available
Previous alpha 4 is available on :
-Thierry
I'm a bit surprised no one has automated SS commenting. A number of devs prepare their comments in advance and automating is simply a matter of connecting A to B.
The rss feed of SS posts may be a good starting point.
EDIT: I should also include the IFTTT recipe for getting notified of new SS posts. Though it is usually an hour delayed.
That's a can of worms you're opening. :)
>Do you have some kind of idea of how many people are playing GKH?
Active players? Probably around 0. I have had a handful of people approach me over time and say they really liked the game a lot (including Z, who game me a boatload of detailed feedback), but otherwise I don't hear anything for the most part.
It's tough to keep at it without any active players, but I'm thinking I'll get that once I'm on Steam.
>Just curious, since it started as a 7DRL and went through FF, and I got the impression it was close to done, but you just keep adding more good stuff to it :D
When I first considered Steam, I was planning to ship the 7drl version more or less as is. But the more I thought about it, I realized the version I had wasn't really good enough for a commercial release in my eyes. I polled some people on the roguetemple forums and almost everyone said it would be great on steam except for one person who said:
"My opinion is that Golden Krone Hotel is a real solid 7drl but isn't good enough to justify a commercial release. More monsters and items are nice but GKH's real problem is that it's too shallow. If you can fix that then go for it."
I took that to heart. So the first priority is to give the game more depth and the second is to give it more content. You made me realize I don't have any sort of published milestones, so here they are:
https://trello.com/b/ZktgcUp0/golden-krone-hotel-milestones
The things I'm saving for Early Access are content mainly, things that don't alter the basic gameplay loop dramatically. I guess I'm mostly done with what I had planned before EA and could probably even push off several of those things (the new levels) until after the EA release. I should probably bite the bullet sooner rather than later.
I hope that answers your question.
heaxagonal.space
two commits dealing with my map context menu.
Silhouette
Continued fleshing out the public design page
ProcJam starts Friday! https://itch.io/jam/procjam Experiment on it for the jam. The community and /r/proceduralgeneration has a lot of clever people as well that can point you in all sorts of directions.
Yes! You can also revert back to previous commits just to check things out, or look at differences in each file by commit, or look at a log of all the commits you've made (and what files were changed!) - it's very useful. It's a good habit to get into.
Ha, I'm apparently a huge cheerleader for version control... I replied in another comment about the official Git book - its free to read online, and the first few chapters are all you really need to get goin with Git.
I'm assuming of course that you know to double click a glyph to open the vector editor. If you've never used a vector program before, it can be quite tricky, since it's about the worst one in existence.
To move a shape, use the pointer tool and shift click every point, then drag the whole shape at once. I don't think there is any kind of drag select tool.
Beyond that I haven't used it enough, because it's a god awful UI.
Usually, with a vector program you can't really cut out a shape, you need to draw a new shape and use it as a boolean. You can only cut the splines, and change the whole shape. So to make a star shape with a hole in the middle you would need both shapes drawn separately. I honestly have no clue how to do this in FontForge.
I would recommend looking at tutorials for what you want to do with something like InkScape, and see if you can figure out how to translate that to FontForge's dinky editor.
you don't dump the ones that don't make the cut. you put them in a queue based on their N value, then if a path you follow has a higher N value, you try a different path.
here is the tutorial i followed http://www.codeproject.com/Articles/5758/Path-finding-in-C
to make my own tutorial for unity: https://timeshapers.com/2015/11/25/adding-a-pathfinding-to-unity2d-roguelike-example/
I'd reccommend taking a look at brogue which does this very well in my opinion.
For water the tile color changes dynamically. This is not related to the turns, it changes as well when you're standing still. Not all tiles change at the same time
Well, I'd highly recommend trying it, or at least watching the trailer. It's a highly accessible Android (and maybe iOS?) title that takes a lot of inspiration from Brogue. It's open-source too IIRC.
For those that want to play this on a controller, download this profile for use with Antimicro then bind Moves to the F key and Cancel to the C key and bind X, Y, A, and B respectively to the Moves shortcuts in the controls page of the game. If you hate Mediafire because of their dumb redirects feel free to mirror this file.
Hold left shoulder to hold the Moves button (or as a side effect due to the workaround I did for this, quickly press to toggle) and press the face buttons to select a move. Press left trigger to wait. Hold right trigger to switch the face buttons to the numbers 1, 2, 3, and 4 for the Tactics button and the Leader Switch buttons and switch the shoulder keys to the message log and move menu hotkey combos for left and right shoulders respectively. For the rest, just take a look at set 1 and you'll easily see what the other buttons do.
Looking great! If I can make one suggestion, it would be good if you tried a different font. Fonts like Arial are so common place and overused that they just have a feeling of "prototype" all over them.
Check out: https://fonts.google.com/
Pay attention to the font license for each font though.
Not sure if it's viable in Unity, but my first approach would have been to render a software occlusion buffer. The crap part is that you clearly need to render a cubemap, while software-occlusion testing is fine and dandy for a single viewport I've never tried using it for a cubemap other than really low-resolution to calculate cover.
Assuming everything is cell-based then you only have to rasterize quads (rather than triangles).
Although daunting if never done before it's pretty trivial and the same bit of code will probably travel with you. Here's some code for Monogame's types that renders arbitrary triangles to depth while building a cosine texture (dot-prod) that I use for rendering thumbnails.
Gist is you render depth to a buffer, then project the bounds (or just centroid) of any query into the depth buffer to sample. If you can make guarantees about the order you rasterize in (like: "it will always be an outward spiral") then you can perform your queries as you rasterize.