Announcement

Collapse
No announcement yet.

UWindow 2 Development Blog

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    #61
    Progress is documented more on beyondunreal forums. Although he has had to rewrite it from the ground up so there isn't a whole lot to see yet.. but the description of the back end system sounds promising, a nice front end is nothing without functionality.

    Comment


      #62
      Sorry about the enormous delay

      Yes, as Bersy has mentioned I frequent the BeyondUnreal forums more than I do here as I have belonged to that community for a longer period of time. I'll probably try to switch between the forums as much as I can. Here's some updates straight from the horse's mouth.

      I'm pushing for a progress release set for the 29th of May, or, in about three days time. A progress release is simply a snapshot of the work I have already done, it certainly won't be a complete user interface but it is an important milestone. Since uWindows2 has never graced any other machine than my own, I have no idea about performance over a range of machines and I'd simply like to get some feed back on my current code. The progress release will have the bot match window working at the very least. The bot match window will allow you to select the game type, map, number of bots, mutators and lets you start a match. The number of options for each is the bare minimum. I offer no support for custom game types, maps, advanced bot configuration or mutators (for this progress release!), thus simply all the stock content should work as expected. If custom content works, then that's a bonus. A progress release is just a 'progress' release, it's not alpha, it's not beta. So if you have a few minutes on the 29th, please help me test it out (just don't expect a fully working user interface!).

      I'll work out a test plan, and a document which let's you know what is working and what bugs are recognised.

      One of the aspects of UT3's user interface that I did actually like, was the idea of Data Providers. The only aspect which I am not terribly fond about with it, is that it's native. This makes it very difficult for people outside Epic who can't view the source code see how it actually works. The stub functions inside the script declaration don't help an awful much, and it is prone to crashing if you provide odd values. But the concept itself is neat. Thus I've also decided to create a similar system. Right now the map data provider class is created and working. It will automatically fill a UW_Component with a list of UW_Component_Label's that have appropriate actions bound to them. The actions select the label when clicked, and also change the map image. Note how I am selecting components now. I use a relative structure, and this will allow other components and other objects to select components to then modify their values. Data providers in my case are script driven, so it will be open for other people to add their own data providers in. Here's the current results of the current code base. While coding this version, I noticed that I have to refactor quite a few designs soon, which I will do during the week.

      Click here for the screenshot

      This is the configuration file that I currently use to drive the entire interface. Different themes are allowed to have their own configuration files + resource packages and themes are switchable without having to restart Unreal Tournament 3 (at this point it is). This will mean that when people develop their own themes or tweak existing ones to how they like it, they won't need to override uWindow2's original themes.

      Code:
      [canvas UW_StyleSheet]
      Ln=background-image:UWindowResource.MaterialInstance.Background
      Ln=background-coordinates:0.f,0.f,1.f,0.768f
      Ln=dimensions:0.f,0.f,1.f,1.f
      
      [maplist UW_StyleSheet]
      Ln=dimensions:0.f,0.f,1.f,1.f
      Ln=padding:2,2,-4,-4
      
      [mapimage UW_StyleSheet]
      Ln=dimensions:0.f,0.25f,1.f,0.5f
      Ln=padding:2,2,-4,-4
      
      [window UW_StyleSheet]
      Ln=background-image:UWindowResource.Texture.WindowFrame
      Ln=background-style:stretched
      Ln=dimensions:0.25f,0.25f,0.5f,0.5f
      Ln=padding:4,14,-8,-18
      
      [text UW_StyleSheet]
      Ln=dimensions:0.f,0.f,1.f,16
      
      [text UW_Component_Label]
      Text="Test text"
      TextPadding=3,3,3,3
      StyleSheetNames=text
      
      [window_botmatch UW_Component]
      StyleSheetNames=window
      AlignmentClassName="UWindow.UW_Alignment_Horizontal"
      BoundsDefinitions=(Dimensions="0.f,0.f,1.f,1.f",Actions=((ActionClassName="UWindow.UW_Action_BringToTop",Parameters="")))
      BoundsDefinitions=(Dimensions="0.f,0.f,1.f,10",Margin="4,4,-8,0",Actions=((ActionClassName="UWindow.UW_Action_Drag",Parameters="")))
      BoundsDefinitions=(Dimensions="0.f,0.f,4,1.f",Actions=((ActionClassName="UWindow.UW_Action_ResizeL",Parameters="")))
      BoundsDefinitions=(Dimensions="0.f,0.f,1.f,4",Actions=((ActionClassName="UWindow.UW_Action_ResizeT",Parameters="")))
      BoundsDefinitions=(Dimensions="1.f,0.f,4,1.f",Margin="-4,0,0,0",Actions=((ActionClassName="UWindow.UW_Action_ResizeR",Parameters="")))
      BoundsDefinitions=(Dimensions="0.f,1.f,1.f,4",Margin="0,-4,0,0",Actions=((ActionClassName="UWindow.UW_Action_ResizeB",Parameters="")))
      ChildComponents=mapimage
      ChildComponents=maplist
      
      [maplist UW_Component]
      StyleSheetNames=maplist
      AlignmentClassName="UWindow.UW_Alignment_Vertical"
      DataProviderClassName="UWindow.UW_DataProvider_MapList"
      DataProviderParameters="label-class:text"
      DataProviderParameters="game-type:DM"
      DataProviderParameters="image-component:../../mapimage"
      
      [mapimage UW_Component_Image]
      StyleSheetNames=mapimage

      Comment


        #63
        Awesomeness. Any way I can help?

        I'm a fairly inexperienced programmer, but I have a decent understanding of C/C++/C#, as well as basic OOP, polymorphism, data structures (stacks, linked lists, binary trees).

        I'm a fast learner, I just need a project to motivate me. Having seen the syntax, I don't think learning UScript will be much of a challenge.

        Comment


          #64
          Thank you for the offer, but with a lot programming only projects adding another programmer doesn't always speed up the whole process.

          Comment


            #65
            Originally posted by Solid Snake View Post
            Thank you for the offer, but with a lot programming only projects adding another programmer doesn't always speed up the whole process.
            I can see how that might be especially true in this case.

            ps. Also very experienced in Photoshop if you need any graphic work done for the front-end. But it looks like you probably have that covered too.

            Comment


              #66
              I too have used Photoshop for a number of years, as well as 3DSMax Thanks though, much appreciated.

              Comment


                #67
                Update, pushing on with getting the progress release done.

                The game type list now works, and theres also interaction between the two independent tabs. Changing a game type will also change the map list. Basic feature, but it's done without too much hard coding.

                Click here for the screenshot

                Looks a bit prettier as I did some new graphics for the tab components. Suppose all I have to do now is link up the 'Start' button, and then add another two tabs for 'mutators' and 'bots'.

                Code:
                [canvas UW_StyleSheet]
                Ln=background-image:UWindowResource.MaterialInstance.Background
                Ln=background-coordinates:0.f,0.f,1.f,0.768f
                Ln=dimensions:0.f,0.f,1.f,1.f
                
                [tabpanel UW_StyleSheet]
                Ln=dimensions:0.f,0.f,1.f,0.9.f
                
                [buttonbar UW_StyleSheet]
                Ln=dimensions:0.f,0.f,1.f,0.1.f
                Ln=background-image:UWindowResource.RaisedBacking
                Ln=background-style:stretched
                
                [button UW_StyleSheet]
                Ln=dimensions:1.f,1.f,45,16
                Ln=margin:-49,-20,0,0
                Ln=background-image:UWindowResource.Texture.Button_Active
                Ln=background-style:stretched
                
                [panel UW_StyleSheet]
                Ln=dimensions:0.f,0.f,1.f,1.f
                Ln=padding:2,2,-4,-4
                Ln=background-image:UWindowResource.Texture.TabFrame
                Ln=background-style:stretched
                
                [maplist UW_StyleSheet]
                Ln=dimensions:0.f,0.f,1.f,1.f
                Ln=padding:2,2,-4,-4
                
                [mapimage UW_StyleSheet]
                Ln=dimensions:0.f,0.25f,1.f,0.5f
                Ln=margin:2,2,-4,-4
                
                [window UW_StyleSheet]
                Ln=background-image:UWindowResource.Texture.WindowFrame
                Ln=background-style:stretched
                Ln=dimensions:0.25f,0.25f,0.5f,0.5f
                Ln=padding:4,14,-8,-18
                
                [tabtext UW_StyleSheet]
                Ln=dimensions:0.f,0.f,1.f,16
                Ln=background-image:UWindowResource.Texture.Tab
                Ln=background-style:stretched
                
                [text UW_StyleSheet]
                Ln=dimensions:0.f,0.f,1.f,16
                
                [text UW_Component_Label]
                Text="Test text"
                TextPadding=3,3,3,3
                StyleSheetNames=text
                
                [tabtext UW_Component_Label]
                TextPadding=3,3,3,3
                StyleSheetNames=tabtext
                
                [window_botmatch UW_Component]
                StyleSheetNames=window
                AlignmentClassName="UWindow.UW_Alignment_Vertical"
                BoundsDefinitions=(Dimensions="0.f,0.f,1.f,1.f",Actions=((ActionClassName="UWindow.UW_Action_BringToTop",Parameters="")))
                BoundsDefinitions=(Dimensions="0.f,0.f,1.f,10",Margin="4,4,-8,0",Actions=((ActionClassName="UWindow.UW_Action_Drag",Parameters="")))
                BoundsDefinitions=(Dimensions="0.f,0.f,4,1.f",Actions=((ActionClassName="UWindow.UW_Action_ResizeL",Parameters="")))
                BoundsDefinitions=(Dimensions="0.f,0.f,1.f,4",Actions=((ActionClassName="UWindow.UW_Action_ResizeT",Parameters="")))
                BoundsDefinitions=(Dimensions="1.f,0.f,4,1.f",Margin="-4,0,0,0",Actions=((ActionClassName="UWindow.UW_Action_ResizeR",Parameters="")))
                BoundsDefinitions=(Dimensions="0.f,1.f,1.f,4",Margin="0,-4,0,0",Actions=((ActionClassName="UWindow.UW_Action_ResizeB",Parameters="")))
                ChildComponents=tabpanel
                ChildComponents=buttonbar
                
                [startbutton UW_Component_Label]
                StyleSheetNames=button
                Text="Start"
                TextPadding=12,2,3,3
                TextColor=0,0,0,255
                
                [buttonbar UW_Component]
                StyleSheetNames=buttonbar
                ChildComponents=startbutton
                
                [tabpanel UW_Component_Tabs]
                StyleSheetNames=tabpanel
                TabHeight=16
                TabClassName="tabtext"
                TabNames="Gametype"
                TabNames="Map"
                ChildComponents=gametypepanel
                ChildComponents=mappanel
                
                [mappanel UW_Component]
                StyleSheetNames=panel
                AlignmentClassName="UWindow.UW_Alignment_Horizontal"
                ChildComponents=mapimage
                ChildComponents=maplist
                
                [maplist UW_Component]
                StyleSheetNames=maplist
                AlignmentClassName="UWindow.UW_Alignment_Vertical"
                DataProviderClassName="UWindow.UW_DataProvider_MapList"
                DataProviderParameters="label-class:text"
                DataProviderParameters="game-type:DM"
                DataProviderParameters="image-component:../mapimage"
                
                [mapimage UW_Component_Image]
                StyleSheetNames=mapimage
                AspectRatio=0.5f
                
                [gametypepanel UW_Component]
                StyleSheetNames=panel
                AlignmentClassName="UWindow.UW_Alignment_Horizontal"
                ChildComponents=gametypeimage
                ChildComponents=gametypelist
                
                [gametypelist UW_Component]
                StyleSheetNames=maplist
                AlignmentClassName="UWindow.UW_Alignment_Vertical"
                DataProviderClassName="UWindow.UW_DataProvider_GameTypeList"
                DataProviderParameters="label-class:text"
                DataProviderParameters="game-type:CTF"
                DataProviderParameters="image-component:../gametypeimage"
                DataProviderParameters="maplist-component:../../mappanel/maplist"
                
                [gametypeimage UW_Component_Image]
                StyleSheetNames=mapimage
                AspectRatio=0.5f
                
                [canvas UW_Component]
                StyleSheetNames=canvas

                Comment


                  #68
                  Progress update,

                  [screenshot]http://i19.photobucket.com/albums/b178/SolidSnakeNZ/uWindow10062008-1.jpg[/screenshot]

                  Comment


                    #69
                    Kinda funny how a guy must remember EPIC how to make a good UI for UT3 they have done themselves years ago.

                    Comment


                      #70
                      [screenshot]http://i19.photobucket.com/albums/b178/SolidSnakeNZ/uWindow12062008.jpg[/screenshot]
                      - Components are now able to also apply an alignment onto themselves horizontally and vertically (left, center, right or top, middle, bottom)
                      - Fixed mouse cursor reverting back to default cursor when hoving over other components that used the same cursor
                      - Adjusted the way the combo boxes worked
                      - Created a toggle component which can toggle between different numbers of styles. These were used to create the check boxes.

                      Comment


                        #71
                        [screenshot]http://i19.photobucket.com/albums/b178/SolidSnakeNZ/uWindow13062008.jpg[/screenshot]

                        - Added a scrollable panel. Still have not quite finished it, but label components are now able to be smoothly scrolled using this. This 'fixes' the problem where lists were often going out of the window frame when the window frame was too small to contain it. Images can also be partially rendered to achieve a smooth scrolling system. Actions are also handled appropriately
                        - Removed various redundant configuration options, and shifted them to the style sheet system (such as text padding, and text color)
                        - Changed the style sheet system to use strict typed parameters instead of loose strings. This is so that a lot more errors can be parsed by Unreal Engine instead of hiding the errors.
                        - Added another parameter to the coordinate system called 'Scroll'. This is used to achieve the smooth scrolling effect.

                        Comment


                          #72
                          I've been checking your threads for updates the last few months and from what i can tell your doing a great job. I really hope you pull this off and win the Intel-Make something unreal contest

                          Thumbs up and keep up the good work!

                          -tJev

                          Comment


                            #73
                            me too.. please consider us using this in www.tacticalops3.com

                            we really want to recreate that ut99 feel

                            Comment


                              #74
                              OMG!!!1!!eleven!!!2

                              But, will you be able to use it, even if servers you are playing on are not? Like will it work when you hit ESC on a server that does not have it serverside?

                              Comment


                                #75
                                Originally posted by martinblank View Post
                                OMG!!!1!!eleven!!!2

                                But, will you be able to use it, even if servers you are playing on are not? Like will it work when you hit ESC on a server that does not have it serverside?

                                I would imagine that Epic would help him with that, especially since this guy is doing their job for them.

                                Comment

                                Working...
                                X