Anim8or Community

Please login or register.

Login with username, password and session length
Advanced search  

News:

Ian Ross has just released a book on Anim8or. It's perect for a beginner and a good reference for experienced users. It contains detailed chapters on every aspect, with many examples. Get your own copy here: "Anim8or Tutorial Book"

Pages: 1 ... 14 15 [16] 17 18 ... 20

Author Topic: WEEHEEEE oh, oh wait its dead, I thought it was dancing (CRE8OR NOTICE)  (Read 238745 times)

cooldude234

  • Sr. Member
  • ****
  • Posts: 902
  • You know what I realized, I dont have an avatar :\
    • View Profile
Re: WEEHEEEE oh, oh wait its dead, I thought it was dancing (CRE8OR NOTICE)
« Reply #225 on: September 23, 2013, 05:58:34 am »

Not at the moment; haven't even programed for a couple weeks (since I was on afternoon shifts and I got my new graphics tablet which took all my time).
However I am back to days and ready to start programing. I'm going to try to get some collision code working, and also work on the GUI system (which then I should be able to make the IDE interface).

By the way, nice to see you around. I still have Dylan 64 on my computer ;)
Logged
¼

cooldude234

  • Sr. Member
  • ****
  • Posts: 902
  • You know what I realized, I dont have an avatar :\
    • View Profile
Re: WEEHEEEE oh, oh wait its dead, I thought it was dancing (CRE8OR NOTICE)
« Reply #226 on: October 02, 2013, 09:29:35 pm »

cooldude234,

Whenever I have tried to determine whether a line segment (like an edge) intersects a polygon, I have done it in two steps:
The Line Plane intersection doesn't work.
I tried pluging in the code and it didn't reconize any collisions
Logged
¼

cooldude234

  • Sr. Member
  • ****
  • Posts: 902
  • You know what I realized, I dont have an avatar :\
    • View Profile
Re: WEEHEEEE oh, oh wait its dead, I thought it was dancing (CRE8OR NOTICE)
« Reply #227 on: October 03, 2013, 01:32:33 am »

While collision still rams its code into my brain turning it to mush I decided to take another look at my polygonal distribution algorithm, and the result of 4 hours of programing turned out quite nice I think.
SCREENIES (log in and look down below)
It may have been a bit of brute force but it runs good as far as I can tell.
Basically I generate a percent number (0%-100%)
If it's less than 25 percent I generate the point for 25% of the area (which is between 0.0 - 0.3125)
else if it's less than 50 percent then I generate the point for 50% of the area (0.3125 - 0.625)
and so on

If I were to just generate these numbers from 0 to 1, well because I'm using a triangle there's less space at the lower levels for line V (look at image for illustration) which means I would be generating points closer together at lower levels making them bunch up.

Well anyways the results turned out good and I'm satisfied for now.
Logged
¼

cooldude234

  • Sr. Member
  • ****
  • Posts: 902
  • You know what I realized, I dont have an avatar :\
    • View Profile
Re: WEEHEEEE oh, oh wait its dead, I thought it was dancing (CRE8OR NOTICE)
« Reply #228 on: October 03, 2013, 06:13:06 pm »

Did some debugging tests...
I can generate about 10,000 points in about 16 milliseconds
         Raxx, you may want to take some notes :P
Logged
¼

VirtuaroidPilot

  • Newbie
  • *
  • Posts: 12
    • View Profile
Re: WEEHEEEE oh, oh wait its dead, I thought it was dancing (CRE8OR NOTICE)
« Reply #229 on: January 25, 2014, 06:53:04 pm »

I'm glad someone mentioned Dylan 64, as I was the one who designed the game. How well known is the game within this community?

Before you say I'm a phony and I didn't create the game, I am indeed Segastar21 / Nintendogamr123. My name is Dylan Heisner, I was born in October 29th 1993.
« Last Edit: January 25, 2014, 06:56:04 pm by VirtuaroidPilot »
Logged

