View previous topic - View next topic |
Author |
Message |
tcaudilllg Dragonmaster
Joined: 20 Jun 2002 Posts: 1731 Location: Cedar Bluff, VA
|
Posted: Sat Feb 27, 2010 11:01 pm Post subject: |
[quote] |
|
A key part of the system is a polygon engine. In general, standardized mathematical techniques can thought of in phenomenological terms as opposed to algorithmic terms: the idea is to focus on the effect of the algorithm, rather than on the internals of the algorithm itself. SNES-style polygon rotation algorithms could, for example, be abstracted away from from the user's standpoint with commands that rotate polygons in a given direction and at a set speed.
Code: |
Shape "Cube" with vertices [vertices] as polygon;
Rotate "Cube" at rate [rate] clockwise;
Spin "Cube" at [degrees] degrees with rate [rate];
Begin "Cube" action;
|
The idea is that you give the cube directions and then use the "Begin" command to tell it to perform the directions given. This allows for very complex behavior on the part of the cube.
|
|
Back to top |
|
|
tcaudilllg Dragonmaster
Joined: 20 Jun 2002 Posts: 1731 Location: Cedar Bluff, VA
|
Posted: Sun Feb 28, 2010 9:59 pm Post subject: |
[quote] |
|
Right now, I'm in the mood to make a ZZT-like system, only with full color bitmaps. There was once such a system; however it was shareware and only available on AOL in the mid 90s. It was called "Z2" (Tim Sweeney (who had nothing to do with the product) had issues over the use of the word "ZZT" in its title) and today there is no trace remaining of it. I have looked high and low, but no sign of it anywhere.
The idea of a basic, tile-based sprite movement control system is probably the best single solution to the problem of making game design easier. People have been so focused on making powerful "map" makers over the years... somewhere along the line they dissociated the NPC writer from the map maker. In my opinion this was a catastrophic step backwards!
|
|
Back to top |
|
|
tcaudilllg Dragonmaster
Joined: 20 Jun 2002 Posts: 1731 Location: Cedar Bluff, VA
|
Posted: Sat Mar 06, 2010 4:12 pm Post subject: |
[quote] |
|
I'm currently faced with two issues:
#1: which platform to develop on
#2: the design of the lexical analyzer
I'm really not in the mood to do lexical analysis. Every time I start I get bogged down in the details of recursivity. Recursivity -- how to debug it and how to implement it -- is my personal bane. Mathematical expression parsing is a chore, one that I've still not gotten right. I can't claim to understand any description of the process ever offered -- they are all written for the mathematically inclined. I've written tokenizer after tokenizer... Geez, I wrote my own programming language a while back that was roughly as powerful as the original BASIC. It was an unpleasant, complicated experience to the say the least. One thing I've come to respect about VB is that its debugging tools are superb: all things considered, it seems more reasonable to design in VB and implement elsewhere once the core design is fully debugged. I may do this.
Would love to have a free alternative to VB, but none exists. MS has successfully baited BASIC programmers once again.
|
|
Back to top |
|
|
Ninkazu Demon Hunter
Joined: 08 Aug 2002 Posts: 945 Location: Location:
|
Posted: Sun Mar 07, 2010 3:08 am Post subject: |
[quote] |
|
You do know there are lexer generators right? Flex for example. After tokenizing the input is where the semantic interpretation comes in, and that's called parsing. Tools for that exist as well (yacc, bison, antler, packrat...).
|
|
Back to top |
|
|
tcaudilllg Dragonmaster
Joined: 20 Jun 2002 Posts: 1731 Location: Cedar Bluff, VA
|
Posted: Sun Mar 07, 2010 10:59 am Post subject: |
[quote] |
|
Ninkazu wrote: | You do know there are lexer generators right? Flex for example. After tokenizing the input is where the semantic interpretation comes in, and that's called parsing. Tools for that exist as well (yacc, bison, antler, packrat...). |
I have reviewed those tools, but to be honest they seem about as difficult to understand as lexical analysis itself.
Still I have been perusing the DigitalMZX forums to see what derailed Megazeux's evolution. The apparent answer is radical minimalism which anchored itself on the expectation that one of several projects attempted in the mid 2000s would actually see the light of day and surpass Megazeux in terms of graphical capability. None of them did, and Megazeux as such does not appear likely to receive a graphical upgrade anytime soon. (the source itself is in C++, which I for one am not an expert in).
I will give those lexical tools another look though, because I've been thinking about how to create lexical generation algorithms.
EDIT: Looked 'em over. It ain't happenin'.
|
|
Back to top |
|
|
tcaudilllg Dragonmaster
Joined: 20 Jun 2002 Posts: 1731 Location: Cedar Bluff, VA
|
Posted: Sun Mar 07, 2010 3:27 pm Post subject: |
[quote] |
|
Hmm... let's pull out Dyne Basic. I remember finishing that for the most part. If I intergrate that into the engine then I may have something.
|
|
Back to top |
|
|
tcaudilllg Dragonmaster
Joined: 20 Jun 2002 Posts: 1731 Location: Cedar Bluff, VA
|
Posted: Tue Mar 09, 2010 6:19 pm Post subject: |
[quote] |
|
You know I was thinking the other day about all the challenges that I was facing in dealing with this, and then I thought about all the other people who have failed (because let's face it, this isn't a new thing), and I realized I'm facing the same situation that caused their failure. The situation is just so ambivalent... the matter of even choosing a platform on which to run is a headache. All computer platforms, with the exception of the science-based systems like *nix, are driven by urge for profit. This means that each platform is created to give its creator control of the industry. Doesn't matter what is actually needed by the industry or the consumer... after satisfying the basic expectations for the product everything extra is leveraged for advantage. It's a mind-game they are playing with us -- Microsoft, Sun, ...even Google, alas. That is, I think, the key word: "us". Maybe not all but most freeware/open source GCS designers are in the grip of this "platform ambivalence", where we are faced on the one hand with the tyranny, dominance, and dangerousness of Microsoft and the profit-driven world on the one hand, and the sheer irritability and non-committance of the open source community on the other. I've been doing some researching, and boy has the recession taken a bite out of the open source community. People who once had time enough to give to the essentially altruistic endeavors of free software have . That, and unless the open sourcers find some way to finance their hobby (like for example, assisting vendor lock-in?), they usually quit contributing by their late 20s anyway. (consider family responsibilities, long hours... nothing too major)
The cross-platform effort is stalling and appears to have lost most of its momentum. Unless you're a C++ cross-compilation expert, you're kinda out of luck getting your Linux program to run on Windows, or your Windows program to run on Linux. M$ has ReactOS way in the bag, so don't get your hopes up on that end! I looked at Wine and... man, that's a lot of work. Not even going over THERE....
How does one cope with the demands of a cross-platform world when there are not even tools to meet the demands? I had been hoping the HTML 5/Firefox revolution would eliminate cross platform barriers, and then the industry got hold of it. Now there are pushes to encrypt even localstorage by default, making it another tool of the corporate 'Net. Google has become the new Microsoft, aiming to accomplish what Bill Gates fought the browser wars to become: the gatekeeper to the internet's future... the Google guys have become the Microsoft guys! And lurking behind it all is the madman Mike Ellison, who is now salivating that his long sought goal of eliminating the personal computer is within reach at last! And for what? Are you going to make the internet free next, Mr. Ellison? It's getting to the point where we must have access to the internet to use our computers! Uh... this wasn't supposed to happen, I don't think. And of course, the e-commerce pundits are coming out and yelling over the increased access of the browser to the PC's filesystem, saying it's a security risk. So all of a sudden the internet must take the fears of millions of people who know nothing about software programming and hardly anything about platforms into account as it evolves. No wonder we can't get anything done.
What is the solution? What we'd like to have is a system which runs optionally on either the internet or the user's computer, and can access files on either. But there is also something more that we'd like to have, and that is freedom. Real freedom. And yet, it would appear that we are ourselves the enemies of our freedom, in that by recklessly asserting our freedom (for example, rolling your own *nix and expecting people to make software for it) we are frustrating the freedom of others. Although there are indeed forces taking our freedom, it would appear that these forces are no more severe than the threat to our freedoms that we pose to ourselves.
What I'm looking for right now is some rationale for tolerating this mess and making the GCS for one of the platforms in spite of it. Yet I can't seem to justify it and as such, I'm just left in the lurch until I can. It's not that I don't think making this GCS is the right thing to do -- I do -- but I neither want to make an already bad situation even worse. But today there is no sanctuary: everything is polluted by plainly malevolent corporate influence. Time was, MS ruled everything and nobody really cared: you made something for Windows, most people could run it. Then they tried to control the future, and everything changed: it was no longer "safe" to develop exclusively for a Microsoft platform. A decade later now, and everyone's got the bug... everyone's trying to control the future. Since when did goodness become confused with recklessness? Since when did the well-meaning become the slave-masters of the masses? When even the good become arrogant and reckless, what can the responsible do?
|
|
Back to top |
|
|
tcaudilllg Dragonmaster
Joined: 20 Jun 2002 Posts: 1731 Location: Cedar Bluff, VA
|
Posted: Wed Mar 10, 2010 1:13 am Post subject: |
[quote] |
|
What do you guys recommend?
|
|
Back to top |
|
|
Verious Mage
Joined: 06 Jan 2004 Posts: 409 Location: Online
|
Posted: Wed Mar 10, 2010 1:52 pm Post subject: |
[quote] |
|
Why the hang-up on cross-platform? Why not build it for Windows, which is supported by almost everyone (either directly or through emulation)?
Alternately, you could build it to run in a browser. The necessary technologies have existed for many years. IMHO, storing data server-side is much better than storing data client-side, because you can access the information from anywhere you have a network connection.
|
|
Back to top |
|
|
codeugly Monkey-Butler
Joined: 14 Aug 2009 Posts: 50
|
Posted: Wed Mar 10, 2010 4:24 pm Post subject: |
[quote] |
|
I was once a linux jockey, I used everything from Redhat 6 to Latest and greatest Ubuntu. Loved the debian debian based systems, apt is an incredible package manager. I developed a cross platform application using Java, which sold poorly and I eventually shut it down. I then tried game programming with Java and was never really that happy with either the performance or the tool available for it. JOGL, Java3d, and LWJGL were all steeped in incompatibilities and no matter how many of them I overcame I still had the mounting difficulties of cross platform distribution. IZPack only eased a bit of the pain.
After being a zealot for years, I gave it up and bought XP for one of my systems. I wasn't happy but TGB would almost seamlessly produce a game and binary for both Windows and Mac. Not being happy on my platform I bought a Mac and Love it! But TGB is buggy on mac. I finally got Unity3d on mac and I am having a blast with it. Unity3d is free for commercial use right now and supports Mac, Windows, and web browser use for free. It also supports other more cutting edge platforms for a price.
I know you probably want linux compatibility, but you can save yourself a lot of headache by giving up on it. I think the only way you could pull off full crossplatform gaming is to get an active community involved. Otherwise, you are best to get a pre-built engine and let them handle the cross platform details. Unity3d is very quick to fix issues, so your game doesn't stay broken for weeks on end.
That's just my two cents. I love using linux, but distrowatch.com pretty well states the problem with trying to support linux, I don't think a solo developer can keep it current with linux. You would spend the vast majority of your time building packages. The mac will give you a *nix style environment. Windows has gotten some better with 7, but I still don't care much for it. It plays my games and connects to gog.com, that's all I need Windows for. _________________ As seen on TV
http://www.codeugly.com
|
|
Back to top |
|
|
tcaudilllg Dragonmaster
Joined: 20 Jun 2002 Posts: 1731 Location: Cedar Bluff, VA
|
Posted: Wed Mar 10, 2010 10:38 pm Post subject: |
[quote] |
|
I guess I could just tell the Linux folks to go internet or else. Besides I imagine Chrome will become the dominant Linux distro in a few years.
I told the Advanced Dungeons & Rabbits people that I would make a quest mod for them. So I'm focusing on that for the time being.
Here's the alpha. Really basic and simple, like what I'd intended for the GCS editor. However, it's just an alpha -- I've more planned for it.
http://www.progressivesocionics.co.cc/rpg/house.php?mode=edit#
But as for the windows port, you think I should use DirectX? One thing I intend to implement is the ability to insert entities into the living environment, kinda like the "artist's hand" that chases Mickey Mouse in Mickey Mania. I think that would be a lot of fun, to play an interventionist God in the course of the design process. ;)
If I could use SDL with VB, that would be optimal in my view. The question is of course, could I use SDL in a window of that type? I'm betting DirectX is my own option.
|
|
Back to top |
|
|
tcaudilllg Dragonmaster
Joined: 20 Jun 2002 Posts: 1731 Location: Cedar Bluff, VA
|
Posted: Sat Mar 13, 2010 7:30 pm Post subject: |
[quote] |
|
I have concluded that computer language statements can be broken up into at most three distinct parts ("terms").
- The first term is declarative.
- The second term describes the first.
- The third term (if there is one) directs action.
Traditionally syntactical analysis has not made distinction between term groups except in the case of expression parsing. I think that makes an already complicated endeavor even more so. It is far simpler, from an algorithmic point of view, to divide tokens amongst these three groups as they are parsed line by line. For example, the following statement should be parsed as described:
Code: |
void sub main (argument) {
|
When the line is parsed, "void", "sub", and "main" should be grouped together. "(", "argument", and ")" should be put in a different group, and "{" should be put in a group by itself. The challenge is creating an algorithm that can manage the distinction. What's needed are three "quantity" arrays which keep a count of the tokens respective to each group on each line. This way the same array can be used for all tokens.
In the previous example, "void sub main" has three tokens, therefore the entry for this line in the "declaratives" array will read "3". "(argument)" has at least 3 tokens, meaning that the "expressions" array will have at least 3 for that line, and because "{" is one token the "directives" array entry reads 1.
|
|
Back to top |
|
|
Ninkazu Demon Hunter
Joined: 08 Aug 2002 Posts: 945 Location: Location:
|
Posted: Sun Mar 14, 2010 4:05 am Post subject: |
[quote] |
|
You over-complicate a completely solved problem. If you don't understand the different fundamental differences of computational models such as regular expressions, context free grammars and beyond (Turing Machines) then you have no hope of making any kind of useful language. If your language is simply defined by the program that parses it (like perl, *shudder*), then you will run into problems down the line because you have not thought hard enough about a concrete semantics.
Languages are easy to describe, unless you're re-describing C, which is a cardinal sin. Learn about regular languages / context free languages, the LR parsing technology (shift-reduce parsing), and you'll be able to use tools like flex and yacc.
Let me describe at a high level flex and yacc do. First and foremost, it is in your best interest to separate problems into domains that are easily solved. For example, with code text such as
Code: |
function f(x: int, y: string) = {
while (x < String.valueOf(y)) ++x; }
|
instead of considering this all in one go, having a ridiculous mess of code, you have rules that can describe bits.
flex you might have rules such as (and I don't claim any kind of syntactic validity):
function (Token.FUNCTION)
[a-zA-Z_][a-zA-Z0-9_]* (Token.ID text)
[0-9]+ (Token.NUMBER)
"(" (Token.OPAREN)
")" (Token.CPAREN)
":" (Token.COLON)
"{" (Token.OBRACE)
and it goes on.
These token recognizing bits are called regular expressions and match the longest string they can before moving on to try matching the next token.
Once things are tokenized, you can forget about text and deal only with abstract notions.
Once again I will mention that this is a solved problem and there are tools that can generate parsers/lexers for you, as long as you understand certain fundamental ideas in computer science.
|
|
Back to top |
|
|
tcaudilllg Dragonmaster
Joined: 20 Jun 2002 Posts: 1731 Location: Cedar Bluff, VA
|
Posted: Mon Mar 15, 2010 12:22 am Post subject: |
[quote] |
|
I have no problem tokenizing. What I have a problem with is the computation, particularly parentheses juggling. I have great difficulty writing a parentheses routine that works in every case -- I get to a point where making adjustments for one case screws up another.
|
|
Back to top |
|
|
Ninkazu Demon Hunter
Joined: 08 Aug 2002 Posts: 945 Location: Location:
|
Posted: Mon Mar 15, 2010 1:07 am Post subject: |
[quote] |
|
That kind of thing can easily be characterized with a context free grammar. The code is then taken care of by the parser generator.
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|