Temple of The Roguelike Forums
Development => Programming => Topic started by: Krice on September 12, 2014, 09:33:18 AM
-
Regarding my tile editor, I was thinking if VB could solve the problems with ascetic SDL.. rather than using some overbloat gui library like Qt. I remember I had problems with M$ Live ID (forgot my password and couldn't recover it) which I guess is required when downloading VB Express. I'm not sure about Express version of VB either, because I don't know its exact limitations. .NET of course makes it Windows only (I guess), but I don't care about it. Has anyone here used VB lately?
-
I haven't used VB since the moment it went .NET (thus VB is not VB anymore, it's just C# without curly braces). However, I do use Visual C++ Express. I don't think any kind of account is required to download any Express version of MS products, but something might have changed recently... As of limitations, the only one that matters is that you cannot use plugins in Express Edition. All the other stuff should remain the same, including the right to use the IDE freely even for commercial projects.
-
VB.NET is the main language I use at work and I've also used it for a couple of non-game hobby projects such as the spriting tool I recently released (http://www.vitruality.com/2014/08/spartan-v1-0-small-pixel-art-animator/). So if you have any specific questions about it ask away.
So far as GUI goes, you have two main options; WinForms and Windows Presentation Foundation (WPF), which work in very different ways. Of the two, I greatly prefer WPF as it's more powerful and much easier to maintain. Its data-binding features make it very fast to set up a GUI with very little (or no) bridging code-behind. On the downside using it effectively means getting used to XAML and setting up your architecture to be compatible with the MVVM pattern, so it's slightly less straightforward to get to grips with than WinForms. There are also some things in it which you would think would be trivial to accomplish but that can require some complicated work-arounds.
I've used the pro and express versions of VS more-or-less interchangeably and express is good enough for most purposes. It's missing some functionality to do with debugging and build instructions, although actually sometimes they've simply removed the interface for these things from the express version and you can still activate them by editing the project file. If I remember correctly you don't need a Live ID to download, but you do need to register with one to carry on using the express versions after 30 days.
-
Or maybe I should start from the scratch, creating much better GUI for SDL than the current one (possibly also switching to SDL2). Or maybe I should try to find some lightweight C++ gui.
-
There is a "lightweight" GUI that doesn't require installing or external depends. It's.. WinAPI. Agreed the syntax is quite horrible, but I think with my current skills it would be possible to wrap that shit to classes, creating a layer of more usable GUI. After all, I don't need any fancy stuff, only basic stuff like menus, couple of dialogs and that's pretty much it.
-
There is a "lightweight" GUI that doesn't require installing or external depends. It's.. WinAPI.
WinAPI has like ~20GB of dependencies =)
-
What do you mean by tile editor? To create tiles, or create levels?
Do you *really* need to roll your own tool? For level editing, this is nice: http://www.mapeditor.org/ (http://www.mapeditor.org/)
... and as the format is xml-based, you can probably export/import this from your application/game.
-
What do you mean by tile editor? To create tiles, or create levels?
Do you *really* need to roll your own tool? For level editing, this is nice: http://www.mapeditor.org/ (http://www.mapeditor.org/)
... and as the format is xml-based, you can probably export/import this from your application/game.
I know, it's puzzling. I think he's talking about something like a sprite editor minus animation, not a map editor. So basically an icon editor. I'm somewhat hard pressed to believe that this proposed tile editor would surpass the functionality available via Gimp plugins, photoshop, or even MS Paint. I mean, hell, Borland C++ came with an icon editor 20 years ago.
-
What do you mean by tile editor? To create tiles, or create levels?
Do you *really* need to roll your own tool?
Yes, I did need it and still do. I've been developing it since 2004. The new version is going to be cool, unlike this current one.
http://koti.mbnet.fi/paulkp/brick/brick.htm
-
I've been developing it since 2004. The new version is going to be cool, unlike this current one.
Are you gonna add png support? -_-
Reinventing the wheel is not cool, unless you're learning / want to learn / really enjoy the process. If you enjoy making a subset of windows paint with Win32 API, fair enough, whatever floats your boat.
-
Reinventing the wheel is not cool
If there was a free software with options I want I would use it. Nothing like it exists.
I think gtkmm is quite neat (it's C++), but I haven't yet found out is it possible to manually read mouse location and also create a custom surface to draw whatever you want. The problem sometimes with these GUI libraries seem to be that they are too deeply constructed and limit everything in context and properties of the GUI.
-
If there was a free software with options I want I would use it. Nothing like it exists.
http://tilestudio.sourceforge.net/ (http://tilestudio.sourceforge.net/) ?
-
I've been developing it since 2004. The new version is going to be cool, unlike this current one.
Are you gonna add png support? -_-
Reinventing the wheel is not cool, unless you're learning / want to learn / really enjoy the process. If you enjoy making a subset of windows paint with Win32 API, fair enough, whatever floats your boat.
Too many people are indoctrinated with a belief that reinventing the wheel is a bad thing, and if it is suggested there are situations that it is okay, then these situations are often trivial ones that no professional would seriously choose.
The fact is that a piece of software is not a wheel. That a given piece of software does something which resembles what the programmer wants, is a mere part of the whole. A wheel is a wheel, you get one and it fits a hole on a stick thing. Making a new wheel is a fixed process which is clearly pointless and of little benefit. For software there are numerous factors which complicate the situation - how it is written, the burden for choosing to use it, the benefits of writing a better version and so on.. are all factors that need to be weighed up.
The sooner this expression dies, the fewer people who will be mislead into making poor choices because of it.
-
The fact is that a piece of software is not a wheel. That a given piece of software does something which resembles what the programmer wants, is a mere part of the whole. A wheel is a wheel, you get one and it fits a hole on a stick thing. Making a new wheel is a fixed process which is clearly pointless and of little benefit. For software there are numerous factors which complicate the situation - how it is written, the burden for choosing to use it, the benefits of writing a better version and so on.. are all factors that need to be weighed up.
The sooner this expression dies, the fewer people who will be mislead into making poor choices because of it.
The expression is just an expression - it's fit to use in *quite a few* cases, it doesn't need to die because it's not universally applicable. What's next? KISS needs to die because it's not applicable when designing a complex system? Of course there are several factors that come into account - nobody argues that.
If you want to make a *tile authoring* application:
- Making a half-arsed paint program with some extra custom bits is the reinventing the wheel.
- Making a plug-in for a well-used paint program and adding the unique bits is "standing in the shoulder of giants". That's a ready user base and developing transferable skills right there.
And don't tell me "but but, plug-ins are proprietary/hard"
Next in line: write an IDE for roguelike development because the current free ones suck, as they don't support visualisation of levels in the variable watch windows while debugging.
-
Yeah, this software is not a wheel thing only goes so far. If you're talking about something whose purpose is literally just fiddling with values in an array of numbers (I mean, editing icons in a damn hex editor wouldn't be a completely crazy thing to do), a task ably performed by a huge array of existing pieces of software with mature, user friendly interfaces, that seems about as much like a wheel as any piece of software could be.
-
a task ably performed by a huge array of existing pieces of software with mature, user friendly interfaces
I'm sorry, but you really don't know what you are talking about. There is no huge amount of software in this scene (pixel drawing) and most of them have some kind of UI style I don't like. Or they cost money which I don't like either. Bigger software like paint.net and GIMP are hopelessly slow and sluggish when you paint in pixel level, plus they don't have all the required tools or features. When you draw pixel art you need snappy response and ultra simple user interface. GIMP is like trying to draw with an elephant.
-
-________-
I got tired of listening to people talk about how standard software tools are too slow for their taste about 15 years ago. It feels like you're working out of an internet trolling best practices guide written in 2001.
"Paint is too slow." God.
-
I got tired of listening to people talk about how standard software tools are too slow for their taste about 15 years ago.
I'm tired of listening comments from people who have no clue.
-
Maybe you should write a faster web browser.
-
Yeah, this software is not a wheel thing only goes so far. If you're talking about something whose purpose is literally just fiddling with values in an array of numbers (I mean, editing icons in a damn hex editor wouldn't be a completely crazy thing to do), a task ably performed by a huge array of existing pieces of software with mature, user friendly interfaces, that seems about as much like a wheel as any piece of software could be.
You are making a strawman argument that basically agrees with me that the premise behind "reinventing the wheel" only applies in certain situations. Then you decide that's dismissed my point. Let me try be clearer:
My point is that when people trot out this expression, they do so as an absolute. Like:
Reinventing the wheel is not cool, unless you're learning / want to learn / really enjoy the process.
And this is the problem with expressions like this. People glom onto them and trot them out as arguments to help make their point, with the assumption that the expression stands on it's own - in lieu of making a real argument that stands on it's own.
We all agree that there are certain things that it is pointless to rewrite, like web browsers. There's no contention there.
-
At work, I try to limit it to reinventing square or triangular wheels.
If it's somewhere between pentagonal and octagonal, I'll reinvent it if I'm working for myself, but at work, I won't do it unless the shock absorbers are likely not to be good enough.
If it's better than octagonal, I try to deny the urge to reinvent. But sometimes I still do - mostly while the back of my brain is working on a different problem but not ready to write code to it yet, or while waiting for design inspiration to strike.
-
Let me try be clearer:
My point is that when people trot out this expression, they do so as an absolute. Like:
Reinventing the wheel is not cool, unless you're learning / want to learn / really enjoy the process.
And this is the problem with expressions like this. People glom onto them and trot them out as arguments to help make their point, with the assumption that the expression stands on it's own - in lieu of making a real argument that stands on it's own.
I don't understand what's your problem with my statement is. What is the point that you think I'm trying to make? What is the point that *you* are trying to make?
Let me try be clearer:
We all agree that there are certain things that it is pointless to rewrite, like web browsers. There's no contention there.
Who's we? If that's not an absolute statement, I don't know what is. And you say a few lines earlier that *I* make an absolute statement? Funny. To stop beating the expression, let's go to a definition from wiki:
"To reinvent the wheel is to duplicate a basic method that has already previously been created or optimized by others" (emphasis mine)
What I mean is, if you want to duplicate work being done by others and you don't enjoy or have interest in the process, ie. it's a means to an end, it's pointless. If you, on the other hand, enjoy the process or want to learn by it (as some people also learn by doing, not just by reading source code), then go ahead. That's again just *my* opinion and I do not imply that as "that's the way of the world".
-
To me there's three points in reinventing a wheel.
The main point is if the wheel is one that has been developed badly by earlier inventors (where the original inventor gave us the square wheel, and some later engineer reasoned that, since the corners were a problem, a triangular wheel would be better... and it formed a trend. (cough XML cough cough)
A second point is if the wheel doesn't fit. EG, if I'm developing an artistic-license project and someone has invented a perfectly good GPL wheel, there's not a darn thing wrong with it except that you can't thread a GPL wheel onto the end of an Artistic-license axle. Kind of like SAE versus Metric. So I'll cheerfully go and invent an Artistic-license wheel and use that instead.
The third point is, yes, I do in fact just plain enjoy it. But that's sort of mixed up with something else. For me anyway, working on some things that don't really need to be worked on -- reinventing wheels -- is also a kind of a surface-brain activity I do while pondering deeper design problems in the same program, or as a re-familiarization exercise when I'm getting back into a project after a hiatus. I learn and remember things about the code while working on 'wheel reinvention' that help clarity to emerge as to how other parts of the code ought to be designed. And as often as not I find that things I've done since the code was first written make a better version of it easier and clearer.
-
Yeah, this software is not a wheel thing only goes so far. If you're talking about something whose purpose is literally just fiddling with values in an array of numbers (I mean, editing icons in a damn hex editor wouldn't be a completely crazy thing to do), a task ably performed by a huge array of existing pieces of software with mature, user friendly interfaces, that seems about as much like a wheel as any piece of software could be.
You are making a strawman argument that basically agrees with me that the premise behind "reinventing the wheel" only applies in certain situations. Then you decide that's dismissed my point. Let me try be clearer:
I'm not sure that referring to the case at hand qualifies as a strawman. It would seem to me that we have two sides of contention re: "reinventing the wheel" within a larger discussion about Krice's icon maker for imaginary roguelike games. Your position seems to be that the expression has a pernicious effect on software development and, because it is so often applied naively and without consideration to factors outside utility and adoption, shouldn't be used, while the other guy thinks it presents a useful rule of thumb for planning software projects that would reproduce the functionality of existing, mature, and reasonably good quality software.
To the extent that these two opposing views have any bearing on the present discussion, I think the example I consider is pretty fair. And maybe I do agree with you in a broader sense -- it's been known to happen.
My point is that when people trot out this expression, they do so as an absolute. Like:
Reinventing the wheel is not cool, unless you're learning / want to learn / really enjoy the process.
And this is the problem with expressions like this. People glom onto them and trot them out as arguments to help make their point, with the assumption that the expression stands on it's own - in lieu of making a real argument that stands on it's own.
We all agree that there are certain things that it is pointless to rewrite, like web browsers. There's no contention there.
I think the argument that icon editors and icon editing functionality within larger (free, mature, widely used, etc.) software packages exists, has existed for a long time, and is widely used for the purpose of editing icons/tiles/sprites kind of makes the point. "Don't reinvent the wheel" is just a shorthand for a point that seems pretty effectively made in thread, a point that stands on its own independent of the fact that it has been so often made and remade there's well-known slogan.
-
within a larger discussion about Krice's icon maker for imaginary roguelike games.
It's a tile, not "icon". I don't know what do you mean by imaginary, but if you are a roguelike developer (which I doubt) you should have more respect to another developers like myself. Roguelikes are not easy to create, but I'm telling you that tile editors are not easy either.
-
within a larger discussion about Krice's icon maker for imaginary roguelike games.
It's a tile, not "icon". I don't know what do you mean by imaginary, but if you are a roguelike developer (which I doubt) you should have more respect to another developers like myself. Roguelikes are not easy to create, but I'm telling you that tile editors are not easy either.
I apologize. I should show the requisite respect when addressing a personage such yourself. It was cheeky of me to suggest that just because no one has seen your major, twenty year roguelike project in ten years, it must not exist.
I don't believe the concern here is that your tile editor will be too simple a challenge for you. People rather feel that the effort might be better spent on your magnum opus. The anticipation among roguelike fans everywhere is palpable. I believe I speak for roguelike fans and developers alike when I implore you to commit yourself anew to that effort. Retire from the petty squabbles of the internet. Forget what meagre assistance you might find among the threads and forums. Use what you know! Go forth and create!
-
People rather feel that the effort might be better spent on your magnum opus.
I don't think any of my projects (also other than roguelikes and tile editors) is more important than the other. Like many artists before me I'm not creating for people, I'm doing this to keep myself sane.
-
People rather feel that the effort might be better spent on your magnum opus.
I don't think any of my projects (also other than roguelikes and tile editors) is more important than the other. Like many artists before me I'm not creating for people, I'm doing this to keep myself sane.
I respect your right to keep to yourself. You might help others stay sane if you exercise that right more thoroughly.