VirtuaroidPilot

  • Newbie
  • *
  • Posts: 12
    • View Profile
Re: WEEHEEEE oh, oh wait its dead, I thought it was dancing (CRE8OR NOTICE)
« Reply #230 on: January 25, 2014, 06:56:47 pm »

Cooldude, can you send me your copy of Dylan 64 and tell me how I can get it running on my windows 7 laptop?
Logged

cooldude234

  • Sr. Member
  • ****
  • Posts: 902
  • You know what I realized, I dont have an avatar :\
    • View Profile
Re: WEEHEEEE oh, oh wait its dead, I thought it was dancing (CRE8OR NOTICE)
« Reply #231 on: February 01, 2014, 09:25:43 pm »

GRR! I just made a post and it didn't even send. Some how it screwed up and didn't send so here is my attempt at rewriting it. GRRR SO ANGRY!!
ANGEEEEEEEEEERRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR!!!

So the only thing I can suggest if it doesn't work on windows 7 is get virtual box and run windows xp through it.
So lettme just find it...
Oh here it it is V2 *playing it*
Woot 2009!
I still don't understand why the dog keeps saying barf bag.
I don't remember this much animal abuse (I just kicked a cow off a cloud, and then threw it in a pond :P)
Ah that was a fun few minutes.

Oh and just for the record... PHONYYYYY!!!! ;p Nice to see you back Nintendogamr123
Linky Link: http://www.mediafire.com/download/ismkq00ynvdr02s/Dylan64v2.zip
Logged
¼

cooldude234

  • Sr. Member
  • ****
  • Posts: 902
  • You know what I realized, I dont have an avatar :\
    • View Profile
Re: WEEHEEEE oh, oh wait its dead, I thought it was dancing (CRE8OR NOTICE)
« Reply #232 on: February 08, 2014, 09:26:07 pm »

Oh silly me, I forgot to write the follow up post.. well better late then never.
OKAY, time for a news broadcast.

What I have been doing on this project recently
Absolutely nothing.

Reasons why I have been doing absolutely nothing on this project recently
Well I just finished building my new machine for the most part (I'll have a different post containing details on that), and I have spent a lot of money, time, and effort into it; and the change over (software wise) was a bit more of a hassle than I wanted it to be (looks like windows xp is really nearing it's final days as driver support dies out <- the only reason why xp is dieing). Also work (that I am so glad I finally have) has been temporarily arse backwards due to some very Canadian weather and has screwed with my sleep scheduled. But with that change now mostly over and work getting back to normal, I have reset up my programing environment and am ready to get back on track with this project.

So what now?
Well I am going to focus on what I know I CAN DO and do that first. Since the dang ray collisions still aren't working I am going to work around them until I get them working (I think I am cursed when it comes to these rays, they won't collide correctly for my freakin life >:( ). SO this means that I will be working on the scripting engine a lot, and implementing the primitive functionality I have with it.

Basic things such as distance formulas (spherical collision), basic statements (if, and, or),simple formulas and basic modules (obj loader) will be implemented all into one and accessed through the scripts. So the goal is to get something simple, maybe not practical or totally useful but rather something functional out as quickly as possible so the project will have a better stepping stone to work from, and be in a better state than what it is in now.
Really the only two things that need to be worked on to get this basic functionality I am looking for is the script engine itself, and the application to edit the scripts (the second half is less important as you could script using something like notepad, although not practical it WILL WORK, I WILL MAKE IT WORK [PERIOD!]



I am not going to let this project fall or fail or break or blowup, it has gone to far to just leave it at this point and I made a promise (some where along the ways I did) to finish this project(or in other words, make a equivalent to better version than the original). And I will do just that [EMPHASIS ON THE PERIOD!]

Thank you for keeping with this project all the way through (if you have, and if you haven't thank you for trying (and if you haven't tried then, uhh SHAME ON YOU I think?)).
Logged
¼

