Anyone got other useful tools for debugging within (neo)vim? Just seamlessly putting down breakpoints, stepping through code execution, and getting a fully fledged debugging UI experience (a la Visual Studio or Remedy BG)? This is possibly the only thing I miss from developing on Windows, and it's a shame!
EDIT: I specified 'within vim' but actually I'd be down for standalone Linux app recommendations too.
Shameless plug, but my development environment [1] may be close to what you're looking for. (There's pictures!)
A couple of details have changed since that post. The only one that you might care about is that I now have two tmux panes with gdb-dashboard. This is meant to use space better. One pane has all of the variables and nothing else. The other has everything else.
If you care about that, I'll tell you how to do it.
This is very cool! I created this small convenience script without the intent to customize `Termdebug` itself, leaving any preferences to the users. But I can see many nice things you added there that can combine very well with the two!
I'm surprised nvim-dap-ui wasn't mentioned yet. It still has less features than vimspector, but personally I prefer the nvim-dap ecosystem. No memory viewer is a bummer though.
So over the weekend I just went through a vim reworking for myself after discovering astronvim. I replaced my config with that one and installed nvim-dap-python through the user template, was able to attach and debug like I was using pycharm in a few hours of tweaking. I really like it
I did have a couple of plugins I cant really live without (ZoomWinTab and A.vim) so Im working on porting them to lua with the help of chatgpt. Really like the experience so far. Def worth checking out astronvim / nvchad
Finding astronvim through this comment and it looks like it may be time to move on from my regular vim to nvim. I like keeping things light so I'll probably just steal some plugins used there but the functionality looks like things I already have except with better UX. Thanks for sharing!
Came here to say pretty much the same thing, except I use the Neovim extension for VS Code. It uses Neovim as the backend and, from my experience, behaves a lot more like (Neo)Vim. It is much easier to setup, since debugging is handled by VS Code. The main drawback is VS Code does not work in a terminal, which is okay IMHO since you still have access to Neovim from the shell.
VSCode with the CodeLLDB or MS C/C++ extensions both usually work out of the box for debugging most compiled languages (so far I tried C/C++, Rust and Zig), but compared to proper Visual Studio it's very bare bones (especially the variable view panel).
Debugging in proper Visual Studio is by far the most pleasant experience I have ever had. Flame graphs, call graphs, memory and CPU utilisation graphs, straightforward call stacks and variable views... FOSS debugging utilities don't even come close to the debugging productivity on VS 2022.
I tried nvim-dap but it is somewhat clunky, unintuitive to use. Turn out that that using delve, gdb, pydb directly on the command line is fine, I don't really need editor integration.
termdebug (used by the tool linked in the topic) basically does this for anything you can debug in GDB. It's the tightest integration of debuggers and (neo)vim I have used.
There are also DAP-based integrations, which I have put the effort into using.
I think the official Zig website already does a good enough job at expressing what the the language has to offer, to the extent C devs can read a couple of pages and know whether or not they vibe with the language. The only thing it's missing is quoted praise from its users.
I can't really comment on the nuances of the sound, but a digital piano will allow you to plug in headphones which is - in my opinion - invaluable in a home environment.
I missed UO's hayday, but when I've played the big modern MMOs I find myself instead attracted to the idea that individual characters shouldn't be able to do everything. I feel like forcing players to interact if they want to gather specific resources or craft vital items would really help a game feel "massively multiplayer".
Are there any modern MMOs with mechanics like this, e.g. life-skill limits or some other source of dependence on other players?
> Are there any modern MMOs with mechanics like this, e.g. life-skill limits or some other source of dependence on other players?
I think Eve Online is the classic example. It's not technically true that players are limited in the sense that you mean. Rather, the limits are emergent.
The areas with the most valuable resources also have the least game provided security, so players are forced to band together into large organizations to protect themselves - essentially true virtual countries.
It’s like some unholy amalgamation of every shooter genre that’s been popular with kids in the past few years. It’s like hero shooter meets battle royale meets call of duty meets the battered corpse of what used to be Battlefield. It really feels like some out of touch suits said “see what kids like these days and rip it off”.
The previous game had its own controversies, and many veteran developers apparently left due to the stifling of creative control.
If you don’t mind a shitpost-ey video, I saw this the other day and it probably explains everything better than I can in an HN comment: https://youtu.be/d0lXNq2jrG8
It’s spends a lot of time on performance issues and bugs, but those are usually forgivable to me, at least as long as things get patched.
Also there’s a complete lack of content. Twenty something guns if I recall correctly, and lack of content can kill games, even otherwise good ones.
The reason UO will never be re-created is that it was the first game of it's kind and thus every player had only one option. In modern times, the gamer population is so bifurcated that I'm not sure it'll ever be possible to have such a mix of player types in a single unforgiving ecosystem.
MMOs are still stuck with the concept of permanently undamagable items that can be worth hundreds of in-game hours because of insanely low drop rates.
If items had a finite lifespan and you could replace them quickly like in Minecraft, then the downside of losing your items would be far more acceptable.
This is also the reason why MMO economies tend toward deflation. Players craft thousands of food items that never perish and just pile up in some auction house or automated market place.
If every player sold their items when they quit there would be more items than players.
Or towards hyperinflation when the currency generation out paces any sinks thus driving the price levels to outright stupid levels, with only limiting factor being what players can hold and trade.
This is exactly what happened in Diablo 2. You had a gold limit, and the value for gold was so low that players began using Stone of Jordan rings as currency for other item trades.
One of the challenges is finding the right proportional scale.
If the difficulty or fun of say blacksmithing nice items for the community. And you have it balanced out that you expect 20% of players be blacksmith. But then either 10 or 30% be blacksmiths either items skyrocket in price and make it unobtainable to most or the floor bottoms out making it not viable for most to engage in a market.
I think its solvable but itd require a lot of dynamic based systems to scale properly based upon number of players in each categories of life skill limits.
With that said, check out a game called Eco. They have life skill limits and force cooperation on small scale (30 day per server wipe). I think you can reasonably have 2 or 3 professions of 12 and people buy and sell from each other.
I play Conan Exiles which isn't exactly an MMO, but has the same sort of resource gathering grind. While my character is new, I don't actually mind it, but once I'm no longer just surviving, but thriving as a character, the basic resource gathering becomes mind-numbing due to the shear amount of stuff I need. There's no way to automate any of it.
Dunno, RuneScape seems fun? There's lots of types of materials, lots of ways to gather? True, most of the mechanics are just click-and-wait, but it's not like most MMOs where wood isn't any different from ore...
I'd argue that New World made gathering and to a lesser degree crafting a lot of fun. The rest of the game was kinda crap, but I did actually enjoy doing material farms.
In early UO, say Beta through the first few months of production, I knew a lot of folks who were primarily crafts folk. The town blacksmith, that sort of thing. After a while most players developed mules who had GM blacksmith skill or whatever so it became less of a thing.
But even then there were people out there. One woman I knew spent most of her time as an interior decorator for people's houses. It was a fun element that I never really saw in other games.
I do think to a large extent it came from the genre of game being new and every play style getting mushed into one game. People looking for the more pure social RP type role will congregate in a game catering to that, while the hack & slash adventure types will go elsewhere.
I've heard Ashes of Creation is trying to implement something like this (but they don't have a release date yet, just some interesting conversations with devs on their tooling and schedule)
Certain minecraft survival servers certainly, if they have the player count to make it feel "massive". Sometimes servers establish group protected towns or cities (these work like linux group permissions on files but over an arbitrary dimension of blocks in the server map) and there would be shared resources, e.g. a farm or chests full of leftover cobblestone from mining for diamonds, or even tools free for use to members of the group.
There is no combat, just challenges of various types that range in scope from things you can do on your own to things that require the active cooperation of many people.
For example, solo player might delve into the mysteries of flax genetics just for the fun of solving a complex puzzle, but they have the alternative of buying seeds sold by other players.
But you still can play UO in UO Outlands server, made by people who actually understands original concept, not like OSI-UO devs which turned UO, over the years, into care-bear themepark.
This is my perspective too. Whenever I find myself having to use Windows (which these days is just for games with Windows-only anti-cheat), the annoyances feel so much more pronounced.
Most likely you specifically don't have much reason to care about Zig. Meanwhile, C can still often be found in areas where high performance and precise control over memory are important - such as in small embedded systems and game engine development - and Zig is a great fit as a replacement.
While you can technically use Rust in these domains you'll find yourself jumping through hoops and fighting against quirks that come with it being fairly high-level and very opinionated on how to enforce memory safety.
One such scenario I've encountered is implementing my own memcpy with a loop like `for i in 0..len`. This works in release builds, but without optimisations this gets a deeeeep callstack that eventually also calls memcpy, so you get a stack overflow. Note how memcpy is implemented in rlibc to avoid this issue:
https://docs.rs/rlibc/latest/src/rlibc/lib.rs.html#30-38
Fair enough thanks for explaining. Basically if you want to make your own Malloc or things like it, zig is friendlier. Will say though, I've used rust for gamedev, and found the experience to be really nice. Was I writing my own memcpy though, nope.
It's funny how in rust you can write raw asm, but there seem to be quirks somewhere in the middle.
It's a strange sentence for sure. Organising your programs around data and its transformation happens to mean you are aware of how hardware organises, represents, and transforms data, and accommodate that to keep things running smoothly.
I would say the purpose of DoD is most certainly to make fast programs, but guess the point of that quote is just to further emphasise that this is all about data.
I think this is a very important distinction though, because if DOD is to be possible to consider as a programming paradigm you'd have to be able to state how a program is meant to be built up from scratch.
An object oriented programmer would propose the program to be built up from objects, the functional programmer would propose to build with pure functions. I would image a DOD programmer would propose to build the program with data transforms, which is a more general thing than just "make program go fast".
Of course making good use of hardware is easier in a paradigm that uses hardware level data transforms as its building block, but I don't think it makes any sense to make that the _defining_ feature of the paradigm.
It's seems clear to my family and friends that they have some sort of checklist for writers that includes garbage like mandatory regular sex scenes. In my case, they have _finished_ a tiny tiny percentage of their shows. They tend to string viewers along with contrived new-but-very-similar problems each season, and then just cancel once viewership gets bored. No thanks, give me a show that has an ending.
I think Disney has been better with their series in this regard. I've been watching a few shows that were planned with many seasons in mind, but instead of abruptly pulling the plug when viewership was lower than expected they gave them a final season that writers have been using to wrap things up really well. I can start a new show from them with a bit more confidence it'll get finished.
This shouldn't detract too much from your point, but for fighting games the situation is slightly different from most other genres:
Modern fighting games, as well as older ones that have been modded to included this (such as Melee), have a netcode model called "rollback" that can negate network-induced latency on local inputs. The trade-off is that what you see is usually inaccurate until you receive inputs from the remote player's machine.
Despite fighters often requiring fast reaction speeds, this downside is not a big deal granted that the ping is low. The first few frames of many actions are generally quite subtle, enough that they are quite hard to distinguish from each other; it's usually specific keyframes/poses that people will actually be reacting to.
Melee is probably hurt the most though, as movement is extremely fast and very important, and the difference between wavedashing left or right is not masked by subtle animations.
"Rust has mature and production ready frameworks in Actix Web and Rocket"
Why is Rocket considered production ready when it's only just at version 0.5? Similar <1.0 stories can be found on crates for sqlx, rusqlite, and postgres. Am I wrong in assuming the API must be quite stable before it can receive the 'production ready' label?
I feel like they should probably advertise this fact somewhere, as I couldn't find it in their docs, website, or readme, and it is quite a significant detail.
EDIT: I specified 'within vim' but actually I'd be down for standalone Linux app recommendations too.