cooldude234

  • Sr. Member
  • ****
  • Posts: 902
  • You know what I realized, I dont have an avatar :\
    • View Profile
Re: WEEHEEEE oh, oh wait its dead, I thought it was dancing (CRE8OR NOTICE)
« Reply #233 on: February 18, 2014, 12:24:14 am »

The Scripting Language Takes Shape
So made my own tokenizer and parser completely from scratch simply because the functions provided with C++ to do such a task weren't enough for what I need, and all the libraries out there didn't fit what I needed either. Long story short I have made a set of functions to do what I need.
So what does this "tokenizer/parser" do?
Well it can differentiate between spaces, brackets, or any set of characters (and without any bulky extra code!) and understand what it means essentially.
So when the parser runs a script it will check for any delimiters (such as commas brackets end-lines etc.) by reading character by character, and once found it can do a certain task. For Example the first line in the example script below says Use_double_buffer; the semi-colon on the end means the end of the line. So when the parser reads each character and finds a semi-colon it runs the function that it read from the start to the semi-colon.

To put it the simplest, it reads much like us humans do, but much more technical and "computery".
Code: [Select]
Use_double_buffer;
New Texture CharTexture;
New Model   CharModel;
CharTexture = LoadTexture ("testTextu.bmp");
CharMode    = LoadTModel  ("testModel.obj");

Main_Loop
{
SomethingFunction;
UseTexture (CharTexture);
DrawModel  (CharModel);
UpdateScreen;
CheckEndCondition;
}

As you can see from the test script above that I have been working from, you will be able to do things such as control loops and more. However incorporating this into the editor will be interesting. Because the original cre8or had drag and drop functions which a lot of people enjoyed using (like myself) as it was really easy to get into as a beginner. But it'll be one step at a time I take.

ERROR HANDLING
Basically if you have an error within the script the engine will still run so as long as the engine didn't receive an error (like a bad memory allocation for reading and writing from the ram). Meaning if you have an error the parser will know about it but continue. However I can make it stop the script, but I'm going to be making a function to let the user decided what to do. It will be simple as this GetError(ErrorHoldingVariable); which all would do is a hold a value which represents which error case it was.
EG error case 1 would equal bad syntax (in other words you spelt something wrong), or error case 2 could mean missing parameter or even missing texture (like the file is missing or something).

If it was done that way then the user could script a function that could make a pop up saying error, or have a function that would work around the error and let the code continue.

Anyways I gots to gets to beds, I have less than 5 hours of sleep for work tomorrow :S
Anyways, Happy late family day everyone!
Logged
¼

cooldude234

  • Sr. Member
  • ****
  • Posts: 902
  • You know what I realized, I dont have an avatar :\
    • View Profile
Re: WEEHEEEE oh, oh wait its dead, I thought it was dancing (CRE8OR NOTICE)
« Reply #234 on: February 22, 2014, 09:11:17 pm »

I decided to do some test on my new tokenizer which cleans up the code a bunch.
So I compared my function to the C function for tokenizing (which I was using before) and I loaded up the config I had made (which is about 10 lines long) and tokenized every line. I did this for 100,000 times and measured the time it took for both functions to do this.

So 100,000 files being loaded up (10 lines each) and tokenized takes 3.218 seconds to do using my function. Whereas the C function takes 0.891 seconds to do the same. Now to be fair my function is a bit more flexible, and makes the code look neater; but this is no excuse for having slow code. So there is optimizations that need to be made, but to be honest this is the first time I have no clue how to optimize a function that I made in C++... THE FIRST TIME.

So it feels a little strange that for the first time I have no clue how to optimize something (as I been working on C++ for about 3-4 years now), but it's not like the function is ridiculous slow so I won't bother with optimizing it right now, getting functionality working is my priority.


A little extra insight, I will be adding a script function to give access to the tokenizer so writing and reading files can be more useful to the user. I will also be making a separate function to handle tokenizing for the scripts a bit better, and that may be accessible as well, but we'll see about that when the time comes.
Logged
¼

cooldude234

  • Sr. Member
  • ****
  • Posts: 902
  • You know what I realized, I dont have an avatar :\
    • View Profile
Re: WEEHEEEE oh, oh wait its dead, I thought it was dancing (CRE8OR NOTICE)
« Reply #235 on: March 01, 2014, 11:57:33 pm »

So a little update to the scripts.
I got basic variable functionality working; you can now define and use variables as such...
Code: [Select]
New_Texture Mytexture;
Mytexture = LoadTexture Textures/blahblah.png
Note: I still have yet to implement more operators than the simple equivalent symbol but I plan on making a better way to handle such things so when I do, I will make sure to add the rest.

As of right now I truly only have the texture variables working, but I have the structure ready to implement integers and more. How it works on the engine side (variables that is) is I have a predefined variable structure that holds all the variables defined in the script. And when something is defined in the script, it is added onto that predefined one in the engine; meaning only what you define is actually whats in the ram (besides the engines dependencies). So the engine and scripts could only use a couple MB of ram, or you could soar wide into the Gigs if you so wished (although 32 applications are limited by 2 gigs of ram by default, but I will be compiling a 64 bit version which will be fully compatible with all the same scripts).

So far making a parser and scripting language, tokenizer etc. all from scratch is proving to be easier than checking if a line intersects a triangle.... I'm not sure if that's a good thing or not.
Logged
¼

cooldude234

  • Sr. Member
  • ****
  • Posts: 902
  • You know what I realized, I dont have an avatar :\
    • View Profile
Re: WEEHEEEE oh, oh wait its dead, I thought it was dancing (CRE8OR NOTICE)
« Reply #236 on: March 16, 2014, 01:30:29 pm »

A little off topic but I'm finally moving from xp (well for my main machine at least). Good bye good friend, it's been a good 11 years or so, but I will always see you on my laptop. Now once 7 is installed I will put on the windows 7 xp theme ;)


Now back to topic I forgot to mention that using my tokenizer function, you can parse a line from a file that is longer than 256 characters (which is how I had it set up before). Now you can pretty much parse a line that is in any size (so as long it fits in your computers memory).
Also for the first release I'm going to use Audiere simply because port-audio is taking a lot longer to figure out how to use than expected.
Another thing to mention is that even though the engine and the editor are two completely separate things I will be releasing them both under the same versions (EG V0.5 of the editor will use V0.5 of the engine) but if any fixes or small revisions are made to either or then there will be a sub version to that version which will be specific to it's self (EG V0.5.1 of the editor could use V0.5 of the engine, visa-verse).
Now I'm obviously not very good at estimating time with this project, but I think I will have the first release finished before the beginning of summer! WOOT! (it's just the script engine I got to get finished!)
Logged
¼

cooldude234

  • Sr. Member
  • ****
  • Posts: 902
  • You know what I realized, I dont have an avatar :\
    • View Profile
Re: WEEHEEEE oh, oh wait its dead, I thought it was dancing (CRE8OR NOTICE)
« Reply #237 on: March 26, 2014, 03:53:19 am »

Ocuclus rift integration was going smoothly until facebook decided to buy out the oculus rift.
Now I'm unsure if I want to add it to the engine or not, I feel like facebook would then start stealing my identity or something, or change the licensing to something horrible :S
*BLEEP* facebook!
Logged
¼

cooldude234

  • Sr. Member
  • ****
  • Posts: 902
  • You know what I realized, I dont have an avatar :\
    • View Profile

NOTE: Boring stuff in Red.
NOTE: FUN stuff in Green.

I HAVE PUT THE ENGINE ON HOLD
well sort of...

I decided that instead of shipping the first release to the public in mid to late June I would use the engine in a game for a friendly Just-for-fun competition (similar to the ones on this forum but for you know... games and programing stuff)  and hold off the release for a couple months. I decided to do this because competitions usually are good way to get productivity going and results in a good learning of stuff (and apparently bad grammar too! XD).

More to benefit from this, using the engine for an actual game can not only show its flaws ahead of time, but also show it's strengths. Meaning I can make things a lot more functional and intuitive towards the goal of having a flexible engine that is both easy to use and learn and not limiting to any means.

This has also proven to be a good choice considering in the last week of constant programing for this competition I had finally gotten portaudio (the sound library I tried to use before) to work. MEANING THE ENGINE NOW HAS SOUND WOOT! Also meaning full surround sound support will be soon available.

Using portaudio brings many benefits, mainly the one that I (the programmer) has full control over the sound processing (portaudio only manages the sound devices, you deal with all the sound data your self). So if I wanted to make a function that adds an echo effect to the sound than I can (and I probably will); and once I figure out the best way to go about this I will probably add some way for the user to have full control over the sound besides a few VERY TECHNICAL stuff, which mostly has to do with buffers. Which is unfortunately the downside to portaudio, it leaves me to do EVERYTHING myself (but I don't care, it's just that making my own Ring buffer and constant read write functions with a sound manager is going to be a pain in my bum cheek).

So about the game competition, I will be posting anything new the engine, or anything engine related here as I progress through that and I will be posting anything about the game on the other forum (once I have it up over there which will probably be in a week or two). I will post a link to it when it's available.


NOTE: I got bored with the COLOURS!!!
Logged
¼

cooldude234

  • Sr. Member
  • ****
  • Posts: 902
  • You know what I realized, I dont have an avatar :\
    • View Profile

Alrighty again not very much exciting stuff to tell, but no matter (maybe ???)

I have been working on the sound and I now have the engine set up so it chooses the lowest latency possible on a system. This is important because I, (and probably) the user and player don't want to have a 2 second delay between when the sound is processed and when it is actually heard.

Also I was able to make a function (using libsndfile) to simply load pretty much any audio file like so...
SoundVar = LoadSound ("filename");
I will probably make a wrapper for this first thing when I get back to working on the scripting language. I am hoping in the end that I will have simple functions like PlaySound (SoundVar); more on that below.

Right now I am trying to implement a FIFO ring buffer for the audio stream so it can have data being read and updated in such a way that makes it consistent (more importantly no artifacts in the sound!), however this has brought up a whole new world of issues regrading memory data sharing over multiple threads :S amongst other problems like locking (I can't have one thread hold up another just because it's running temporarily slower).

And I figure to solve a portion of these problems I'll have to work on a sound manager for the main thread. Something that handles all the sound data until the audio thread can handle it. For instance if the sound you were playing was a music track that was minutes long you wouldn't be able to fit all of that data into the buffer (which can only hold about 100 milliseconds worth right now, and that is HUGE for an audio buffer as is). So what needs to be done is store the unplayed data on the main thread temporary on a copy sending small bits at a time when the buffer is "freed" up (but I don't want to constantly create and destroy variables).
Having one copy of each sound on RAM would be most preferred but I am having troubles coming up with a way to store 'copies' of it (maybe virtual copies or simple variables like copies = 5; and other stuff related like the position in each sound copy).
The latter is probably what will be best suited but still leaves many issues to be solved.

When I call PlaySound(file); I what I want is the sound manager to take play that until it finishes, meaning you only have to call the play function once. The sound manager will have to remember what is called to it, what is left to play of each sound, and to free up the memory when it's done.
Effect's (like a simple echo) will be calculated when the sound manager processes the audio into the buffer on the main thread.

okay I think I'm rambling on now, I need sleep anyways I worked 8 1/2 hours then programmed for 6 and I was awake for about 3-4 hours before all that and oh I'm rambling on again.
Logged
¼
Pages: 1 ... 14 15 [16] 17 18 ... 20